void worker_DoWork(object sender, DoWorkEventArgs e) { if (String.IsNullOrWhiteSpace(InstanceId) || String.IsNullOrWhiteSpace(PrivateKey)) { e.Result = null; return; } //ec2 client var ec2 = AWSClientFactory.CreateAmazonEC2Client(AWSAccessKey, AWSSecretKey, new AmazonEC2Config().WithServiceURL(RegionHelper.EC2EndpointForRegion(EC2Region)) ); try { var getPwRequest = ec2.GetPasswordData( new Amazon.EC2.Model.GetPasswordDataRequest(). WithInstanceId(InstanceId) ); var result = getPwRequest.GetPasswordDataResult; if (string.IsNullOrWhiteSpace(result.PasswordData.Data)) { throw new Exception("No password data was returned."); } var decryptedPassword = result.GetDecryptedPassword(PrivateKey.Trim()); e.Result = decryptedPassword; } catch (Exception ex) { e.Result = ex; return; } }
void worker_DoWork(object sender, DoWorkEventArgs e) { //validate args if (String.IsNullOrEmpty(AWSAccessKey) || String.IsNullOrEmpty(AWSSecretKey)) { e.Result = null; return; } //ec2 client var ec2 = AWSClientFactory.CreateAmazonEC2Client(AWSAccessKey, AWSSecretKey, new AmazonEC2Config().WithServiceURL(RegionHelper.EC2EndpointForRegion(EC2Region)) ); //get instances IEnumerable <RunningInstance> instances; try { var response = ec2.DescribeInstances(new Amazon.EC2.Model.DescribeInstancesRequest()); //handle no data if (!response.IsSetDescribeInstancesResult()) { e.Result = null; return; } instances = response.DescribeInstancesResult.Reservation.SelectMany(res => res.RunningInstance); } catch (Exception ex) { //handle error retreiving data e.Result = null; //TODO: log exception return; } //parse data e.Result = instances.Select(instance => new Connection { Host = instance.PublicDnsName, Id = instance.InstanceId, Name = GetInstanceFriendlyName(instance), Protocol = String.Equals(instance.Platform, "windows", StringComparison.InvariantCultureIgnoreCase) ? ConnectionProtocol.RDP : ConnectionProtocol.SSH, HexIp = instance.InstanceState.Name != "running" ? "" : GetHexIPAddress(instance.PrivateIpAddress), KeyName = instance.KeyName, AvailabilityZone = instance.Placement.AvailabilityZone }).ToList(); }
void worker_DoWork(object sender, DoWorkEventArgs e) { //validate args if (String.IsNullOrEmpty(AWSAccessKey) || String.IsNullOrEmpty(AWSSecretKey)) { e.Result = null; return; } //ec2 client var ec2 = AWSClientFactory.CreateAmazonEC2Client(AWSAccessKey, AWSSecretKey, new AmazonEC2Config().WithServiceURL(RegionHelper.EC2EndpointForRegion(EC2Region)) ); var elbClient = AWSClientFactory.CreateAmazonElasticLoadBalancingClient(AWSAccessKey, AWSSecretKey, new AmazonElasticLoadBalancingConfig() { ServiceURL = RegionHelper.ELBEndpointForRegion(EC2Region).Replace("http:", "https:") }); DescribeLoadBalancersResponse loadBalancers = null; try { loadBalancers = elbClient.DescribeLoadBalancers(); } catch (WebException wex) { var response = wex.Response as HttpWebResponse; var responsveBody = new StreamReader(response.GetResponseStream()).ReadToEnd(); int a = 5; } e.Result = loadBalancers.DescribeLoadBalancersResult.LoadBalancerDescriptions. Select(lb => new AWSLoadBalancerServersRetreiverCompleteEventArgs.LoadBalancer { LoadBalancerName = lb.LoadBalancerName, InstanceNames = lb.Instances.Select(instance => instance.InstanceId).ToList() }). ToList(); }