共有認証情報ファイルから Node.js に認証情報をロードする - AWS SDK for JavaScript

AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表されています。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

共有認証情報ファイルから Node.js に認証情報をロードする

AWS の認証情報データは、SDK とコマンドラインインターフェイスで使用される共有ファイルに保存できます。SDK for JavaScript は、ロード時に共有認証情報ファイルを検索します。これは「credentials」という名前です。共有認証情報ファイルを保存する場所は、オペレーティングシステムによって異なります。

  • Linux、Unix、および macOS の共有認証情報ファイル: ~/.aws/credentials

  • Windows の共有認証情報ファイル: C:\Users\USER_NAME\.aws\credentials

認証情報ファイルがまだない場合は、「AWS による SDK 認証」を参照してください。これらの手順を実行すると、認証情報ファイルに次のようなテキストが表示されます。ここで、<YOUR_ACCESS_KEY_ID> はアクセスキー ID、<YOUR_SECRET_ACCESS_KEY> はシークレットアクセスキーです。

[default] aws_access_key_id = <YOUR_ACCESS_KEY_ID> aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>

このファイルが使用されている例については、「Node.js での使用開始」を参照してください。

[default] セクションの見出しは、デフォルトのプロファイルと認証情報の関連する値を指定します。同じ共有設定ファイルに、それぞれ独自の認証情報を持つ追加のプロファイルを作成できます。次の例は、デフォルトプロファイルと 2 つの追加プロファイルを含む設定ファイルを示しています。

[default] ; default profile aws_access_key_id = <DEFAULT_ACCESS_KEY_ID> aws_secret_access_key = <DEFAULT_SECRET_ACCESS_KEY> [personal-account] ; personal account profile aws_access_key_id = <PERSONAL_ACCESS_KEY_ID> aws_secret_access_key = <PERSONAL_SECRET_ACCESS_KEY> [work-account] ; work account profile aws_access_key_id = <WORK_ACCESS_KEY_ID> aws_secret_access_key = <WORK_SECRET_ACCESS_KEY>

デフォルトでは、SDK は AWS_PROFILE 環境変数を確認して、使用するプロファイルを決定します。環境に AWS_PROFILE 変数が設定されていない場合、SDK は [default] プロファイルの認証情報を使用します。代替プロファイルのいずれかを使用するには、AWS_PROFILE 環境変数の値を変更します。たとえば、上記の設定ファイルを指定する場合、作業アカウントから認証情報を使用するには、AWS_PROFILE 環境変数を work-account (使用しているオペレーティングシステムに合わせたもの) に設定します。​

注記

環境変数を設定するときは、必ず後で適切なアクション (使用しているオペレーティングシステムの必要に応じて) を行って、シェルまたはコマンド環境で変数を使用できるようにしてください。

環境変数を設定 (必要に応じて) した後、SDK を使用する script.js という名前の JavaScript ファイルを次のように実行できます。

$ node script.js

SDK をロードする前に process.env.AWS_PROFILE を設定するか、次の例に示すように認証情報プロバイダーを選択することによって、SDK で使用されるプロファイルを明示的に選択することもできます。

var credentials = new AWS.SharedIniFileCredentials({profile: 'work-account'}); AWS.config.credentials = credentials;