IAM ロールを使用したアクセスの許可 - AWS SDK for .NET(バージョン 3)

このコンテンツは、.NET FrameworkおよびASP.NET 4.x。WindowsとVisual Studioをカバーしている。

の使用.NET CoreまたはASP.NET Core? のコンテンツに移動しますバージョン 3.5 以降のAWS SDK for .NET。WindowsやVisual Studioに加えて、クロスプラットフォーム開発についても扱う。

こんにちはAWS.NET コミュニティ! あなたの経験を共有し、私たちがAWS SDK for .NETとその学習リソースアンケート。この調査には約 10 分かかります。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IAM ロールを使用したアクセスの許可

この .NET の例は、以下の方法を示します。

  • Amazon S3 からオブジェクトを取得するサンプルプロジェクトを作成する

  • IAM ロールを作成する

  • Amazon EC2 インスタンスを起動して IAM ロールを指定する

  • Amazon EC2 インスタンスでサンプルを実行する

シナリオ

へのすべてのリクエストAWSによって発行された認証情報を使用して暗号で署名される必要がありますAWS。したがって、Amazon EC2 インスタンスで実行するソフトウェア用の認証情報を管理するための戦略が必要です。これらの認証情報を、ソフトウェアに継続してアクセスできる方法で、安全に配信、保存、およびローテーションする必要があります。

IAM ロールを使用すると、効果的に管理することができますAWSEC2 インスタンスで実行しているソフトウェア用の認証情報。IAM ロールを作成し、ソフトウェアに必要なアクセス許可を使用してそのロールを設定します。IAM ロールを使用するメリットの詳細については、「」を参照してください。Amazon EC2 の IAM ロールWindows インスタンス用 Amazon EC2 ユーザーガイドおよびロール (委任とフェデレーション)IAM ユーザーガイド

アクセス許可を使用するには、ソフトウェアでAWSサービス。コンストラクタは、認証情報プロバイダーチェーンで認証情報を探します。.NET の場合、認証情報プロバイダーチェーンは次のとおりです。

  • App.config ファイル

  • EC2 インスタンスの IAM ロールに関連付けられているインスタンスメタデータ

クライアントがApp.configインスタンスメタデータから IAM ロールに関連付けられているものと同じアクセス許可を持つ一時的な認証情報を取得します。認証情報は、アプリケーションソフトウェアに代わってコンストラクタによって保存され、アプリケーションソフトウェアのAWSそのクライアントオブジェクトから。この認証情報は一時的で、最終的には失効しますが、SDK クライアントは定期的に認証情報を更新して、アクセスを有効にし続けます。この定期的な更新が、アプリケーションソフトウェアに意識されることはまったくありません。

次の例は、Amazon S3 からオブジェクトを取得するサンプルプログラムを示しています。AWS資格情報を構成します。IAM ロールを作成して、AWS認証情報。最後に、IAM ロールを使用してインスタンスを起動します。AWSインスタンスで実行しているサンプルプログラムに認証情報を追加します。

Amazon S3 からオブジェクトを取得するサンプルを作成する

次のサンプルコードでは、アクセスできる Amazon S3 バケットのテキストファイルが必要です。AWSAmazon S3 バケットへのアクセスを提供する認証情報です。

Amazon S3 バケットの作成およびオブジェクトのアップロードの詳細については、「」を参照してください。Amazon S3 入門ガイド。の詳細AWSクレデンシャルについては、の設定AWS認証情報

using System; using System.IO; using System.Threading; using System.Threading.Tasks; using Amazon; using Amazon.S3; using Amazon.S3.Model; namespace S3ShowTextItem { class S3Sample { static async Task<GetObjectResponse> MyGetObjectAsync(string region, string bucket, string item) { RegionEndpoint reg = RegionEndpoint.GetBySystemName(region); AmazonS3Client s3Client = new AmazonS3Client(reg); Console.WriteLine("Retrieving (GET) an object"); GetObjectResponse response = await s3Client.GetObjectAsync(bucket, item, new CancellationToken()); return response; } public static void Main(string[] args) { if (args.Length < 4) { Console.WriteLine("You must supply a region, bucket name, text file name, and output file name"); return; } try { Task<GetObjectResponse> response = MyGetObjectAsync(args[0], args[1], args[2]); Stream responseStream = response.Result.ResponseStream; StreamReader reader = new StreamReader(responseStream); string responseBody = reader.ReadToEnd(); using(FileStream s = new FileStream(args[3], FileMode.Create)) using(StreamWriter writer = new StreamWriter(s)) { writer.WriteLine(responseBody); } } catch (AmazonS3Exception s3Exception) { Console.WriteLine(s3Exception.Message, s3Exception.InnerException); } Console.WriteLine("Press enter to continue"); Console.ReadLine(); } } }

サンプルコードをテストするには

  1. Visual Studio を開き、.NET Framework 4.5 以降を使用して Console App (.NET Framework) プロジェクトを作成します。

  2. AWSSDK.S3 NuGet パッケージをプロジェクトに追加します。

  3. Program.cs ファイル内のコードを上記のサンプルコードに置き換えます。

  4. コンパイルして、サンプルプログラムを実行します。プログラムは成功すると、次の出力を表示し、Amazon S3 のテキストファイルから取得したテキストを含むファイルをローカルドライブに作成します。

    Retrieving (GET) an object

    プログラムが失敗した場合は、バケットに対するアクセス許可を含む認証情報を使用していることを確認してください。

  5. (オプション) 認証情報をセットアップしていない実行中の Windows インスタンスに、このサンプルプログラムを転送します。プログラムを実行して、認証情報が見つからないため失敗していることを確認します。

