

AWS SDK for JavaScript v2 はサポート終了となりました。[AWS SDK for JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/) に移行することをお勧めします。その他の詳細、移行方法については、こちらの[発表内容](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)を参照してください。

# Node.js での認証情報の設定
<a name="setting-credentials-node"></a>

Node.js では、SDK に認証情報を提供する方法がいくつかあります。これらの中には、より安全なものもあれば、アプリケーションの開発中により便利に使えるものもあります。Node.js で認証情報を取得する場合は、環境変数やロードした JSON ファイルなど、複数のソースに依存するように注意してください。変更が行われたことに気付かずに、コードの実行に使用されるアクセス許可を変更してしまう可能性があります。

推奨の順序で認証情報を提供する方法は次のとおりです。

1. Amazon EC2 の AWS Identity and Access Management (IAM) ロールからロード

1. 共有認証情報ファイル (`~/.aws/credentials`) から読み込む

1. 環境変数から読み込む

1. ディスク上の JSON ファイルから読み込む

1. JavaScript SDK によって提供されるその他の認証情報プロバイダークラス

SDK で利用できる認証情報ソースが複数ある場合、デフォルトの選択優先順位は次のとおりです。

1. サービスクライアントコンストラクタで明示的に設定されている認証情報

1. 環境変数

1. 共有認証情報ファイル

1. ECS 認証情報プロバイダーからロードされた認証情報 (該当する場合)

1. 共有 AWS 設定ファイルまたは共有認証情報ファイルで指定された認証情報プロセスを使用して取得された認証情報です。詳細については、「[設定された認証情報プロセスを使用して Node.js で認証情報をロードする](loading-node-credentials-configured-credential-process.md)」を参照してください。

1. Amazon EC2 インスタンスの認証情報プロバイダーを使用して AWS IAM からロードされた認証情報 (インスタンスメタデータで設定されている場合)

詳細については、API リファレンスの [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html) および [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html) を参照してください。

**警告**  
アプリケーションで AWS 認証情報をハードコードすることは可能ですが、そうしないことをお勧めします。認証情報をハードコーディングすると、アクセスキー ID とシークレットアクセスキーが公開される危険があります。

このセクションのトピックでは、認証情報を Node.js にロードする方法について説明します。

**Topics**
+ [Amazon EC2 の IAM ロールから認証情報を Node.js にロードする](loading-node-credentials-iam.md)
+ [Node.js Lambda 関数の認証情報をロードする](loading-node-credentials-lambda.md)
+ [共有認証情報ファイルから Node.js に認証情報をロードする](loading-node-credentials-shared.md)
+ [環境変数から Node.js への認証情報のロード](loading-node-credentials-environment.md)
+ [JSON ファイルから認証情報を Node.js にロードする](loading-node-credentials-json-file.md)
+ [設定された認証情報プロセスを使用して Node.js で認証情報をロードする](loading-node-credentials-configured-credential-process.md)

# Amazon EC2 の IAM ロールから認証情報を Node.js にロードする
<a name="loading-node-credentials-iam"></a>

Amazon EC2 インスタンスで Node.js アプリケーションを実行する場合、Amazon EC2 の IAM ロールを活用して自動的に認証情報をインスタンスに提供できます。IAM ロールを使用するようにインスタンスを設定する場合、SDK はアプリケーションの IAM 認証情報を自動的に選択するため、手動で認証情報を提供する必要がなくなります。

