共有 AWS 認証情報ファイルの使用 - AWS SDK for .NET

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

共有 AWS 認証情報ファイルの使用

(認証情報に関する重要な警告とガイダンスを必ずご確認ください)

アプリケーションに認証情報を提供する方法の 1 つは、共有 AWS 認証情報ファイルにプロファイルを作成し、そのプロファイルに認証情報を保存することです。このファイルは、他の AWS SDK で使用できます。また、AWS CLIAWS Tools for Windows PowerShell、AWS toolkits for Visual StudioJetBrainsVS Code でも使用できます。

警告

セキュリティリスクを避けるため、専用ソフトウェアの開発や実際のデータを扱うときは、IAM ユーザーを認証に使用しないでください。代わりに、AWS IAM Identity Center などの ID プロバイダーとのフェデレーションを使用してください。

注記

このトピックの情報は、短期または長期認証情報を手動で取得および管理する必要がある場合を対象としています。短期認証情報と長期認証情報に関する追加情報については、「AWS SDK およびツールリファレンスガイド」の「その他の認証方法」を参照してください。

セキュリティのベストプラクティスについては、SDK 認証の設定 の説明に従って AWS IAM Identity Center を使用してください。

一般情報

共有 AWS 認証情報ファイルは、デフォルトではホームディレクトリ内の .aws ディレクトリに credentials という名前で配置されます。すなわち、~/.aws/credentials (Linux または macOS) または %USERPROFILE%\.aws\credentials (Windows) です。別の保存場所に関する詳細については、AWS SDK とツールのリファレンスガイドの「共有ファイルの場所」を参照してください。また、「アプリケーションでの認証情報とプロファイルへのアクセス」も参照してください。

共有 AWS 認証情報ファイルはプレーンテキストファイルで、特定の形式に従います。AWS 認証情報ファイルの形式の詳細については、AWS SDK とツールのリファレンスガイドの「認証情報ファイルの形式」を参照してください。

共有 AWS 認証情報ファイルのプロファイルは、いくつかの方法で管理できます。

  • 任意のテキストエディタを使用して、共有 AWS 認証情報ファイルを作成および更新します。

  • このトピックの後半の記載に従い、AWS SDK for .NET API の Amazon.Runtime.CredentialManagement 名前空間を使用します。

  • AWS Tools for PowerShell および AWS toolkits for Visual StudioJetBrainsVS Code のコマンドと手順を使用します。

  • AWS CLI コマンドを使用します (例えば aws configure set aws_access_key_id および aws configure set aws_secret_access_key)。

プロファイル管理の例

以下のセクションでは、共有 AWS 認証情報ファイル内のプロファイルの例を示します。いくつかの例では、前述の認証情報管理方法のいずれかを使用して取得できる結果が示されています。その他の例では、特定のメソッドの使用方法を示しています。

デフォルトのプロファイル

共有 AWS 認証情報ファイルにはほとんどの場合、default という名前のプロファイルがあります。ここは、他のプロファイルが定義されていない場合に AWS SDK for .NET が認証情報を検索する場所です。

[default] プロファイルは通常、以下のようになっています。

[default] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

プログラムでのプロファイルの作成

この例では、プログラムを使用してプロファイルを作成し、共有 AWS 認証情報ファイルに保存する方法を説明します。Amazon.Runtime.CredentialManagement 名前空間の次のクラスを使用します: CredentialProfileOptionsCredentialProfileSharedCredentialsFile

using Amazon.Runtime.CredentialManagement; ... // Do not include credentials in your code. WriteProfile("my_new_profile", SecurelyStoredKeyID, SecurelyStoredSecretAccessKey); ... void WriteProfile(string profileName, string keyId, string secret) { Console.WriteLine($"Create the [{profileName}] profile..."); var options = new CredentialProfileOptions { AccessKey = keyId, SecretKey = secret }; var profile = new CredentialProfile(profileName, options); var sharedFile = new SharedCredentialsFile(); sharedFile.RegisterProfile(profile); }
警告

このようなコードは、通常、アプリケーションに含めるべきではありません。アプリケーションに組み込む場合は、プレーンテキストキーがコード内、ネットワーク経由、またはコンピュータのメモリ内で見えないように適切な予防措置を講じてください。

この例で作成されたプロファイルを以下に示します。

[my_new_profile] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

既存のプロファイルのプログラムでの更新

この例では、前の手順で作成したプロファイルをプログラムで更新する方法を示します。Amazon.Runtime.CredentialManagement 名前空間の次のクラスを使用します: CredentialProfileSharedCredentialsFile。また、Amazon 名前空間の RegionEndpoint クラスも使用します。

using Amazon.Runtime.CredentialManagement; ... AddRegion("my_new_profile", RegionEndpoint.USWest2); ... void AddRegion(string profileName, RegionEndpoint region) { var sharedFile = new SharedCredentialsFile(); CredentialProfile profile; if (sharedFile.TryGetProfile(profileName, out profile)) { profile.Region = region; sharedFile.RegisterProfile(profile); } }

更新されたプロファイルを以下に示します。

[my_new_profile] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY region=us-west-2
注記

AWS リージョンを他の場所に設定したり、他の方法で設定したりすることもできます。詳細については、「AWS リージョンを設定する」を参照してください。