グローバル設定オブジェクトの使用 - AWS SDK for JavaScript

AWS SDK for JavaScript バージョン 3 (v3) は、モジュラーアーキテクチャを含むいくつかの素晴らしい新機能を備えた v2 の書き換えです。詳細については、AWS SDK for JavaScript v3 デベロッパーガイドを参照してください。

グローバル設定オブジェクトの使用

SDK を設定する方法は 2 つあります。

  • AWS.Config を使用してグローバル設定を設定します。

  • 追加の設定情報をサービスオブジェクトに渡します。

多くの場合、AWS.Config を使用してグローバル設定を設定する方が簡単ですが、サービスレベルの設定を使用すると、個々のサービスをより細かく制御できます。AWS.Config で指定されたグローバル設定は、後で作成するサービスオブジェクトのデフォルト設定を提供し、それらの設定を簡素化します。ただし、必要がグローバル設定と異なる場合は、個々のサービスオブジェクトの設定を更新できます。

グローバル設定の設定

コードに aws-sdk パッケージをロードした後、AWS グローバル変数を使用して SDK のクラスにアクセスし、個々のサービスとやり取りできます。SDK には、アプリケーションに必要な SDK 設定を指定するために使用できるグローバル設定オブジェクト、AWS.Config が含まれています。

アプリケーションのニーズに応じて AWS.Config プロパティを設定して SDK を構成します。次の表は、SDK の設定によく使用される AWS.Config プロパティをまとめたものです。

設定オプション 説明
credentials 必須。サービスおよびリソースへのアクセスを決定するために使用される認証情報を指定します。
region 必須。サービスのリクエストが行われるリージョンを指定します。
maxRetries オプションです。指定されたリクエストが再試行される最大回数を指定します。
logger オプションです。デバッグ情報が書き込まれるロガーオブジェクトを指定します。
update オプションです。現在の設定を新しい値で更新します。

設定オブジェクトの詳細については、API リファレンスの「 Class: AWS.Config」を参照してください。

グローバル設定例

AWS.Config でリージョンと認証情報を設定する必要があります。次のブラウザスクリプトの例に示すように、AWS.Config コンストラクタの一部としてこれらのプロパティを設定できます。

var myCredentials = new AWS.CognitoIdentityCredentials({IdentityPoolId:'IDENTITY_POOL_ID'}); var myConfig = new AWS.Config({ credentials: myCredentials, region: 'us-west-2' });

リージョンを更新する次の例に示すように、AWS.Config メソッドを使用して update を作成した後にこれらのプロパティを設定することもできます。

myConfig = new AWS.Config(); myConfig.update({region: 'us-east-1'});

getCredentials の静的 AWS.config メソッドを呼び出すことで、デフォルトの認証情報を取得できます。

var AWS = require("aws-sdk"); AWS.config.getCredentials(function(err) { if (err) console.log(err.stack); // credentials not loaded else { console.log("Access key:", AWS.config.credentials.accessKeyId); } });

同様に、config ファイルでリージョンを正しく設定している場合は、AWS_SDK_LOAD_CONFIG 環境変数を真の値に設定し、region の静的 AWS.config プロパティを呼び出すことで、その値を取得します。

var AWS = require("aws-sdk"); console.log("Region: ", AWS.config.region);

サービスごとの設定

SDK for JavaScript で使用する各サービスには、そのサービスの API の一部であるサービスオブジェクトを介してアクセスします。例えば、Amazon S3 サービスにアクセスするには、Amazon S3 サービスオブジェクトを作成します。そのサービスオブジェクトのコンストラクタの一部として、サービスに固有の設定を指定できます。サービスオブジェクトに設定値を設定すると、コンストラクタは AWS.Config で使用されるすべての設定値 (認証情報を含む) を取ります。

た例えば、複数のリージョン内の Amazon EC2 オブジェクトにアクセスする必要がある場合は、各リージョンに Amazon EC2 サービスオブジェクトを作成し、それに応じて各サービスオブジェクトのリージョン設定を行います。

var ec2_regionA = new AWS.EC2({region: 'ap-southeast-2', maxRetries: 15, apiVersion: '2014-10-01'}); var ec2_regionB = new AWS.EC2({region: 'us-east-1', maxRetries: 15, apiVersion: '2014-10-01'});

AWS.Config を使用して SDK を設定するときに、サービスに固有の設定値を設定することもできます。グローバル設定オブジェクトは、多くのサービス固有の設定オプションをサポートしています。サービス固有の設定の詳細については、AWS SDK for JavaScriptAPI リファレンスの「Class: AWS.Config」を参照してください。

イミュータブル設定データ

グローバル設定の変更は、新しく作成されたすべてのサービスオブジェクトのリクエストに適用されます。新しく作成されたサービスオブジェクトは、まず現在のグローバル設定データを使用して設定され、次にローカル設定オプションで設定されます。グローバル AWS.config オブジェクトに加えた更新は、以前に作成されたサービスオブジェクトには適用されません。

既存のサービスオブジェクトを新しい設定データで手動で更新するか、新しい設定データを持つ新しいサービスオブジェクトを作成して使用する必要があります。次の例では、新しい設定データを使用して新しい Amazon S3 サービスオブジェクトを作成します。

s3 = new AWS.S3(s3.config);