

 [AWS SDK for JavaScript V3 API リファレンスガイド](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/)では、AWS SDK for JavaScriptバージョン3 (V3) のすべての API オペレーションについて詳しく説明します。

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

# 認証情報プロバイダー
<a name="migrate-credential-providers"></a>

 v2 は、SDK for JavaScript は、選択できる認証情報プロバイダーのリストと、Node.js でデフォルトで利用可能な認証情報プロバイダーチェーンを提供します。これにより、最も一般的なすべてのプロバイダーから AWS 認証情報の読み込みが試行されます。SDK for JavaScript v3 では、認証情報プロバイダーのインターフェイスが簡素化され、カスタム認証情報プロバイダーの利用と作成が容易になりました。新しい認証情報プロバイダーチェーンに加えて、SDK for JavaScript v3 でも、v2 と同等の機能を提供することを目的として、認証情報プロバイダーのリストが用意されています。

 v2 のすべての認証情報プロバイダーと、それに相当する v3 の認証情報プロバイダーは次のとおりです。

## デフォルトの認証情報プロバイダー
<a name="default-credential-provider"></a>

 デフォルトの認証情報プロバイダーは、明示的に指定*しない場合*に SDK for JavaScript が AWS 認証情報を解決する方法です。
+  **v2**: Node.js の [CredentialProviderChain](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html) は、ソースからの認証情報を次の順序で解決します。
  +  [環境変数](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-environment.html) 
  +  [共有された認証情報ファイル](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.html) 
  +  [ECS コンテナ認証情報](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html) 
  +  [外部プロセスの生成](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html) 
  +  [指定されたファイルからの OIDC トークン](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html) 
  +  [Amazon EC2 インスタンスメタデータ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) - 

   上記の認証情報プロバイダーの 1 つが AWS 認証情報の解決に失敗した場合、有効な認証情報が解決されるまでチェーンは次のプロバイダーにフォールバックし、すべてのプロバイダーが失敗するとチェーンはエラーをスローします。

   ブラウザおよび React Native ランタイムでは、認証情報チェーンは空であるため、認証情報を明示的に設定する必要があります。
+  **v3**: [defaultProvider](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers#fromnodejsproviderchain-1)。認証情報のソースとフォールバック順序は v3 でも*変更されません*。また、[AWS IAM アイデンティティセンター 認証情報](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)もサポートしています。

## 一時認証情報
<a name="temporary-credentials"></a>
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html) は `AWS.STS` から取得した一時的な認証情報を表します。追加のパラメータがない場合、認証情報は `AWS.STS.getSessionToken()` オペレーションから取得されます。IAM ロールが指定されている場合、`AWS.STS.assumeRole()` オペレーションは代わりにロールの認証情報を取得するために使用されます。`AWS.ChainableTemporaryCredentials` は masterCredentials や認証情報の更新の処理方法が `AWS.TemporaryCredentials` とは異なります。`AWS.ChainableTemporaryCredentials` は、STS 認証情報のチェーンをサポートするためにユーザーが渡した masterCredentials を使用して期限切れの認証情報を更新します。ただし、`AWS.TemporaryCredentials` はインスタンス化の際に masterCredentials を再帰的に解決するため、中間の一時的な認証情報を必要とする、認証情報の更新機能は除外されます。

   元の [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TemporaryCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TemporaryCredentials.html) は v2 で `ChainableTemporaryCredentials` に置き換えられ、**非推奨**になりました。
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtemporarycredentials](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtemporarycredentials)。`@aws-sdk/credential-providers` パッケージから `fromTemporaryCredentials()` を呼び出すことができます。例を示します。

  ```
  import { FooClient } from "@aws-sdk/client-foo";
  import { fromTemporaryCredentials } from "@aws-sdk/credential-providers"; // ES6 import
  // const { FooClient } = require("@aws-sdk/client-foo");
  // const { fromTemporaryCredentials } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const sourceCredentials = {
    // A credential can be a credential object or an async function that returns a credential object
  };
  const client = new FooClient({
    credentials: fromTemporaryCredentials({
      masterCredentials: sourceCredentials,
      params: { RoleArn },
    }),
  });
  ```

