public string ObtenerUrlPublicaTemporal(string urlAmazon) { string url = null; AmazonObjectUrl amazonUrl = new AmazonObjectUrl(urlAmazon); if (amazonUrl.IsValid) { try { Amazon.RegionEndpoint region = Amazon.RegionEndpoint.GetBySystemName(Constants.RegionDefecto); Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials(Constants.PerfilSoportesSDKStore); IAmazonS3 s3Client = new AmazonS3Client(credentials, region); GetPreSignedUrlRequest request = new GetPreSignedUrlRequest() { BucketName = amazonUrl.Bucket, Key = amazonUrl.Key, Expires = DateTime.Now.AddSeconds(Constants.SegundosVigenciaUrl) }; url = s3Client.GetPreSignedURL(request); } catch (Exception ex) { Activa.Trace.Trace.WriteLineLine_Error(ex); } } return(url); }
public static string PushMetrics(string ns, List <MetricDatum> metrics) { var request = new PutMetricDataRequest { Namespace = ns, MetricData = metrics }; // Amazon.Runtime.AWSCredentials credentials = null; if (Configuration.IsLinux()) { string AccessKey = "xxx"; string SecretKey = "xxx"; credentials = new Amazon.Runtime.BasicAWSCredentials(AccessKey, SecretKey); } else { credentials = new Amazon.Runtime.StoredProfileAWSCredentials("cloudwatch"); } // var client = new AmazonCloudWatchClient(credentials, Amazon.RegionEndpoint.APSoutheast1); System.Threading.Tasks.Task <PutMetricDataResponse> task = client.PutMetricDataAsync(request); PutMetricDataResponse response = task.Result; // System.Net.HttpStatusCode statusCode = response.HttpStatusCode; Console.WriteLine(DateTime.Now.ToString("HH:mm ") + statusCode.ToString()); return(statusCode.ToString()); }
public CoffeeService() { var credentials = new Amazon.Runtime.StoredProfileAWSCredentials("coffeesite"); AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials, RegionEndpoint.APSoutheast2); _context = new DynamoDBContext(client, new DynamoDBContextConfig { ConsistentRead = true, SkipVersionCheck = true }); }
public static string GetEC2InstancesOutput(RegionEndpoint rEndpoint) { StringBuilder sb = new StringBuilder(1024); using (StringWriter sr = new StringWriter(sb)) { IAmazonEC2 ec2 = new AmazonEC2Client(); DescribeInstancesRequest ec2Request = new DescribeInstancesRequest(); Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials("3rdPlayground"); ec2 = new AmazonEC2Client(credentials, rEndpoint); try { DescribeInstancesResponse ec2Response = ec2.DescribeInstances(ec2Request); int numInstances = 0; numInstances = ec2Response.Reservations.Count; sr.WriteLine(string.Format("You have {0} Amazon EC2 instance(s) running in the {1} region.", numInstances, rEndpoint.ToString())); DescribeInstancesResponse ec2IdResponse = ec2.DescribeInstances(ec2Request); Amazon.EC2.Model.Reservation[] instanceForGettingIds = ec2IdResponse.Reservations.ToArray(); string[] ec2IDs = ec2Request.InstanceIds.ToArray(); foreach (Reservation comp in instanceForGettingIds) { sr.WriteLine(); sr.WriteLine("--- " + comp.Instances[0].InstanceId); } } catch (AmazonEC2Exception ex) { if (ex.ErrorCode != null && ex.ErrorCode.Equals("AuthFailure")) { sr.WriteLine("The account you are using is not signed up for Amazon EC2."); sr.WriteLine("You can sign up for Amazon EC2 at http://aws.amazon.com/ec2"); } else { sr.WriteLine("Caught Exception: " + ex.Message); sr.WriteLine("Response Status Code: " + ex.StatusCode); sr.WriteLine("Error Code: " + ex.ErrorCode); sr.WriteLine("Error Type: " + ex.ErrorType); sr.WriteLine("Request ID: " + ex.RequestId); } } sr.WriteLine(); } return(sb.ToString()); }
public void ObtenerRutaAdjunto() { string regionAws = "us-west-2"; string usuarioAws = "CondaiUser"; string accessKey = "AKIAIB7EDHV2CPLYDT4A"; string secretKey = "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"; Amazon.Util.ProfileManager.RegisterProfile(usuarioAws, accessKey, secretKey); Amazon.RegionEndpoint region = Amazon.RegionEndpoint.GetBySystemName(regionAws); Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials(usuarioAws); Amazon.S3.IAmazonS3 s3Client = new Amazon.S3.AmazonS3Client(credentials, region); GetPreSignedUrlRequest request = new GetPreSignedUrlRequest() { BucketName = "abccondai", Key = "Arena.jpg", Expires = DateTime.Now.AddSeconds(60) }; var a = s3Client.GetPreSignedURL(request); }
public vEntityRespuestaCargaNube CargarArchivo(string ruta, string checkSum, string bucket, string key) { vEntityRespuestaCargaNube resultado = null; AmazonObjectUrl urlAmazon = new AmazonObjectUrl() { Bucket = bucket, Key = key }; try { Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials(Constants.PerfilSoportesSDKStore); using (IAmazonS3 s3Client = new AmazonS3Client(credentials, Amazon.RegionEndpoint.GetBySystemName(Constants.RegionDefecto))) { string tagCheckSum = "x-amz-meta-checksum"; var fileInfo = new Amazon.S3.IO.S3FileInfo(s3Client, urlAmazon.Bucket, urlAmazon.Key); if (fileInfo.Exists) { var respGet = s3Client.GetObjectMetadata(urlAmazon.Bucket, urlAmazon.Key); if (respGet.Metadata[tagCheckSum] == checkSum) { resultado = new vEntityRespuestaCargaNube() { Exito = true, Link = urlAmazon.ToString() }; } else { resultado = new vEntityRespuestaCargaNube() { Exito = false, Link = urlAmazon.ToString(), Mensaje = "Hay un archivo con la misma ruta en el servidor, pero tienen checksum diferente" }; } } if (resultado == null) { using (var reader = new System.IO.StreamReader(ruta)) { var request = new PutObjectRequest() { BucketName = urlAmazon.Bucket, Key = urlAmazon.Key, CannedACL = S3CannedACL.Private, InputStream = reader.BaseStream }; request.Metadata.Add(tagCheckSum, checkSum); var respIns = s3Client.PutObject(request); var fileInfo2 = new Amazon.S3.IO.S3FileInfo(s3Client, urlAmazon.Bucket, urlAmazon.Key); if (fileInfo2.Exists) { resultado = new vEntityRespuestaCargaNube() { Exito = true, Link = urlAmazon.ToString() }; } else { resultado = new vEntityRespuestaCargaNube() { Exito = false, Link = urlAmazon.ToString(), Mensaje = "Se ejecuto el proceso de cargue del archivo, pero no se pudo confirmar su existencia en la nube." }; } } } } } catch (Exception ex) { resultado = new vEntityRespuestaCargaNube() { Exito = false, Link = urlAmazon.ToString(), Mensaje = String.Format("Error al cargar archivo a Amazon. Excepción: {0}", ex.ToString()) }; } return(resultado); }
public LambdaFunctionTest() { Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials(profileName); s3Client = new AmazonS3Client(credentials, Amazon.RegionEndpoint.APSouth1); }
public Transaccion <bool> CargarArchivo(string bucketName, string keyName, Stream data) { Transaccion <bool> resultado = ManejoTransaccion <bool> .Instancia.InicializarTransaccion(DLL); string regionAws = Condai.Tools.Configuracion.RegionAws; string usuarioAws = Condai.Tools.Configuracion.UsuarioAws; string accessKey = Condai.Tools.Configuracion.AccessKey; string secretKey = Condai.Tools.Configuracion.SecretKey; Amazon.Util.ProfileManager.RegisterProfile(usuarioAws, accessKey, secretKey); Amazon.RegionEndpoint region = Amazon.RegionEndpoint.GetBySystemName(regionAws); Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials(usuarioAws); string checkSum = Condai.Tools.Seguridad.Cryptography.Instancia.LeerCheckSum(data); using (IAmazonS3 s3Client = new AmazonS3Client(credentials, region)) { string tagCheckSum = "x-amz-meta-checksum"; var fileInfo = new Amazon.S3.IO.S3FileInfo(s3Client, bucketName, keyName); if (fileInfo.Exists) { var respGet = s3Client.GetObjectMetadata(bucketName, keyName); if (respGet.Metadata[tagCheckSum] == checkSum) { resultado = ManejoTransaccion <bool> .Instancia.Resultado(Estado.Correcto, resultado, true, "Hay un archivo con la misma ruta en el servidor y tiene el checksum igual."); } else { resultado = ManejoTransaccion <bool> .Instancia.Resultado(Estado.Error, resultado, false, "Hay un archivo con la misma ruta en el servidor, pero tienen checksum diferente."); } } else { var request = new PutObjectRequest() { BucketName = bucketName, Key = keyName, CannedACL = S3CannedACL.Private, InputStream = data }; request.Metadata.Add(tagCheckSum, checkSum); s3Client.PutObject(request); var fileInfo2 = new Amazon.S3.IO.S3FileInfo(s3Client, bucketName, keyName); if (fileInfo2.Exists) { resultado = ManejoTransaccion <bool> .Instancia.Resultado(Estado.Correcto, resultado, true, "Cargado"); } else { resultado = ManejoTransaccion <bool> .Instancia.Resultado(Estado.Error, resultado, false, "Error cargando el archivo al Aws S3"); } } } return(resultado); }
public Dictionary<string, DataTable> ScanProfile(ScanRequest Request) { Dictionary<string, DataTable> ScanResults = new Dictionary<string, DataTable>(); DataTable UserDetailsTable = GetUsersDetailsTable(); DataTable EC2DetailsTable = GetEC2DetailsTable(); DataTable S3DetailsTable = GetS3DetailsTable(); string accountid = ""; Amazon.Runtime.AWSCredentials credential; var aprofile = Request.Profile; var regions2process = Request.Regions; var SubmitResults = Request.ResultQueue; try { credential = new Amazon.Runtime.StoredProfileAWSCredentials(aprofile); //Try to get the AccountID ID// #region UserDetails var iam = new AmazonIdentityManagementServiceClient(credential); var myUserList = iam.ListUsers().Users; try { accountid = myUserList[0].Arn.Split(':')[4];//Get the ARN and extract the AccountID ID accountid = "ID: " + accountid;// Prefix added because Excel exsucks. } catch { accountid = "?"; } try // Send command to AWS to generate a Credential Report { var createcredreport = iam.GenerateCredentialReport(); } catch (Exception) { throw; } bool needreport = true; Amazon.IdentityManagement.Model.GetCredentialReportResponse credreport = new GetCredentialReportResponse(); DateTime getreportstart = DateTime.Now; DateTime getreportfinish = DateTime.Now; while (needreport) { try { credreport = iam.GetCredentialReport(); needreport = false; getreportfinish = DateTime.Now; var dif = getreportstart - getreportfinish; //Just a check on how long it takes. //Extract data from CSV Stream into DataTable var streambert = credreport.Content; streambert.Position = 0; StreamReader sr = new StreamReader(streambert); string myStringRow = sr.ReadLine(); if (myStringRow != null) myStringRow = sr.ReadLine();//Dump the header line while (myStringRow != null) { var arow = myStringRow.Split(",".ToCharArray()[0]); var newrow = new object[UserDetailsTable.Columns.Count]; newrow[0] = accountid; newrow[1] = aprofile; newrow[2] = ""; //UserID not in report. pull it later. newrow[3] = arow[0]; newrow[4] = arow[1]; newrow[5] = arow[2]; newrow[6] = arow[3]; newrow[7] = arow[4]; newrow[8] = arow[5]; newrow[9] = arow[6]; newrow[10] = arow[7]; newrow[11] = arow[8]; newrow[12] = arow[9]; newrow[13] = arow[10]; newrow[14] = arow[11]; newrow[15] = arow[12]; newrow[16] = arow[13]; newrow[17] = arow[14]; newrow[18] = arow[15]; newrow[19] = arow[16]; newrow[20] = arow[17]; newrow[21] = arow[18]; newrow[22] = arow[19]; newrow[23] = arow[20]; newrow[24] = arow[21]; RawUsers.Rows.Add(newrow); UserDetailsTable.Rows.Add(newrow); myStringRow = sr.ReadLine(); } sr.Close(); sr.Dispose(); } catch (Exception ex) { string test = ""; //Deal with this later if necessary. } } foreach (var auser in myUserList)//Fill in the userID. Why? because it exists. { string auserid = auser.UserId; string arn = auser.Arn; string username = auser.UserName; string policylist = ""; string aklist = ""; string groups = ""; ListAccessKeysRequest LAKREQ = new ListAccessKeysRequest(); LAKREQ.UserName = username; ListAccessKeysResult LAKRES = iam.ListAccessKeys(LAKREQ); foreach (var blivet in LAKRES.AccessKeyMetadata) { if (aklist.Length > 1) aklist += "\n"; aklist += blivet.AccessKeyId + " : " + blivet.Status; } ListAttachedUserPoliciesRequest LAUPREQ = new ListAttachedUserPoliciesRequest(); LAUPREQ.UserName = username; ListAttachedUserPoliciesResult LAUPRES = iam.ListAttachedUserPolicies(LAUPREQ); foreach (var apol in LAUPRES.AttachedPolicies) { if (policylist.Length > 1) policylist += "\n"; policylist += apol.PolicyName; } //Need to get policy and group info outta user var groopsreq = new ListGroupsForUserRequest(); groopsreq.UserName = username; ListGroupsForUserResult LG = iam.ListGroupsForUser(groopsreq); foreach (var agroup in LG.Groups) { if (groups.Length > 1) groups += "\n"; groups += agroup.GroupName; } foreach (DataRow myrow in UserDetailsTable.Rows) { if (myrow["ARN"].Equals(arn)) { myrow["UserID"] = auserid; myrow["User-Policies"] = policylist; myrow["Access-Keys"] = aklist; myrow["Groups"] = groups; } } } #endregion #region S3Details try { AmazonS3Client S3Client = new AmazonS3Client(credential,Amazon.RegionEndpoint.USEast1); ListBucketsResponse response = S3Client.ListBuckets(); foreach (S3Bucket abucket in response.Buckets) { DataRow abucketrow = GetS3DetailsTable().NewRow(); var name = abucket.BucketName; GetBucketLocationRequest gbr = new GetBucketLocationRequest(); gbr.BucketName=name; GetBucketLocationResponse location = S3Client.GetBucketLocation(gbr); var region = location.Location.Value; if (region.Equals(""))region="us-east-1"; var pointy = RegionEndpoint.GetBySystemName(region); //Build a config that references the buckets region. AmazonS3Config S3C = new AmazonS3Config(); S3C.RegionEndpoint=pointy; AmazonS3Client BS3Client = new AmazonS3Client(credential, S3C); var createddate = abucket.CreationDate; string owner = ""; string grants = ""; string tags = ""; string lastaccess = ""; string defaultpage = ""; string website = ""; //Now start pulling der einen data. GetACLRequest GACR = new GetACLRequest(); GACR.BucketName = name; var ACL = BS3Client.GetACL(GACR); var grantlist = ACL.AccessControlList; owner = grantlist.Owner.DisplayName; foreach (var agrant in grantlist.Grants) { if (grants.Length > 1) grants += "\n"; var gName = agrant.Grantee.DisplayName; var gType = agrant.Grantee.Type.Value; var aMail = agrant.Grantee.EmailAddress; if (gType.Equals("Group")) { grants += gType + " - " + agrant.Grantee.URI + " - " + agrant.Permission + " - " + aMail ; } else { grants += gName + " - "+ agrant.Permission + " - " + aMail; } } GetObjectMetadataRequest request = new GetObjectMetadataRequest(); request.BucketName = name; GetObjectMetadataResponse MDresponse = BS3Client.GetObjectMetadata(request); lastaccess = MDresponse.LastModified.ToString(); //defaultpage = MDresponse.WebsiteRedirectLocation; GetBucketWebsiteRequest GBWReq = new GetBucketWebsiteRequest(); GBWReq.BucketName = name; GetBucketWebsiteResponse GBWRes = BS3Client.GetBucketWebsite(GBWReq); defaultpage = GBWRes.WebsiteConfiguration.IndexDocumentSuffix; if (defaultpage != null) { website = @"http://" + name + @".s3-website-" + region + @".amazonaws.com/" + defaultpage; } //Amazon.S3.Model.req abucketrow["AccountID"] = accountid; abucketrow["Profile"] = aprofile; abucketrow["Bucket"] = name; abucketrow["Region"] = region; abucketrow["CreationDate"] = createddate.ToString(); abucketrow["LastAccess"] = lastaccess; abucketrow["Owner"] = owner; abucketrow["Grants"] = grants; abucketrow["WebsiteHosting"] = website; abucketrow["Logging"] = "X"; abucketrow["Events"] = "X"; abucketrow["Versioning"] = "X"; abucketrow["LifeCycle"] = "X"; abucketrow["Replication"] = "X"; abucketrow["Tags"] = "X"; abucketrow["RequesterPays"] = "X"; S3DetailsTable.Rows.Add(abucketrow.ItemArray); } } catch(Exception ex) { System.Windows.Forms.MessageBox.Show("S3 Failed!\n"+ex); } #endregion #region GetEC2Region ////////////////////////////////////////////////////////// //Foreach aregion foreach (var aregion in regions2process) { //Skip GovCloud and Beijing. They require special handling and I dont need em. if (aregion == Amazon.RegionEndpoint.USGovCloudWest1) continue; if (aregion == Amazon.RegionEndpoint.CNNorth1) continue; var region = aregion; regioncounter++; //Try to get scheduled events on my Profile/aregion var ec2 = AWSClientFactory.CreateAmazonEC2Client(credential, region); var request = new DescribeInstanceStatusRequest(); request.IncludeAllInstances = true; Dispatcher.Invoke(doupdatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { System.Windows.Controls.ProgressBar.ValueProperty, regioncounter }); var instatresponse = ec2.DescribeInstanceStatus(request); var indatarequest = new DescribeInstancesRequest(); foreach (var instat in instatresponse.InstanceStatuses) { indatarequest.InstanceIds.Add(instat.InstanceId); } DescribeInstancesResult DescResult = ec2.DescribeInstances(indatarequest); int count = instatresponse.InstanceStatuses.Count(); foreach (var instat in instatresponse.InstanceStatuses) { //Collect the datases string instanceid = instat.InstanceId; string instancename = ""; ProcessingLabel.Content = "Scanning -> Profile:" + aprofile + " Region: " + region + " Instance: " + instanceid; Dispatcher.Invoke(doupdatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { System.Windows.Controls.ProgressBar.ValueProperty, regioncounter }); var status = instat.Status.Status; string AZ = instat.AvailabilityZone; var istate = instat.InstanceState.Name; string profile = aprofile; string myregion = region.ToString(); int eventnumber = instat.Events.Count(); string eventlist = ""; var urtburgle = DescResult.Reservations; string tags = ""; // Holds the list of tags to print out. var loadtags = (from t in DescResult.Reservations where t.Instances[0].InstanceId.Equals(instanceid) select t.Instances[0].Tags).AsEnumerable(); Dictionary<string, string> taglist = new Dictionary<string, string>(); foreach (var rekey in loadtags) { foreach (var kvp in rekey) { taglist.Add(kvp.Key, kvp.Value); } } foreach (var atag in taglist)//Set instancename, and add value to combobox. { if (atag.Key.Equals("Name")) { instancename = atag.Value; } if (!TagFilterCombo.Items.Contains(atag.Key)) { TagFilterCombo.Items.Add(atag.Key); } if (tags.Length > 1) { tags += "\n" + atag.Key + ":" + atag.Value; } else { tags += atag.Key + ":" + atag.Value; } } if (eventnumber > 0) { foreach (var anevent in instat.Events) { eventlist += anevent.Description + "\n"; } } var platform = (from t in urtburgle where t.Instances[0].InstanceId.Equals(instanceid) select t.Instances[0].Platform).FirstOrDefault(); if (String.IsNullOrEmpty(platform)) platform = "Linux"; var Priv_IP = (from t in urtburgle where t.Instances[0].InstanceId.Equals(instanceid) select t.Instances[0].PrivateIpAddress).FirstOrDefault(); if (String.IsNullOrEmpty(Priv_IP)) Priv_IP = "?"; var publicIP = (from t in urtburgle where t.Instances[0].InstanceId.Equals(instanceid) select t.Instances[0].PublicIpAddress).FirstOrDefault(); if (String.IsNullOrEmpty(publicIP)) publicIP = ""; var publicDNS = (from t in urtburgle where t.Instances[0].InstanceId.Equals(instanceid) select t.Instances[0].PublicDnsName).FirstOrDefault(); if (String.IsNullOrEmpty(publicDNS)) publicDNS = ""; //Virtualization type (HVM, Paravirtual) var ivirtType = (from t in urtburgle where t.Instances[0].InstanceId.Equals(instanceid) select t.Instances[0].VirtualizationType).FirstOrDefault(); if (String.IsNullOrEmpty(ivirtType)) ivirtType = "?"; // InstanceType (m3/Large etc) var instancetype = (from t in urtburgle where t.Instances[0].InstanceId.Equals(instanceid) select t.Instances[0].InstanceType).FirstOrDefault(); if (String.IsNullOrEmpty(instancetype)) instancetype = "?"; var SGs = (from t in urtburgle where t.Instances[0].InstanceId.Equals(instanceid) select t.Instances[0].SecurityGroups); string sglist = ""; if (SGs.Count() > 0) { foreach (var ansg in SGs.FirstOrDefault()) { if (sglist.Length > 2) { sglist += "\n"; } sglist += ansg.GroupName; } } else { sglist = "_NONE!_"; } //Add to table if (String.IsNullOrEmpty(sglist)) sglist = "NullOrEmpty"; if (String.IsNullOrEmpty(instancename)) instancename = ""; string rabbit = accountid + profile + myregion + instancename + instanceid + AZ + status + eventnumber + eventlist + tags + Priv_IP + publicIP + publicDNS + istate + ivirtType + instancetype + sglist; if(instancename.Contains("p1-job")) { string yup = "y"; } EC2DetailsTable.Rows.Add(accountid, profile, myregion, instancename, instanceid, AZ, platform, status, eventnumber, eventlist, tags, Priv_IP, publicIP, publicDNS, istate, ivirtType, instancetype, sglist); } } #endregion ScanResults.Add("EC2", EC2DetailsTable); ScanResults.Add("Users", UserDetailsTable); ScanResults.Add("S3", S3DetailsTable); return ScanResults; } catch (Exception ex) { //If we failed to connect with creds. string error = new string(ex.ToString().TakeWhile(c => c != '\n').ToArray()); System.Windows.MessageBox.Show(error, Request.Profile.ToString() + " credentials failed to work.\n"); //Try to flag the menu item so it no longer selectable, and maybe make she red. System.Windows.Controls.MenuItem Proot = (System.Windows.Controls.MenuItem)this.MainMenu.Items[1]; foreach (System.Windows.Controls.MenuItem amenuitem in Proot.Items) { if (amenuitem.Header.ToString() == aprofile.ToString()) { amenuitem.IsCheckable = false; amenuitem.IsChecked = false; amenuitem.Background = Brushes.Red; amenuitem.ToolTip = Request.Profile.ToString() + " credentials failed to work.\n"; } } ScanResults.Add("EC2", GetEC2DetailsTable()); ScanResults.Add("Users", GetUsersDetailsTable()); ScanResults.Add("S3", GetS3DetailsTable()); return ScanResults; } }