static void Main1(string[] args) { try { // 必要步骤: // 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。 // 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。 // 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人, // 以免泄露密钥对危及你的财产安全。 Credential cred = new Credential { SecretId = Environment.GetEnvironmentVariable("TENCENTCLOUD_SECRET_ID"), SecretKey = Environment.GetEnvironmentVariable("TENCENTCLOUD_SECRET_KEY") }; // 实例化一个client选项,可选的,没有特殊需求可以跳过 ClientProfile clientProfile = new ClientProfile(); // 指定签名算法(默认为HmacSHA256) clientProfile.SignMethod = ClientProfile.SIGN_SHA256; // 非必要步骤 // 实例化一个客户端配置对象,可以指定超时时间等配置 HttpProfile httpProfile = new HttpProfile(); // SDK默认使用POST方法。 // 如果你一定要使用GET方法,可以在这里设置。GET方法无法处理一些较大的请求。 httpProfile.ReqMethod = "GET"; // SDK有默认的超时时间,非必要请不要进行调整。 // 如有需要请在代码中查阅以获取最新的默认值。 httpProfile.Timeout = 10; // 请求连接超时时间,单位为秒(默认60秒) // SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务, // 则必须手动指定域名,例如云服务器的上海金融区域名: cvm.ap-shanghai-fsi.tencentcloudapi.com httpProfile.Endpoint = "cvm.tencentcloudapi.com"; // 代理服务器,当你的环境下有代理服务器时设定 httpProfile.WebProxy = Environment.GetEnvironmentVariable("HTTPS_PROXY"); clientProfile.HttpProfile = httpProfile; // 实例化要请求产品(以cvm为例)的client对象 // 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量,clientProfile是可选的 CvmClient client = new CvmClient(cred, "ap-guangzhou", clientProfile); // 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数 // 你可以直接查询SDK源码确定DescribeInstancesRequest有哪些属性可以设置, // 属性可能是基本类型,也可能引用了另一个数据结构。 // 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明。 DescribeInstancesRequest req = new DescribeInstancesRequest(); // 基本类型的设置。 // 此接口允许设置返回的实例数量。此处指定为只返回一个。 // SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。 // SDK提供对基本类型的指针引用封装函数 req.Limit = 1; // 数组类型的设置。 // 此接口允许指定实例 ID 进行过滤,但是由于和接下来要演示的 Filter 参数冲突,先注释掉。 // req.InstanceIds = new string[] { "ins-r8hr2upy" }; // 复杂对象的设置。 // 在这个接口中,Filters是数组,数组的元素是复杂对象Filter,Filter的成员Values是string数组。 // 填充请求参数,这里request对象的成员变量即对应接口的入参 // 你可以通过官网接口文档或跳转到request对象的定义处查看请求参数的定义 Filter zoneFilter = new Filter(); // 创建Filter对象, 以zone的维度来查询cvm实例 zoneFilter.Name = "zone"; zoneFilter.Values = new string[] { "ap-guangzhou-1", "ap-guangzhou-2" }; Filter nameFilter = new Filter(); nameFilter.Name = "instance-name"; nameFilter.Values = new string[] { "中文测试" }; req.Filters = new Filter[] { zoneFilter, nameFilter }; // Filters 是成员为Filter对象的列表 //// 这里还支持以标准json格式的string来赋值请求参数的方式。下面的代码跟上面的参数赋值是等效的 //string strParams = "{\"Filters\":[{\"Name\":\"zone\",\"Values\":[\"ap-guangzhou-1\",\"ap-guangzhou-2\"]}]}"; //req = DescribeInstancesRequest.FromJsonString<DescribeInstancesRequest>(strParams); // 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的 // 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应 DescribeInstancesResponse resp = client.DescribeInstancesSync(req); // 输出json格式的字符串回包 Console.WriteLine(AbstractModel.ToJsonString(resp)); // 也可以取出单个值。 // 你可以通过官网接口文档或跳转到response对象的定义处查看返回字段的定义 Console.WriteLine(resp.TotalCount); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.Read(); }
public DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest request) { return(Channel.DescribeInstances(request)); }
public bool delete_vpc_all(string region_txt) { try { var client = get_client(); write_log(region + " の VPC を確認しています。"); var query_req = new DescribeVpcsRequest(); query_req.Filters.Add(new Filter() { Name = "tag-value", Values = new List <string>() { Helper.build_name(setting_, "vpc") } }); var query_res = client.DescribeVpcs(query_req); if (query_res.Vpcs.Count == 0) { write_log(region + " の VPC が存在しませんでした。"); return(true); } vpc_id = query_res.Vpcs[0].VpcId; var query_instance_req = new DescribeInstancesRequest(); var query_instance_res = client.DescribeInstances(query_instance_req); bool flg = true; foreach (var row in query_instance_res.Reservations) { foreach (var row2 in row.Instances) { if (row2.State != null && row2.State.Code != 48 && row2.VpcId != null && row2.VpcId.Equals(vpc_id)) { flg = false; break; } } if (flg == false) { break; } } if (flg == false) { write_log(region + " にはインスタンスが存在する為、VPC を削除できません。"); return(false); } write_log(region + " のセキュリティグループを確認しています。"); var query_sg_req = new DescribeSecurityGroupsRequest(); query_sg_req.Filters.Add(new Filter() { Name = "tag-value", Values = new List <string>() { Helper.build_name(setting_, "sg") } }); var query_sg_res = client.DescribeSecurityGroups(query_sg_req); foreach (var row in query_sg_res.SecurityGroups) { write_log("セキュリティグループ " + row.GroupId + " を削除しています。"); var delete_sg_req = new DeleteSecurityGroupRequest(); delete_sg_req.GroupId = row.GroupId; client.DeleteSecurityGroup(delete_sg_req); } using (FileStream fs = new FileStream(region_txt, FileMode.Open, FileAccess.Read)) { IList <string> list = new List <string>(subnet_ids.Keys); foreach (string tag in list) { if (Helper.check_az(fs, region, tag, 0) == false) { continue; } write_log(region + tag + " のサブネットを確認しています。"); var query_sub_req = new DescribeSubnetsRequest(); query_sub_req.Filters.Add(new Filter() { Name = "tag-value", Values = new List <string>() { Helper.build_name(setting_, "subnet_" + tag) } }); var query_sub_res = client.DescribeSubnets(query_sub_req); foreach (var row in query_sub_res.Subnets) { write_log("サブネット " + row.SubnetId + " を削除しています。"); var delete_sub_req = new DeleteSubnetRequest(); delete_sub_req.SubnetId = row.SubnetId; client.DeleteSubnet(delete_sub_req); } } } write_log(region + " のインターネットゲートウェイを確認しています。"); var query_igw_req = new DescribeInternetGatewaysRequest(); query_igw_req.Filters.Add(new Filter() { Name = "tag-value", Values = new List <string>() { Helper.build_name(setting_, "igw") } }); var query_igw_res = client.DescribeInternetGateways(query_igw_req); foreach (var row in query_igw_res.InternetGateways) { var detach_igw_req = new DetachInternetGatewayRequest(); detach_igw_req.InternetGatewayId = row.InternetGatewayId; detach_igw_req.VpcId = vpc_id; client.DetachInternetGateway(detach_igw_req); var delete_igw_req = new DeleteInternetGatewayRequest(); delete_igw_req.InternetGatewayId = row.InternetGatewayId; client.DeleteInternetGateway(delete_igw_req); } write_log("VPC " + vpc_id + " を削除しています。"); var delete_vpc_req = new DeleteVpcRequest(); delete_vpc_req.VpcId = vpc_id; client.DeleteVpc(delete_vpc_req); } catch (Exception ex) { write_log("ERROR: " + ex.ToString()); return(false); } return(true); }
public async Task <IEnumerable <Ec2InstanceImage> > GetDeprecatedInstanceIds(Amazon.RegionEndpoint currentRegion) { Amazon.EC2.AmazonEC2Client ec2Client = new Amazon.EC2.AmazonEC2Client(AwsSdkVending.AccessKeyId, AwsSdkVending.SecretKey, currentRegion); string NextToken = null; List <Ec2InstanceImage> lstInstances = new List <Ec2InstanceImage>(); List <string> lstImageIds = new List <string>(); List <Image> lstAffectedImages = new List <Image>(); do { var describeRequest = new DescribeInstancesRequest(); describeRequest.Filters = new List <Filter>(); describeRequest.Filters.Add(new Filter("platform", new List <string> { "windows" })); describeRequest.Filters.Add(new Filter("instance-state-name", new List <string> { "pending", "running", "shutting-down", "stopping", "stopped" })); describeRequest.NextToken = NextToken; var describeInstancesResult = await ec2Client.DescribeInstancesAsync(describeRequest); NextToken = describeRequest.NextToken; foreach (var instance in describeInstancesResult.Reservations.SelectMany(r => r.Instances)) { if (!lstImageIds.Contains(instance.ImageId)) { lstImageIds.Add(instance.ImageId); } } } while (NextToken != null); if (lstImageIds.Count > 0) { var describeImagesRequest = new DescribeImagesRequest { ImageIds = lstImageIds }; describeImagesRequest.Filters = new List <Filter>(); describeImagesRequest.Filters.Add(new Filter { Name = "is-public", Values = new List <string> { "true" } }); var describeImagesResult = await ec2Client.DescribeImagesAsync(describeImagesRequest); foreach (var currentImage in describeImagesResult.Images) { if (string.IsNullOrEmpty(currentImage.Description)) { continue; } if (DeprecatedDescriptions.Any(d => Regex.IsMatch(currentImage.Description, d, RegexOptions.IgnoreCase))) { lstAffectedImages.Add(currentImage); Console.WriteLine($"{currentImage.ImageId} - {currentImage.Description} is facing deprecation"); } } Console.WriteLine($"{lstAffectedImages.Count} images are marked for deprecation in {currentRegion.DisplayName}"); } if (lstAffectedImages.Count > 0) { foreach (var image in lstAffectedImages) { do { var describeInstancesRequest = new DescribeInstancesRequest(); describeInstancesRequest.Filters = new List <Filter>(); describeInstancesRequest.Filters.Add(new Filter("image-id", new List <string> { image.ImageId })); describeInstancesRequest.Filters.Add(new Filter("instance-state-name", new List <string> { "pending", "running", "shutting-down", "stopping", "stopped" })); describeInstancesRequest.NextToken = NextToken; var describeInstancesResult = await ec2Client.DescribeInstancesAsync(describeInstancesRequest); NextToken = describeInstancesRequest.NextToken; foreach (var instance in describeInstancesResult.Reservations.SelectMany(r => r.Instances)) { lstInstances.Add(new Ec2InstanceImage { Region = currentRegion.DisplayName, ImageDescription = image.Description, ImageId = image.ImageId, ImageName = image.Name, InstanceId = instance.InstanceId }); Console.WriteLine($"Instance {instance.InstanceId} in {currentRegion.DisplayName} ({image.Name}) is marked for deprecation and needs to be snapshotted."); } } while (NextToken != null); } } return(lstInstances); }
//[Obsolete] public async Task <string> CreateEC2InstanceAsync(int serverType = 0) { string secGroupName = "myec2"; string instanceID = ""; if (serverType == (int)AWSConstants.server_types.EC2) { //Step 1:- check for the security Groups var isSGExists = await IsSecurityGroupsExistsAsync(secGroupName); //Step 2:- Create Security Groups if (!isSGExists) { SecurityGroup securityGroup = CreateSecurityGroupAsync(secGroupName).Result; string ipRange = "0.0.0.0/0"; List <string> ranges = new List <string> { ipRange }; //Step 3:- Attach the IP Permissions IpPermission ipPermission = new IpPermission() { IpProtocol = "All traffic", FromPort = 0, ToPort = 65535, IpRanges = ranges }; var ingressRequest = new AuthorizeSecurityGroupIngressRequest(); ingressRequest.GroupId = securityGroup.GroupId; ingressRequest.IpPermissions.Add(ipPermission); var ingressResponse = amazonEC2Client.AuthorizeSecurityGroupIngressAsync(ingressRequest); //Step 4:- Create Key Pairs (.pem file) string keyPairName = CreateKeyPair(); //Step 5:- Create Launch Request Object string amiID = "ami-0b6158cfa2ae7b493"; List <string> groups = new List <string>() { securityGroup.GroupId }; var launchRequest = new RunInstancesRequest() { ImageId = amiID, InstanceType = "t2.micro", MinCount = 1, MaxCount = 1, KeyName = keyPairName, SecurityGroupIds = groups }; var launchResponse = await amazonEC2Client.RunInstancesAsync(launchRequest); var instances = launchResponse.Reservation.Instances; var instanceIds = new List <string>(); foreach (Instance item in instances) { instanceIds.Add(item.InstanceId); Console.WriteLine(); Console.WriteLine("New instance: " + item.InstanceId); Console.WriteLine("Instance state: " + item.State.Name); } //Step 6:- Describe Instances to know the status of the instances var instanceRequest = new DescribeInstancesRequest { InstanceIds = new List <string> { instanceIds[0] } }; while (true) { var response = await amazonEC2Client.DescribeInstancesAsync(instanceRequest); if (response.Reservations[0].Instances[0].State.Name == InstanceStateName.Running) { instanceID = response.Reservations[0].Instances[0].PublicDnsName + "With the status of " + InstanceStateName.Running; break; } } } } return(instanceID); }
/// <summary> /// 查询kafka实例列表 /// </summary> /// <param name="request">请求参数信息</param> /// <returns>请求结果信息</returns> public async Task <DescribeInstancesResponse> DescribeInstances(DescribeInstancesRequest request) { return(await new DescribeInstancesExecutor().Client(this).Execute <DescribeInstancesResponse, DescribeInstancesResult, DescribeInstancesRequest>(request).ConfigureAwait(false)); }
public static void Main(string[] args) { string profile = string.Empty, filterx = string.Empty, key = string.Empty, sec = string.Empty; AmazonEC2Client client = null; List <chost> hosts = new List <chost>(); Console.BackgroundColor = ConsoleColor.Blue; Console.ForegroundColor = ConsoleColor.White; if (args.Length > 0) { profile = args[0]; if (args.Length > 1) { filterx = args[1]; } else { filterx = "*"; } } if (GetProfile(profile) != null) { key = GetProfile(profile)[0]; sec = GetProfile(profile)[1]; } else { Console.WriteLine("Invalid, or no existent AWS Profile -->" + profile); Environment.Exit(1); } try { client = new AmazonEC2Client(key, sec); } catch (Exception ex) { Console.WriteLine("Invalid Key/Secret " + ex.Message); Environment.Exit(1); } var request = new DescribeInstancesRequest() { Filter = new List <Filter>() { new Filter() { Name = "tag-value", Value = new List <String> { "*" } } } }; var response = client.DescribeInstances(request); int c = 0; string id = string.Empty, name = string.Empty, type = string.Empty, state = string.Empty, privip = string.Empty, keyname = string.Empty; List <string[]> resultsX = new List <string[]>(); resultsX.Add(new string[] { "Count", "ID", "Private IP", "State", "Type", "Name", "Key" }); foreach (var ec2instace in response.DescribeInstancesResult.Reservation) { try { if (filterx != "*") { if (ec2instace.RunningInstance[0].Tag.Find((obj) => obj.Key.Contains("Name")).Value.Contains(filterx)) { c++; id = ec2instace.RunningInstance[0].InstanceId; name = ec2instace.RunningInstance[0].Tag.Find((obj) => obj.Key.Contains("Name")).Value; type = ec2instace.RunningInstance[0].InstanceType; state = ec2instace.RunningInstance[0].InstanceState.Name; privip = ec2instace.RunningInstance[0].PrivateIpAddress; keyname = ec2instace.RunningInstance[0].KeyName; resultsX.Add(new string[] { c.ToString(), id, privip, state, type, name, keyname }); } } else { c++; id = ec2instace.RunningInstance[0].InstanceId; name = ec2instace.RunningInstance[0].Tag.Find((obj) => obj.Key.Contains("Name")).Value; type = ec2instace.RunningInstance[0].InstanceType; state = ec2instace.RunningInstance[0].InstanceState.Name; privip = ec2instace.RunningInstance[0].PrivateIpAddress; keyname = ec2instace.RunningInstance[0].KeyName; resultsX.Add(new string[] { c.ToString(), id, privip, state, type, name, keyname }); } } catch { Console.WriteLine("filter not valid"); } } #region Main Body Console.WriteLine(ArrayPrinter.GetDataInTableFormat(resultsX)); ArrayList hosts_list = AddHosts(resultsX); ArrayList final = new ArrayList(); string selection; Console.WriteLine("Enter Instance/s Number To Access it :"); Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.Write("#-> "); selection = Console.ReadLine(); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; final.AddRange(selection.Split(',')); string iph, pemh, nameh; for (int i = 0; i < final.Count; i++) { iph = GETHOST(final[i].ToString(), hosts_list).ip; pemh = GETHOST(final[i].ToString(), hosts_list).pem; nameh = GETHOST(final[i].ToString(), hosts_list).hostname; if (i == 0) { hsplit(); ssh(pemh, iph, nameh); if (final.Count > 1) { vsplit(); } //DONE } if (i == 1) { ssh(pemh, iph, nameh); if (final.Count > 2) { MoveR(); CloseSession(); } //DONE } if (i == 2) { hsplit(); ssh(pemh, iph, nameh); if (final.Count > 3) { MoveR(); } //DONE } if (i == 3) { hsplit(); ssh(pemh, iph, nameh); if (final.Count > 4) { hsplit(); } //DONE } if (i == 4) { MoveR(); ssh(pemh, iph, nameh); //DONE if (final.Count > 5) { MoveR(); hsplit(); } //DONE } if (i == 5) { ssh(pemh, iph, nameh); } } #endregion }
internal static async Task <List <Ec2Instance> > ListEc2InstancesAsync(IConfiguration Configuration, string User) { var ecInstancesToManage = new List <Ec2Instance>(); var accounts = LoadAwsAccounts(Configuration); foreach (var accountKey in accounts) { try { var accountRegion = RegionEndpoint.GetBySystemName(accountKey.Region); var stsClient = new AmazonSecurityTokenServiceClient(); var sessionName = string.Format(ResourceStrings.ListAction, User, accountKey.AccountName, DateTime.Now.Ticks.ToString()); sessionName = sessionName.Length > 63 ? sessionName.Substring(0, 63) : sessionName; var assumeRoleRequest = new AssumeRoleRequest { RoleArn = accountKey.RoleArn, RoleSessionName = sessionName, DurationSeconds = 900 }; var stsResponse = await stsClient.AssumeRoleAsync(assumeRoleRequest); var describeRequest = new DescribeInstancesRequest(); var ec2Client = new AmazonEC2Client(stsResponse.Credentials, accountRegion); var describeResponse = await ec2Client.DescribeInstancesAsync(describeRequest); ec2Client.Dispose(); stsClient.Dispose(); foreach (var reservation in describeResponse.Reservations) { foreach (var instance in reservation.Instances) { if (instance.Tags.Where(t => t.Key == accountKey.TagToSearch).FirstOrDefault() != null) { if (Regex.Match(instance.Tags.SingleOrDefault(t => t.Key == accountKey.TagToSearch)?.Value, accountKey.SearchString).Success) { var name = instance.Tags.SingleOrDefault(t => t.Key == accountKey.NameTag)?.Value; var state = string.Empty; if (instance.State.Name == InstanceStateName.Running) { stsClient = new AmazonSecurityTokenServiceClient(); stsResponse = await stsClient.AssumeRoleAsync(assumeRoleRequest); ec2Client = new AmazonEC2Client(stsResponse.Credentials, accountRegion); var statusResponse = await ec2Client.DescribeInstanceStatusAsync(new DescribeInstanceStatusRequest { InstanceIds = { instance.InstanceId } }); ec2Client.Dispose(); stsClient.Dispose(); if (string.Equals(statusResponse.InstanceStatuses[0].Status.Status.Value, "impaired", StringComparison.InvariantCultureIgnoreCase) || string.Equals(statusResponse.InstanceStatuses[0].SystemStatus.Status.Value, "impaired", StringComparison.InvariantCultureIgnoreCase)) { state = "impaired"; } else if (string.Equals(statusResponse.InstanceStatuses[0].Status.Status.Value, "initializing", StringComparison.InvariantCultureIgnoreCase) || string.Equals(statusResponse.InstanceStatuses[0].SystemStatus.Status.Value, "initializing", StringComparison.InvariantCultureIgnoreCase)) { state = "initializing"; } else { state = instance.State.Name.Value; } } else { state = instance.State.Name.Value; } var ec2InstanceToManage = new Ec2Instance(name, instance.PrivateIpAddress, instance.InstanceId, state, accountKey.AccountName); ecInstancesToManage.Add(ec2InstanceToManage); } } } } } catch (Exception ex) { throw new Exception(string.Format(ErrorStrings.ErrorLoadingAccount, accountKey.AccountName, ex.Message), ex); } } return(ecInstancesToManage.OrderBy(x => x.Name).ToList()); }
public void launch() { //instance started. if (string.IsNullOrEmpty(_instanceId) == false) { return; } try { RunInstancesRequest request = new RunInstancesRequest(); request.ImageId = _amiId; request.MinCount = 1; request.MaxCount = 1; if (_defaultSecurityGroup == false) { request.SecurityGroup.Add(_securityGroups); } else { if (securitryGroupExistOnServer() == false) { createSecurityGroup(); } request.SecurityGroup.Add(_securityGroups); } string keyPath = CAwsConfig.Instance.getKeyFilePath(_keyPairName); if (string.IsNullOrEmpty(keyPath) == true || File.Exists(keyPath) == false) { if (keyExistOnServer() == false) { createKayPair(); } } request.KeyName = _keyPairName; RunInstancesResponse response = _service.RunInstances(request); if (response.IsSetRunInstancesResult()) { RunInstancesResult runInstancesResult = response.RunInstancesResult; if (runInstancesResult.IsSetReservation()) { if (runInstancesResult.Reservation.RunningInstance[0].IsSetInstanceId()) { _instanceId = runInstancesResult.Reservation.RunningInstance[0].InstanceId; } if (runInstancesResult.Reservation.RunningInstance[0].IsSetPublicDnsName()) { _publicDns = runInstancesResult.Reservation.RunningInstance[0].PublicDnsName; } } } if (string.IsNullOrEmpty(_instanceId) == true) { throw new Exception("No instance id is returned."); } //return after the instance started up bool pending = true; while (pending == true) { System.Threading.Thread.Sleep(5 * 1000); DescribeInstancesRequest describeRequest = new DescribeInstancesRequest(); describeRequest.InstanceId.Add(_instanceId); DescribeInstancesResponse describeResponse = _service.DescribeInstances(describeRequest); DescribeInstancesResult describeResult = describeResponse.DescribeInstancesResult; if (describeResult.Reservation.Count != 1) { throw new Exception("more than one instance with the same id"); } if (describeResult.Reservation[0].RunningInstance.Count != 1) { throw new Exception("more than one running instance has the same id"); } pending = describeResult.Reservation[0].RunningInstance[0].InstanceState.Name != "running"; } } catch (AmazonEC2Exception ex) { throw new Exception("Caught Exception: " + ex.XML); } }
public async void createEc2(String generatedUID, StringWriter sr, StringBuilder sb) { var bucketName = "magicec2" + RESOURCDE_POSTFIX; region = RegionEndpoint.USWest2; using (sr = new StringWriter(sb)) { sr.WriteLine("==========================================="); sr.WriteLine("Welcome to the MAGIC CREATE EC2!"); sr.WriteLine("==========================================="); string encodedString = ""; string userdata = Constants.ud_file_text_content.Replace("<bucket_name>", bucketName).Replace("<bucket_guid>", generatedUID) ; sr.WriteLine("\n" + userdata); string formattedString = userdata; sr.WriteLine("\n" + formattedString); encodedString = EncodeToBase64(formattedString); sr.WriteLine("\n" + encodedString); var ec2Client = new AmazonEC2Client(accessKeyId, secretAccessKey, region); try { // Get latest 2012 Base AMI // var imageId = ImageUtilities.FindImageAsync(ec2Client, ImageUtilities.U).Result.ImageId; var imageId = "ami-6e1a0117"; // Create an IAM role with a profile that the Instance will use to run commands against AWS var instanceProfileArn = CreateInstanceProfile(); sr.WriteLine("Created Instance Profile: {0}", instanceProfileArn); // Sleep for a little to make sure the profile is fully propagated. await Task.Delay(TimeSpan.FromMilliseconds(15000)); // Create key pair which will be used to demonstrate how get the Windows Administrator password. // var keyPair = ec2Client.CreateKeyPairAsync(new CreateKeyPairRequest { KeyName = bucketName }).Result.KeyPair; // sr.WriteLine("KeyPair Name: {0}", keyPair.KeyName); var runRequest = new RunInstancesRequest { ImageId = imageId, MinCount = 1, MaxCount = 1, KeyName = "magicec2636459158754457398", IamInstanceProfile = new IamInstanceProfileSpecification { Arn = instanceProfileArn }, InstanceType = InstanceType.T2Micro, // Add the region for the S3 bucket and the name of the bucket to create UserData = encodedString }; var instanceId = ec2Client.RunInstancesAsync(runRequest).Result.Reservation.Instances[0].InstanceId; sr.WriteLine("Launch Instance {0}", instanceId); // Create the name tag await ec2Client.CreateTagsAsync(new CreateTagsRequest { Resources = new List <string> { instanceId }, Tags = new List <Amazon.EC2.Model.Tag> { new Amazon.EC2.Model.Tag { Key = "Name", Value = "Processor" } } }); sr.WriteLine("Adding Name Tag to instance"); sr.WriteLine("Waiting for EC2 Instance to stop"); // The script put in the user data will shutdown the instance when it is complete. Wait // till the instance has stopped which signals the script is done so the instance can be terminated. Instance instance = null; var instanceDescribeRequest = new DescribeInstancesRequest { InstanceIds = new List <string> { instanceId } }; do { await Task.Delay(TimeSpan.FromMilliseconds(10000)); instance = ec2Client.DescribeInstancesAsync(instanceDescribeRequest).Result.Reservations[0].Instances[0]; if (instance.State.Name == "stopped") { // Demonstrate how to get the Administrator password using the keypair. var passwordResponse = ec2Client.GetPasswordDataAsync(new GetPasswordDataRequest { InstanceId = instanceId }); // Make sure we actually got a password if (passwordResponse.Result.PasswordData != null) { // var password = passwordResponse.Result.GetDecryptedPassword(keyPair.KeyMaterial); // sr.WriteLine("The Windows Administrator password is: {0}", password); } } } while (instance.State.Name == "pending" || instance.State.Name == "running"); /* * // Terminate instance * await ec2Client.TerminateInstancesAsync(new TerminateInstancesRequest * { * InstanceIds = new List<string>() { instanceId } * }); */ // Delete key pair created. // await ec2Client.DeleteKeyPairAsync(new DeleteKeyPairRequest { KeyName = keyPair.KeyName }); // var s3Client = new AmazonS3Client(); var listResponse = s3Client.ListObjectsAsync(new ListObjectsRequest { BucketName = BUCKET_NAME }); //AmazonS3Exception: The specified bucket does not exist Debug.WriteLine(listResponse.Result.ToString()); if (listResponse.Result.S3Objects.Count > 0) { sr.WriteLine("Found results file {0} in S3 bucket {1}", listResponse.Result.S3Objects[0].Key, bucketName); } // Delete bucket created for sample. // await AmazonS3Util.DeleteS3BucketWithObjectsAsync(s3Client, BUCKET_NAME); // sr.WriteLine("Deleted S3 bucket created for sample."); // DeleteInstanceProfile(); // sr.WriteLine("Delete Instance Profile created for sample."); // sr.WriteLine("Instance terminated, EXIT"); } 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); } } } // return sb.ToString(); }
/// <summary> /// Describe Instances /// </summary> /// <param name="request">Describe Instances request</param> /// <returns>Describe Instances Response from the service</returns> /// <remarks> /// The DescribeInstances operation returns information about instances that you /// own. /// If you specify one or more instance IDs, Amazon EC2 returns information for /// those instances. If you do not specify instance IDs, Amazon EC2 returns /// information for all relevant instances. If you specify an invalid instance ID, /// a fault is returned. If you specify an instance that you do not own, it will /// not be included in the returned results. /// Recently terminated instances might appear in the returned results. This /// interval is usually less than one hour. /// /// </remarks> public DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest request) { return(Invoke <DescribeInstancesResponse>("DescribeInstancesResponse.xml")); }
public List <string> GetServers() { if (ConfigurationManager.AppSettings["AWS_ENV_NAME"] == null) { throw new ArgumentException("Missing AWS_ENV_NAME app setting"); } if (ConfigurationManager.AppSettings["AWS_REGION"] == null) { throw new ArgumentException("Missing AWS_REGION app setting"); } var environmentName = ConfigurationManager.AppSettings["AWS_ENV_NAME"]; RegionEndpoint regionEndpoint = null; switch (ConfigurationManager.AppSettings["AWS_REGION"].Trim().ToLower()) { case "us-east-1": regionEndpoint = RegionEndpoint.USEast1; break; case "us-west-1": regionEndpoint = RegionEndpoint.USWest1; break; case "us-west-2": regionEndpoint = RegionEndpoint.USWest2; break; case "eu-west-1": regionEndpoint = RegionEndpoint.EUWest1; break; case "ap-northeast-1": regionEndpoint = RegionEndpoint.APNortheast1; break; case "ap-southeast-1": regionEndpoint = RegionEndpoint.APSoutheast1; break; case "ap-southeast-2": regionEndpoint = RegionEndpoint.APSoutheast2; break; case "sa-east-1": regionEndpoint = RegionEndpoint.SAEast1; break; case "us-gov-west-1": regionEndpoint = RegionEndpoint.USGovCloudWest1; break; case "cn-north-1": regionEndpoint = RegionEndpoint.CNNorth1; break; } if (regionEndpoint == null) { throw new ArgumentException("Incorrect AWS_REGION endpoint"); } // Create client var elasticBeanstalkClient = new AmazonElasticBeanstalkClient(regionEndpoint); // Get environment resources for environment var environmentResourcesRequest = new DescribeEnvironmentResourcesRequest { EnvironmentName = environmentName }; var resourceResponse = elasticBeanstalkClient.DescribeEnvironmentResources(environmentResourcesRequest); // Create ELB client var elasticLoadBalancingClient = new AmazonElasticLoadBalancingClient(regionEndpoint); // Get load balancers for all environment's load balancers var loadBalancersRequest = new DescribeLoadBalancersRequest(); foreach (var loadBalancer in resourceResponse.EnvironmentResources.LoadBalancers) { loadBalancersRequest.LoadBalancerNames.Add(loadBalancer.Name); } var describeLoadBalancersResponse = elasticLoadBalancingClient.DescribeLoadBalancers(loadBalancersRequest); // Create EC2 client var ec2Client = new AmazonEC2Client(regionEndpoint); // Get instances for all instance ids in all load balancers var instancesRequest = new DescribeInstancesRequest(); // Get all instance ids for all load balancers foreach (var instance in describeLoadBalancersResponse.LoadBalancerDescriptions.SelectMany(loadBalancer => loadBalancer.Instances)) { instancesRequest.InstanceIds.Add(instance.InstanceId); } var instancesResponse = ec2Client.DescribeInstances(instancesRequest); // Find all private dns names return((from reservation in instancesResponse.Reservations from instance in reservation.Instances select instance.PublicDnsName).ToList()); }
static string GetServiceOutput() { var awsOptions = Configuration.GetAWSOptions(); var awsRegion = awsOptions.Region.SystemName; StringBuilder sb = new StringBuilder(1024); using (StringWriter sr = new StringWriter(sb)) { sr.WriteLine("==========================================="); sr.WriteLine("AWS SDK with DotNet Core 2.x -- Al Dass ([email protected])"); sr.WriteLine("==========================================="); // Print the number of Amazon EC2 instances. IAmazonEC2 ec2 = awsOptions.CreateServiceClient <IAmazonEC2>(); DescribeInstancesRequest ec2Request = new DescribeInstancesRequest(); try { DescribeInstancesResponse ec2Response = ec2.DescribeInstancesAsync(ec2Request).Result; int numInstances = 0; numInstances = ec2Response.Reservations.Count; sr.WriteLine($"You have {numInstances} Amazon EC2 instance(s) in the [{awsRegion}] region."); foreach (var r in ec2Response.Reservations) { foreach (var i in r.Instances) { sr.WriteLine("==========================================="); sr.WriteLine($" InstanceId: {i.InstanceId}"); sr.WriteLine($" VpcId: {i.VpcId}"); sr.WriteLine($" Current State: {i.State?.Name?.Value}"); sr.WriteLine($" Public DNS / [IP]: {i.PrivateDnsName} / [{i.PrivateIpAddress}]"); sr.WriteLine($"Private DNS / [IP]: {i.PublicDnsName} / [{i.PublicIpAddress}]"); sr.WriteLine($" Tags:"); foreach (var t in i.Tags) { sr.WriteLine($" {t.Key} : {t.Value}"); sr.WriteLine($" ==========================================="); } //if (i.State?.Name == InstanceStateName.Stopped) //{ // ec2.StartInstancesAsync(new StartInstancesRequest(new List<string> { i.InstanceId })); // var currState = string.Empty; // SpinWait.SpinUntil(() => { // Thread.Sleep(5 * 1000); // var dscInstRslt = ec2.DescribeInstancesAsync().Result; // var instCk = dscInstRslt.Reservations.FirstOrDefault(o => o.Instances.Any(o2 => o2.InstanceId == i.InstanceId))?.Instances.FirstOrDefault(o => o.InstanceId == i.InstanceId); // currState = instCk?.State?.Name; // //sr.WriteLine($"...start {i.InstanceId} - {currState}"); // return currState != InstanceStateName.Stopped; // }, 60 * 1000); //} if (i.State?.Name == InstanceStateName.Running) { ec2.StopInstancesAsync(new StopInstancesRequest(new List <string> { i.InstanceId })); var currState = string.Empty; SpinWait.SpinUntil(() => { Thread.Sleep(5 * 1000); var dscInstRslt = ec2.DescribeInstancesAsync().Result; var instCk = dscInstRslt.Reservations.FirstOrDefault(o => o.Instances.Any(o2 => o2.InstanceId == i.InstanceId))?.Instances.FirstOrDefault(o => o.InstanceId == i.InstanceId); currState = instCk?.State?.Name; //sr.WriteLine($"...stop {i.InstanceId} - {currState}"); return(currState != InstanceStateName.Running); }, 60 * 1000); } } } } 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(); // Print the number of Amazon SimpleDB domains. IAmazonSimpleDB sdb = awsOptions.CreateServiceClient <IAmazonSimpleDB>(); ListDomainsRequest sdbRequest = new ListDomainsRequest(); try { ListDomainsResponse sdbResponse = sdb?.ListDomainsAsync(sdbRequest).Result; sr.WriteLine($"You have {sdbResponse?.DomainNames?.Count} Amazon SimpleDB domain(s) in the [{awsRegion}] region."); } catch (AmazonSimpleDBException ex) { if (ex.ErrorCode != null && ex.ErrorCode.Equals("AuthFailure")) { sr.WriteLine("The account you are using is not signed up for Amazon SimpleDB."); sr.WriteLine("You can sign up for Amazon SimpleDB at http://aws.amazon.com/simpledb"); } 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(); // Print the number of Amazon S3 Buckets. IAmazonS3 s3Client = awsOptions.CreateServiceClient <IAmazonS3>(); try { ListBucketsResponse response = s3Client.ListBucketsAsync().Result; int numBuckets = 0; if (response.Buckets != null && response.Buckets.Count > 0) { numBuckets = response.Buckets.Count; } sr.WriteLine($"You have {numBuckets} Amazon S3 bucket(s)."); } catch (AmazonS3Exception ex) { if (ex.ErrorCode != null && (ex.ErrorCode.Equals("InvalidAccessKeyId") || ex.ErrorCode.Equals("InvalidSecurity"))) { sr.WriteLine("Please check the provided AWS Credentials."); sr.WriteLine("If you haven't signed up for Amazon S3, please visit http://aws.amazon.com/s3"); } else { sr.WriteLine($"Caught Exception: {ex.Message}"); sr.WriteLine($"Response Status Code: {ex.StatusCode}"); sr.WriteLine($"Error Code: {ex.ErrorCode}"); sr.WriteLine($"Request ID: {ex.RequestId}"); } } sr.WriteLine("Press any key to continue..."); } return(sb.ToString()); }
public static string GetServiceOutput() { StringBuilder sb = new StringBuilder(1024); using (StringWriter sr = new StringWriter(sb)) { NameValueCollection appConfig = ConfigurationManager.AppSettings; sr.WriteLine("==========================================="); sr.WriteLine("<br />"); sr.WriteLine("Welcome to the AWS .NET SDK!"); sr.WriteLine("<br />"); sr.WriteLine("==========================================="); sr.WriteLine("<br />"); // Print the number of Amazon EC2 instances. AmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client( appConfig["AWSAccessKey"], appConfig["AWSSecretKey"] ); DescribeInstancesRequest ec2Request = new DescribeInstancesRequest(); try { DescribeInstancesResponse ec2Response = ec2.DescribeInstances(ec2Request); int numInstances = 0; numInstances = ec2Response.DescribeInstancesResult.Reservation.Count; sr.WriteLine("You have " + numInstances + " Amazon EC2 instance(s) running in the US-East (Northern Virginia) region."); sr.WriteLine("<br />"); } 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("<br />"); sr.WriteLine("You can sign up for Amazon EC2 at http://aws.amazon.com/ec2"); } else { sr.WriteLine("Caught Exception: " + ex.Message); sr.WriteLine("<br />"); sr.WriteLine("Response Status Code: " + ex.StatusCode); sr.WriteLine("<br />"); sr.WriteLine("Error Code: " + ex.ErrorCode); sr.WriteLine("<br />"); sr.WriteLine("Error Type: " + ex.ErrorType); sr.WriteLine("<br />"); sr.WriteLine("Request ID: " + ex.RequestId); sr.WriteLine("<br />"); sr.WriteLine("XML: " + ex.XML); } } sr.WriteLine("<br />"); // Print the number of Amazon SimpleDB domains. AmazonSimpleDB sdb = AWSClientFactory.CreateAmazonSimpleDBClient( appConfig["AWSAccessKey"], appConfig["AWSSecretKey"] ); ListDomainsRequest sdbRequest = new ListDomainsRequest(); try { //ListDomainsResponse sdbResponse = sdb.ListDomains(sdbRequest); //if (sdbResponse.IsSetListDomainsResult()) //{ // int numDomains = 0; // numDomains = sdbResponse.ListDomainsResult.DomainName.Count; // sr.WriteLine("You have " + numDomains + " Amazon SimpleDB domain(s) in the US-East (Northern Virginia) region."); // sr.WriteLine("<br />"); //} } catch (AmazonSimpleDBException ex) { if (ex.ErrorCode != null && ex.ErrorCode.Equals("AuthFailure")) { sr.WriteLine("The account you are using is not signed up for Amazon SimpleDB."); sr.WriteLine("<br />"); sr.WriteLine("You can sign up for Amazon SimpleDB at http://aws.amazon.com/simpledb"); } else { sr.WriteLine("<br />"); sr.WriteLine("Caught Exception: " + ex.Message); sr.WriteLine("<br />"); sr.WriteLine("Response Status Code: " + ex.StatusCode); sr.WriteLine("<br />"); sr.WriteLine("Error Code: " + ex.ErrorCode); sr.WriteLine("<br />"); sr.WriteLine("Error Type: " + ex.ErrorType); sr.WriteLine("<br />"); sr.WriteLine("Request ID: " + ex.RequestId); sr.WriteLine("<br />"); sr.WriteLine("XML: " + ex.XML); } } sr.WriteLine("<br />"); // Print the number of Amazon S3 Buckets. AmazonS3 s3Client = AWSClientFactory.CreateAmazonS3Client( appConfig["AWSAccessKey"], appConfig["AWSSecretKey"] ); try { //ListBucketsResponse response = s3Client.ListBuckets(); //int numBuckets = 0; //if (response.Buckets != null && // response.Buckets.Count > 0) //{ // numBuckets = response.Buckets.Count; //} //sr.WriteLine("You have " + numBuckets + " Amazon S3 bucket(s) in the US Standard region."); sr.WriteLine("<br />"); } catch (AmazonS3Exception ex) { if (ex.ErrorCode != null && (ex.ErrorCode.Equals("InvalidAccessKeyId") || ex.ErrorCode.Equals("InvalidSecurity"))) { sr.WriteLine("Please check the provided AWS Credentials."); sr.WriteLine("<br />"); sr.WriteLine("If you haven't signed up for Amazon S3, please visit http://aws.amazon.com/s3"); } else { sr.WriteLine("Caught Exception: " + ex.Message); sr.WriteLine("<br />"); sr.WriteLine("Response Status Code: " + ex.StatusCode); sr.WriteLine("<br />"); sr.WriteLine("Error Code: " + ex.ErrorCode); sr.WriteLine("<br />"); sr.WriteLine("Request ID: " + ex.RequestId); sr.WriteLine("<br />"); sr.WriteLine("XML: " + ex.XML); } } } return(sb.ToString()); }
public void DescribeInstancesAsync(DescribeInstancesRequest request, AmazonServiceCallback <DescribeInstancesRequest, DescribeInstancesResponse> callback, AsyncOptions options = null) { throw new System.NotImplementedException(); }
public DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest request) { return(Util.RetryMethod <DescribeInstancesResponse>(() => DoDescribeInstances(request), RetryCount)); }
// enumerate VPC security group and create a security group for EC2-VPC public void create_lunch_checkstatus_for_istance() { //Create an Amazon EC2 Client Using the the SDK var ec2Client = new AmazonEC2Client(); // enumerate VPC security group string secGroupName = "my-sample-sg-vpc"; SecurityGroup mySG = null; string vpcID = "vpc-7cdc5904"; Amazon.EC2.Model.Filter vpcFilter = new Amazon.EC2.Model.Filter { Name = "vpc-id", Values = new List <string>() { vpcID } }; var dsgRequest = new DescribeSecurityGroupsRequest(); dsgRequest.Filters.Add(vpcFilter); var dsgResponse = ec2Client.DescribeSecurityGroups(dsgRequest); List <SecurityGroup> mySGs = dsgResponse.SecurityGroups; foreach (SecurityGroup item in mySGs) { Console.WriteLine("Existing security group: " + item.GroupId); if (item.GroupName == secGroupName) { mySG = item; } } //create a security group for EC2-VPC if (mySG == null) { var newSGRequest = new CreateSecurityGroupRequest() { GroupName = secGroupName, Description = "My sample security group for EC2-VPC", VpcId = vpcID }; var csgResponse = ec2Client.CreateSecurityGroup(newSGRequest); Console.WriteLine(); Console.WriteLine("New security group: " + csgResponse.GroupId); List <string> Groups = new List <string>() { csgResponse.GroupId }; var newSgRequest = new DescribeSecurityGroupsRequest() { GroupIds = Groups }; var newSgResponse = ec2Client.DescribeSecurityGroups(newSgRequest); mySG = newSgResponse.SecurityGroups[0]; } //Create and initialize an IpPermission object. //iprange = the IP addresses of your local machine string ipRange = "0.0.0.0/0"; List <string> ranges = new List <string>() { ipRange }; var ipPermission = new IpPermission() { IpProtocol = "tcp", //The beginning and end of the port range. This example specifies a single port, 3389, which is used to communicate with Windows over RDP. //it should be changed if u launch a linux instance (use 22 insted ) FromPort = 3389, ToPort = 3389, IpRanges = ranges }; //Create and initialize an AuthorizeSecurityGroupIngressRequest object. var ingressRequest = new AuthorizeSecurityGroupIngressRequest(); ingressRequest.GroupId = mySG.GroupId; ingressRequest.IpPermissions.Add(ipPermission); //Pass the request object to the AuthorizeSecurityGroupIngress method, which returns an AuthorizeSecurityGroupIngressResponse object. var ingressResponse = ec2Client.AuthorizeSecurityGroupIngress(ingressRequest); Console.WriteLine("New RDP rule for: " + ipRange); //Create and initialize a network interface.for lunch enstance string subnetID = "subnet-048d6c59"; List <string> groups = new List <string>() { mySG.GroupId }; var eni = new InstanceNetworkInterfaceSpecification() { DeviceIndex = 0, SubnetId = subnetID, Groups = groups, AssociatePublicIpAddress = true }; List <InstanceNetworkInterfaceSpecification> enis = new List <InstanceNetworkInterfaceSpecification>() { eni }; string amiID = "ami-06a0d33fc8d328de0"; string keyPairName = "my-sample-key"; var launchRequest = new RunInstancesRequest() { ImageId = amiID, InstanceType = "m3.large", MinCount = 1, MaxCount = 1, KeyName = keyPairName, NetworkInterfaces = enis }; //launch RunInstancesResponse launchResponse = ec2Client.RunInstances(launchRequest); List <String> instanceIds = new List <string>(); foreach (Instance instance in launchResponse.Reservation.Instances) { Console.WriteLine(instance.InstanceId); instanceIds.Add(instance.InstanceId); } //check the status of the enstance var instanceRequest = new DescribeInstancesRequest(); instanceRequest.InstanceIds = new List <string>(); instanceRequest.InstanceIds.AddRange(instanceIds); var response = ec2Client.DescribeInstances(instanceRequest); Console.WriteLine(response.Reservations[0].Instances[0].State.Name); }
public static string GetServiceOutput() { StringBuilder sb = new StringBuilder(1024); using (StringWriter sr = new StringWriter(sb)) { sr.WriteLine("==========================================="); sr.WriteLine("Welcome to the AWS .NET SDK!"); sr.WriteLine("==========================================="); // Print the number of Amazon EC2 instances. IAmazonEC2 ec2 = new AmazonEC2Client(); DescribeInstancesRequest ec2Request = new DescribeInstancesRequest(); 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, ConfigurationManager.AppSettings["AWSRegion"])); } 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(); // Print the number of Amazon SimpleDB domains. IAmazonSimpleDB sdb = new AmazonSimpleDBClient(); ListDomainsRequest sdbRequest = new ListDomainsRequest(); try { ListDomainsResponse sdbResponse = sdb.ListDomains(sdbRequest); int numDomains = 0; numDomains = sdbResponse.DomainNames.Count; sr.WriteLine(string.Format("You have {0} Amazon SimpleDB domain(s) in the {1} region.", numDomains, ConfigurationManager.AppSettings["AWSRegion"])); } catch (AmazonSimpleDBException ex) { if (ex.ErrorCode != null && ex.ErrorCode.Equals("AuthFailure")) { sr.WriteLine("The account you are using is not signed up for Amazon SimpleDB."); sr.WriteLine("You can sign up for Amazon SimpleDB at http://aws.amazon.com/simpledb"); } 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(); // Print the number of Amazon S3 Buckets. IAmazonS3 s3Client = new AmazonS3Client(); try { ListBucketsResponse response = s3Client.ListBuckets(); int numBuckets = 0; if (response.Buckets != null && response.Buckets.Count > 0) { numBuckets = response.Buckets.Count; } sr.WriteLine("You have " + numBuckets + " Amazon S3 bucket(s)."); } catch (AmazonS3Exception ex) { if (ex.ErrorCode != null && (ex.ErrorCode.Equals("InvalidAccessKeyId") || ex.ErrorCode.Equals("InvalidSecurity"))) { sr.WriteLine("Please check the provided AWS Credentials."); sr.WriteLine("If you haven't signed up for Amazon S3, please visit http://aws.amazon.com/s3"); } else { sr.WriteLine("Caught Exception: " + ex.Message); sr.WriteLine("Response Status Code: " + ex.StatusCode); sr.WriteLine("Error Code: " + ex.ErrorCode); sr.WriteLine("Request ID: " + ex.RequestId); } } sr.WriteLine("Press any key to continue..."); } return(sb.ToString()); }
public List <CEc2Instance> describeInstances() { List <CEc2Instance> myInstances = new List <CEc2Instance>(); try { DescribeInstancesRequest request = new DescribeInstancesRequest(); DescribeInstancesResponse response = _service.DescribeInstances(request); if (response.IsSetDescribeInstancesResult()) { DescribeInstancesResult describeInstancesResult = response.DescribeInstancesResult; List <Reservation> reservationList = describeInstancesResult.Reservation; foreach (Reservation reservation in reservationList) { List <RunningInstance> runningInstanceList = reservation.RunningInstance; foreach (RunningInstance runningInstance in runningInstanceList) { CEc2Instance inst = new CEc2Instance(); if (runningInstance.IsSetInstanceId()) { inst.instanceId = runningInstance.InstanceId; } if (runningInstance.IsSetImageId()) { inst.imageId = runningInstance.ImageId; } if (runningInstance.IsSetInstanceState()) { InstanceState instanceState = runningInstance.InstanceState; if (instanceState.IsSetName()) { inst.status = instanceState.Name; } } if (runningInstance.IsSetPublicDnsName()) { inst.publicDns = runningInstance.PublicDnsName; } if (runningInstance.IsSetKeyName()) { inst.keyPairName = runningInstance.KeyName; } if (runningInstance.IsSetInstanceType()) { inst.type = runningInstance.InstanceType; } if (runningInstance.IsSetLaunchTime()) { inst.launchTime = runningInstance.LaunchTime; } if (runningInstance.IsSetPlacement()) { if (runningInstance.Placement.IsSetAvailabilityZone()) { inst.zone = runningInstance.Placement.AvailabilityZone; } } if (runningInstance.IsSetPlatform()) { inst.platform = runningInstance.Platform; } myInstances.Add(inst); } } } } catch (AmazonEC2Exception ex) { throw new Exception("Caught Exception: " + ex.XML); } return(myInstances); }
/// <summary> /// 查询kafka实例列表 /// </summary> /// <param name="request">请求参数信息</param> /// <returns>请求结果信息</returns> public DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest request) { return(new DescribeInstancesExecutor().Client(this).Execute <DescribeInstancesResponse, DescribeInstancesResult, DescribeInstancesRequest>(request)); }
public DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest request) { throw new NotImplementedException(); }
public List <InstanceDetail> GetVMProperties() { List <AWSProfile> profile; profile = SqlHelper.GetAWSAccounts(); List <InstanceDetail> profilelist = new List <InstanceDetail>(); //foreach (var profile_ in profile) //{ // Amazon.Util.ProfileManager.RegisterProfile(profile_.ProfileName, profile_.Accesskey, profile_.Secretkey); //} try { foreach (var profile_ in profile) { var regions = Amazon.RegionEndpoint.EnumerableAllRegions; //Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials(profile_.ProfileName); foreach (var r in regions) { string region_; if (r.SystemName != "us-gov-west-1" && r.SystemName != "cn-north-1") { region_ = r.SystemName; var region = RegionEndpoint.GetBySystemName(region_); AmazonEC2Client ec2 = new AmazonEC2Client(profile_.Accesskey, profile_.Secretkey, region); DescribeInstancesRequest request = new DescribeInstancesRequest(); DescribeInstancesResponse response = ec2.DescribeInstances(request); DescribeVolumesRequest volumeRequest = new DescribeVolumesRequest(); DescribeVolumesResponse volumeResponse = ec2.DescribeVolumes(volumeRequest); int size = 0; foreach (var volume in volumeResponse.Volumes) { size += volume.Size; } List <Reservation> result = response.Reservations; foreach (var item in result) { List <Instance> results = item.Instances; foreach (var instance in results) { InstanceDetail p = new InstanceDetail(); p.InstanceId = instance.InstanceId.ToString(); DescribeInstanceStatusRequest req = new DescribeInstanceStatusRequest(); req.InstanceIds.Add(p.InstanceId); DescribeInstanceStatusResponse resp = ec2.DescribeInstanceStatus(req); var statuses = resp.InstanceStatuses; foreach (var status in statuses) { p.InstanceState = status.Status.Status; } if (p.InstanceState == null) { p.InstanceState = "Not Available"; } p.Region = r.SystemName; p.DiskSize = (size / result.Count).ToString() + " GB"; // if (instance.PublicIpAddress != null) { p.IpAddress = instance.PublicIpAddress; } else { p.IpAddress = "Not Assigned"; } p.ProfileName = profile_.ProfileName; p.InstanceType = instance.InstanceType; p.Status = instance.State.Name.Value; p.ResourceGroup = "Not Applicable"; if (instance.IamInstanceProfile != null) { p.MachineName = instance.IamInstanceProfile.Arn; } else { p.MachineName = "Not Assigned"; } p.accountId = profile_.accountId; var type = instance.InstanceType; p.Type = "virtualMachines"; var b = instance.Tags.Count; if (b != 0) { p.MachineName = instance.Tags[0].Value; } if (instance.Platform != null) { p.OSType = instance.Platform; } else { p.OSType = "Amazon Linux"; } profilelist.Add(p); } } } } } return(profilelist); } catch (Exception e) { this.log.Error(e); return(null); } }
public List <EC2Instance> GetEC2InstanceList(IAmazonEC2 ec2) { // List<string> ec2list = new List<string>(); List <EC2Instance> ec2list; ec2list = new List <EC2Instance>(); List <GroupIdentifier> sg; List <string> sgstrlist; List <string> bdevicelist; try { DescribeInstancesRequest ec2Request = new DescribeInstancesRequest(); DescribeInstancesResponse ec2Response = ec2.DescribeInstances(ec2Request); foreach (Reservation reservation in ec2Response.Reservations) { foreach (Instance instance in reservation.Instances) { EC2Instance EC2Ins; EC2Ins = new EC2Instance(); sg = new List <GroupIdentifier>(); sgstrlist = new List <string>(); bdevicelist = new List <string>(); EC2Ins.setid(instance.InstanceId); EC2Ins.setName(instance.PrivateDnsName); EC2Ins.setPrivateDNSName(instance.PrivateDnsName); EC2Ins.setPrivateIP(instance.PrivateIpAddress); EC2Ins.setPublicIP(instance.PublicIpAddress); EC2Ins.setType(instance.InstanceType); EC2Ins.setPublicDNSName(instance.PublicDnsName); EC2Ins.setTokenName(instance.ClientToken); EC2Ins.setPlatform(instance.Platform); EC2Ins.setState(instance.State.Name.Value); EC2Ins.setPlacment(instance.Placement.AvailabilityZone); // EC2Ins.setTagName(instance.Tags[0].Value); EC2Ins.setKeyName(instance.KeyName); EC2Ins.setVpcId(instance.VpcId); EC2Ins.setSubnetId(instance.SubnetId); EC2Ins.setAmiId(instance.ImageId); foreach (Amazon.EC2.Model.Tag EC2tag in instance.Tags) { if (EC2tag.Key == "Name") { EC2Ins.setTagName(EC2tag.Value); } } // EC2Ins.setBlockDevice() // instance.BlockDeviceMappings foreach (InstanceBlockDeviceMapping bdevice in instance.BlockDeviceMappings) { // string bdstr = bdevice.DeviceName + ":" + ":" + bdevice.Ebs; bdevice. bdevicelist.Add(bdevice.DeviceName + ":" + ":" + bdevice.Ebs.Status + ":" + bdevice.Ebs.VolumeId); } EC2Ins.setSG(sgstrlist); foreach (GroupIdentifier sgi in instance.SecurityGroups) { sgstrlist.Add(sgi.GroupId); // sgi.GroupId } EC2Ins.setBlockDevice(bdevicelist); Monitoring m; List <InstanceNetworkInterface> ln; ln = new List <InstanceNetworkInterface>(); m = instance.Monitoring; ln = instance.NetworkInterfaces; //instance.NetworkInterfaces //instance. ec2list.Add(EC2Ins); // ec2list.Add(instance.InstanceId); /* instance.ImageId; * instance.KeyName; * instance.LaunchTime; * instance.Placement; * instance.Platform; * instance.RootDeviceType; * instance.SecurityGroups; * instance.SriovNetSupport; //enhance network is supported * instance.State; * instance.StateReason; * instance.SubnetId; * instance.Tags; * instance.VirtualizationType; * instance.VpcId * instance.KeyName; * instance.VpcId; */ } } } catch (Exception ex) { MessageBox.Show(ex.Message + "\n"); // + ex.StackTrace); } return(ec2list); }