## Amazon Cognito ID の認証情報
<a name="cognito-identity-credentials"></a>

 通常ブラウザで使用される Amazon Cognito ID サービスから認証情報を読み込みます。
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html) Amazon Cognito ID サービスを使用して STS ウェブ ID フェデレーションから取得した認証情報を表します。
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html) [`@aws/credential-providers` パッケージ](https://www.npmjs.com/package/@aws-sdk/credential-providers)には 2 つの認証情報プロバイダー関数が用意されています。1 つ目の [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html) はアイデンティティ ID を受け取り、`cognitoIdentity:GetCredentialsForIdentity` を呼び出し、もう 1 つの [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html) は アイデンティティプール ID を受け取り、最初の呼び出しで `cognitoIdentity:GetId` を呼び出した後、`fromCognitoIdentity` を呼び出します。2 回目以降の呼び出しでは GetId は再び呼び出されません。

   このプロバイダーは、「[Amazon Cognito デベロッパーガイド](https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html)」で説明されている「簡易フロー」を実装します。`cognito:GetOpenIdToken` を呼び出した後、`sts:AssumeRoleWithWebIdentity` を呼び出す「クラシックフロー」は*サポートされていません*。必要な場合は、「[機能リクエスト](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=)」でお知らせください。

  ```
  // fromCognitoIdentityPool example
  import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromCognitoIdentityPool } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    region: "us-east-1",
    credentials: fromCognitoIdentityPool({
      clientConfig: cognitoIdentityClientConfig, // Optional
      identityPoolId: "us-east-1:1699ebc0-7900-4099-b910-2df94f52a030",
      customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", // Optional
      logins: {
        // Optional
        "graph.facebook.com": "FBTOKEN",
        "www.amazon.com": "AMAZONTOKEN",
        "api.twitter.com": "TWITTERTOKEN",
      },
    }),
  });
  ```

  ```
  // fromCognitoIdentity example
  import { fromCognitoIdentity } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromCognitoIdentity } = require("@aws-sdk/credential-provider-cognito-identity"); // CommonJS import
  
  const client = new FooClient({
    region: "us-east-1",
    credentials: fromCognitoIdentity({
      clientConfig: cognitoIdentityClientConfig, // Optional
      identityId: "us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f",
      customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", // Optional
      logins: {
        // Optional
        "graph.facebook.com": "FBTOKEN",
        "www.amazon.com": "AMAZONTOKEN",
        "api.twitter.com": "TWITTERTOKEN",
      },
    }),
  });
  ```

## Amazon EC2 メタデータ (IMDS) 認証情報
<a name="ec2-metadataimds-credential"></a>

 Amazon EC2 インスタンスのメタデータサービスから受信した認証情報を表します。
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata)。Amazon EC2 インスタンスメタデータサービスから認証情報を取得する認証情報プロバイダーを作成します。

  ```
  import { fromInstanceMetadata } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromInstanceMetadata } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromInstanceMetadata({
      maxRetries: 3, // Optional
      timeout: 0, // Optional
    }),
  });
  ```

## Amazon ECS 認証情報
<a name="ecs-credentials"></a>

 指定された URL から受信した認証情報を表します。このプロバイダーは、`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` または `AWS_CONTAINER_CREDENTIALS_FULL_URI` の環境変数で指定された URI から一時的な認証情報をリクエストします。
+  **v2**: `ECSCredentials` または [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata)。Amazon ECS コンテナメタデータサービスから認証情報を取得する認証情報プロバイダーを作成します。

  ```
  import { fromContainerMetadata } from "@aws-sdk/credential-providers"; // ES6 import
  
  const client = new FooClient({
    credentials: fromContainerMetadata({
      maxRetries: 3, // Optional
      timeout: 0, // Optional
    }),
  });
  ```

## ファイルシステムの認証情報
<a name="file-system-credentials"></a>
+ **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/FileSystemCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/FileSystemCredentials.html)。ディスク上の JSON ファイルからの認証情報を表します。
+  **v3**: **廃止**。JSON ファイルを明示的に読み取り、クライアントに提供します。必要な場合は、「[機能リクエスト](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=)」でお知らせください。

## SAML 認証情報プロバイダー
<a name="saml-credential-provider"></a>
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SAMLCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SAMLCredentials.html) SAML サポートから取得した認証情報を表します。
+  **v3**: **利用できません**。必要な場合は、「[機能リクエスト](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=)」でお知らせください。

## 共有された認証情報ファイルの認証情報
<a name="shared-credential-file-credentials"></a>

 共有された認証情報ファイルから認証情報を読み取ります (デフォルトは `~/.aws/credentials` または `AWS_SHARED_CREDENTIALS_FILE` 環境変数で定義)。このファイルは、さまざまな AWS SDKsとツールでサポートされています。詳細については、[共有設定および認証情報ファイルのドキュメント](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)を参照してください。
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SharedIniFileCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SharedIniFileCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html) 

  ```
  import { fromIni } from "@aws-sdk/credential-providers";
  // const { fromIni } from("@aws-sdk/credential-providers");
  
  const client = new FooClient({
    credentials: fromIni({
      configFilepath: "~/.aws/config", // Optional
      filepath: "~/.aws/credentials", // Optional
      mfaCodeProvider: async (mfaSerial) => {
        // implement a pop-up asking for MFA code
        return "some_code";
      }, // Optional
      profile: "default", // Optional
      clientConfig: { region }, // Optional
    }),
  });
  ```

## ウェブ ID 認証情報
<a name="web-identity-credentials"></a>

 ディスク上のファイルから OIDC トークンを使用して認証情報を取得します。Amazon EKS で一般的に使用されます。
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtokenfile](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtokenfile) 

  ```
  import { fromTokenFile } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromTokenFile } from("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromTokenFile({
      // Optional. If skipped, read from `AWS_ROLE_ARN` environmental variable
      roleArn: "arn:xxxx",
      // Optional. If skipped, read from `AWS_ROLE_SESSION_NAME` environmental variable
      roleSessionName: "session:a",
      // Optional. STS client config to make the assume role request.
      clientConfig: { region },
    }),
  });
  ```

## ウェブ ID フェデレーション認証情報
<a name="web-identity-federation-credentials"></a>

 STS ウェブ ID フェデレーションサポートから認証情報を取得します。
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/WebIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/WebIdentityCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromwebtoken](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromwebtoken) 

  ```
  import { fromWebToken } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromWebToken } from("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromWebToken({
      // Optional. If skipped, read from `AWS_ROLE_ARN` environmental variable
      roleArn: "arn:xxxx",
      // Optional. If skipped, read from `AWS_ROLE_SESSION_NAME` environmental variable
      roleSessionName: "session:a",
      // Optional. STS client config to make the assume role request.
      clientConfig: { region },
    }),
  });
  ```