IAM ロールを作成します。

Amazon S3 にアクセスするための適切なアクセス許可を持つ IAM ロールを作成します。

IAM ロールを作成するには

  1. IAM コンソールを開きます。

  2. ナビゲーションペインで [Roles] を選択し、続いて [Create New Role] を選択します。

  3. ロールの名前を入力し、[Next Step] を選択します。この名前は EC2 インスタンスを起動するときに必要になるため、覚えておいてください。

  4. []サービスロール] で、[Amazon EC2。[Select Policy Template] にある [Amazon S3 Read Only Access] を選択します。ポリシーを確認し、[Next Step] を選択します。

  5. ロール情報を確認し、[ロールの作成] を選択します。

EC2 インスタンスを起動して IAM ロールを指定する

Amazon EC2 コンソール、またはAWS SDK for .NETIAM ロールを使用して EC2 インスタンスを起動します。

  • コンソールを使用する: の指示にしたがって操作します。Windows インスタンスを起動するWindows インスタンス用 Amazon EC2 ユーザーガイドを参照してください。[Review Instance Launch] ページでは、[Edit instance details] を選択します。[IAM role] では、前に作成した IAM ロールを指定します。指示にしたがって手順を完了します。そのインスタンスに接続するには、セキュリティグループとキーペアを作成するか、または既存のものを使用する必要があります。

  • の使用AWS SDK for .NET: 「」を参照してください。Amazon EC2 インスタンスを起動する

IAM ユーザーは、以下のポリシーによって付与されたアクセス権がないと、IAM ロールを持つインスタンスを起動できません。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:PassRole", "iam:ListInstanceProfiles", "ec2:*" ], "Resource": "*" }] }

EC2 インスタンスでサンプルプログラムを実行する

EC2 インスタンスにサンプルプログラムを転送するには、次の手順で説明するように、AWS Management Consoleを使用してインスタンスに接続します。

注記

または、Toolkit for Visual Studio を使用して接続します (Amazon EC2 インスタンスへの接続()AWS Toolkit for Visual Studio) を開き、ローカルドライブからインスタンスにファイルをコピーします。インスタンスでローカルドライブを使用できるように、リモートデスクトップセッションが自動的に設定されます。

EC2 インスタンスでサンプルプログラムを実行するには

  1. Amazon EC2 コンソールを開きます。

  2. EC2 インスタンスのパスワードを取得します。

    1. ナビゲーションペインで、[インスタンス] を選択します。インスタンスを選択し、[Connect (接続)] を選択します。

    2. [Connect To Your Instance] ダイアログボックスで、[Get Password] を選択します (インスタンスの起動後、パスワードが利用可能になるまでに数分かかります)。

    3. [Browse] を選択し、インスタンスの起動時に作成したプライベートキーファイルを探します。ファイルを選択して [Open (開く)] を選択すると、ファイルの内容がコンテンツボックスにコピーされます。

    4. [Decrypt Password] を選択します。インスタンスのデフォルトの管理者パスワードが [Connect To Your Instance] ダイアログボックスに表示され、以前のパスワードが [Get Password] へのリンクに置き換えられます。

    5. デフォルトの管理者パスワードを記録するか、クリップボードにコピーします。このパスワードはインスタンスに接続するのに必要です。

  3. EC2 インスタンスに接続します。

    1. [Download Remote Desktop File] を選択します。ブラウザで要求されたら、.rdp ファイルを保存します。終了したら、[Close] を選択して [Connect To Your Instance] ダイアログボックスを閉じます。

    2. ダウンロードしたディレクトリに移動し、.rdp ファイルを右クリックして [Edit] を選択します。[Local Resources] タブの [Local devices and resources] で、[More] を選択します。[ドライブ] を選択してローカルドライブをインスタンスで使用できるようにします。次に、[OK] を選択します。

    3. [Connect] を選択してインスタンスに接続します。リモート接続の発行元が不明であるという警告が表示されることがあります。

    4. メッセージが表示されたら、以前記録またはコピーしたデフォルトの [Administrator] アカウントとデフォルトの管理者パスワードを使って、インスタンスにサインインします。

      コンテンツをコピーアンドペーストすると、データが破損することがあります。サインイン時に "Password Failed" というエラーが発生した場合は、パスワードを手動で入力します。詳細については、「」を参照してください。RDP を使用して Windows インスタンスに接続するおよびWindows インスタンスのトラブルシューティングWindows インスタンス用 Amazon EC2 ユーザーガイドを参照してください。

  4. プログラムをコピーし、AWSアセンブリ (AWSSDK.Core.dllおよびAWSSDK.S3.dll) をローカルドライブからインスタンスに接続します。

  5. プログラムを実行し、IAM ロールによって提供された認証情報が正常に使用されることを確認します。

    Retrieving (GET) an object