Amazon EC2 インスタンスへの IAM ロールの追加の詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[Amazon EC2 インスタンス用の IAM ロールを使用する](https://docs.aws.amazon.com/sdkref/latest/guide/access-iam-roles-for-ec2.html)」を参照してください。

# Node.js Lambda 関数の認証情報をロードする
<a name="loading-node-credentials-lambda"></a>

AWS Lambda 関数を作成するときは、その関数を実行する許可を持つ特別な IAM ロールを作成する必要があります。このロールは、*実行ロール*と呼ばれます。Lambda 関数を設定するときは、作成した IAM ロールを対応する実行ロールとして指定する必要があります。

実行ロールは、実行と他のウェブサービスを呼び出すために必要な認証情報を Lambda 関数に提供します。その結果、Lambda 関数内で記述した Node.js コードに認証情報を提供する必要はありません。

Lambda 実行ロールの詳細については、*AWS Lambda デベロッパーガイド*の[許可の管理: IAM ロール (実行ロール) の使用](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role)を参照してください。

# 共有認証情報ファイルから Node.js に認証情報をロードする
<a name="loading-node-credentials-shared"></a>

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

認証情報ファイルがまだない場合は、「[AWS による SDK 認証](getting-your-credentials.md)」を参照してください。これらの手順を実行すると、認証情報ファイルに次のようなテキストが表示されます。ここで、*<YOUR\$1ACCESS\$1KEY\$1ID>* はアクセスキー ID、*<YOUR\$1SECRET\$1ACCESS\$1KEY>* はシークレットアクセスキーです。

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

このファイルが使用されている例については、「[Node.js での使用開始](getting-started-nodejs.md)」を参照してください。

`[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;
```

# 環境変数から Node.js への認証情報のロード
<a name="loading-node-credentials-environment"></a>

SDK は、環境内の変数として設定されている AWS 認証情報を自動的に検出して SDK リクエストに使用するため、アプリケーションで認証情報を管理する必要がなくなります。認証情報を提供するために設定する環境変数は次のとおりです。
+ `AWS_ACCESS_KEY_ID`
+ `AWS_SECRET_ACCESS_KEY`
+ `AWS_SESSION_TOKEN`

環境変数の設定の詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[環境変数のサポート](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html)」を参照してください。

# JSON ファイルから認証情報を Node.js にロードする
<a name="loading-node-credentials-json-file"></a>

`AWS.config.loadFromPath` を使用して、ディスク上の JSON ドキュメントから設定と認証情報をロードできます。指定するパスは、プロセスの現在の作業ディレクトリからの相対パスです。たとえば、次の内容の `'config.json'` ファイルから認証情報をロードするとします。

```
{ "accessKeyId": <YOUR_ACCESS_KEY_ID>, "secretAccessKey": <YOUR_SECRET_ACCESS_KEY>, "region": "us-east-1" }
```

この場合は、次のコードを使用します。

```
var AWS = require("aws-sdk");
AWS.config.loadFromPath('./config.json');
```

**注記**  
JSON ドキュメントから設定データを読み込むと、既存の設定データがすべてリセットされます。この手法を使用した後で、追加の設定データを追加してください。JSON ドキュメントからの認証情報のロードはブラウザスクリプトではサポートされていません。

# 設定された認証情報プロセスを使用して Node.js で認証情報をロードする
<a name="loading-node-credentials-configured-credential-process"></a>

SDK に組み込まれていないメソッドを使用して認証情報を入手できます。これを行うには、共有 AWS conﬁg ファイルまたは共有認証情報ファイルで認証情報プロセスを指定します。`AWS_SDK_LOAD_CONFIG` 環境変数を任意の値に設定している場合、SDK は認証情報ファイルに指定されているプロセス (ある場合) よりも、設定ファイルに指定されているプロセスを優先します。

共有 AWS 設定ファイルまたは共有認証情報ファイルから認証情報プロセスを指定する方法の詳細については、*AWS CLI コマンドリファレンス*、特に[外部プロセスから認証情報を取得する](https://docs.aws.amazon.com/cli/latest/topic/config-vars.html#sourcing-credentials-from-external-processes)に関する情報を参照してください。

`AWS_SDK_LOAD_CONFIG` 環境変数を使用する方法については、このドキュメントで「[共有 Config ファイルの使用](setting-region.md#setting-region-config-file)」を参照してください。