LoginSignup
3
2

More than 3 years have passed since last update.

AWS SDK for .NET を使って EC2 インスタンスの一覧を取得する

Last updated at Posted at 2019-06-28

概要

AWS SDK for .NET を使用して EC2 インスタンスの一覧を取得する。
.NetCore 向けの部分ではまった点も有ったので備忘のために作成。

検証環境

OS: amazon linux2(ami-0c3fd0f5d33134a76)
スペック: t2.micro
言語: C#
フレームワーク: .Net Core 2.2

手順

事前準備

  • EC2 割り当て用のロール作成。権限は"AmazonEC2ReadOnlyAccess"をつける。
  • EC2 インスタンスをaws上に1台立てる。とりあえず ssh で繋げられればOK。前述で作成したロールを割り当てておく。
  • .Net Core インストール
$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
$ sudo yum update -y
$ sudo yum install -y dotnet-sdk-2.2
  • Project の作成
$ dotnet new console -o aws_sdk
$ ls
aws_sdk
$ cd aws_sdk
$ dotnet run
Hello World!
  • AWSSDK アセンブリのインストール
$ pwd
/home/ec2-user/aws_sdk
$ dotnet add package AWSSDK.EC2 --version 3.3.118.3

参考URL: https://www.nuget.org/packages/AWSSDK.EC2/

プログラムの作成と実行

  • Program.csの編集
using System;
using System.Collections.Generic;
using Amazon;
using Amazon.EC2;
using Amazon.EC2.Model;

namespace aws_sdk
{
    class Program
    {
        static void Main(string[] args)
        {
            var ec2Client = new AmazonEC2Client(RegionEndpoint.APNortheast1);

            var request = new DescribeInstancesRequest
            {
                Filters = new List<Filter> {
                    new Filter {
                        Name = "instance-type",
                        Values = new List<string> {
                        "t2.micro"
                        }
                    }
                }
            };

            List<Reservation> response = ec2Client.DescribeInstancesAsync(request).Result.Reservations;

            foreach (Reservation reservation in response)
            {
                foreach (Instance instance in reservation.Instances)
                {
                    Console.WriteLine(instance.InstanceId);
                    Console.WriteLine(instance.State.Name);
                    Console.WriteLine(instance.PrivateIpAddress);
                }
            }
        }
    }
}

参考URL: https://docs.aws.amazon.com/sdkfornet/latest/apidocs/

  • プログラムの実行
$ dotnet run
i-00c6d881e4fa13468
running
192.168.0.116

終わりに

AWS Document にあるコード例を参考に DescribeInstances を実行しようとして何度もエラーになってはまった...。.NET Core は非同期の呼び出しパターンのみをサポートするって書いてあったのに気付かず...。ドキュメント見逃しパターンって一生治らん気がするわ。まあ、何となく .NET SDK の使い方はわかったから良しとする。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2