AWS SDK for JavaScript V3 API參考指南詳細描述 AWS SDK for JavaScript 第 3 版 (V3) 的所有API操作。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
憑證提供者
在 v2 中,的 SDK 提供了可 JavaScript 供選擇的認證提供者清單,以及 Node.js 上預設可用的認證提供者鏈結,該鏈會嘗試從所有最常見的提供者載入認 AWS 證。 JavaScript v3 的 SDK 簡化了憑證提供者的介面,使其更容易使用和寫入自訂憑證提供者。在新的憑據提供程序鏈之上, JavaScript v3 的 SDK 都提供了旨在提供相當於 v2 的憑據提供程序列表。
以下是 v2 中的所有憑據提供程序及其在 v3 中的等價物。
預設認證提供者
如果您沒有明確提供認證,則預設 AWS 認證提供者是用於 JavaScript 解析認證的 SDK 的方式。
-
v2:CredentialProviderChain在 Node.js 中,按照以下順序解析來源的憑據:
如果上述其中一個憑證提供者無法解析 AWS 認證,則鏈結會退回到下一個提供者,直到解析有效的認證為止,並且當所有提供者失敗時,鏈結將拋出錯誤。
在瀏覽器和 React Native 執行階段中,憑證鏈結是空的,而且必須明確設定認證。
-
v3:default Provider。在 v3 中,憑證來源和後援順序不會改變。它還支持AWS IAM Identity Center 憑據。
暫時登入資料
-
v2:
ChainableTemporaryCredentials
代表從中擷取的臨時證明資料AWS.STS
。如果沒有任何額外的參數,認證將從AWS.STS.getSessionToken()
操作中獲取。如果提供 IAM 角色,則會改為使用此AWS.STS.assumeRole()
作業來擷取角色的認證。AWS.ChainableTemporaryCredentials
與處理主認證和重新整理的方式不同。AWS.TemporaryCredentials
AWS.ChainableTemporaryCredentials
使用使用者傳遞的主要證明資料重新整理過期的證明資料,以支援 STS 證明資料鏈結。但是,在實例化期間AWS.TemporaryCredentials
遞歸地收合 MasterLidentity,排除重新整理需要中繼臨時認證的認證的能力。原始版本
TemporaryCredentials
已被棄用,以支持 v2。ChainableTemporaryCredentials
-
第三版:
fromTemporaryCredentials
。您可以fromTemporaryCredentials()
從@aws-sdk/credential-providers
包中打電話。範例如下: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 身份憑據
從 Amazon Cognito 身分識別服務 (通常用於瀏覽器) 載入登入資料。
-
v2:
CognitoIdentityCredentials
代表使用 Amazon Cognito 身分識別服務從 STS 網路身分聯合擷取的登入資料。 -
v3:
Cognito Identity Credential Provider
該@aws/credential-providers
軟件包提供了兩個憑據提供程序函數,其中一個 fromCognitoIdentity
函數接受身份 ID 和調用cognitoIdentity:GetCredentialsForIdentity
,而另一個fromCognitoIdentityPool
採用身份池 ID,cognitoIdentity:GetId
在第一次調用時調用,然後調fromCognitoIdentity
用。後者的後續調用不會重新調用。 GetId提供者實作 Amazon Cognito 開發人員指南中所述的「簡化流程」。不支持涉及呼叫
cognito:GetOpenIdToken
然後調sts:AssumeRoleWithWebIdentity
用的「經典流程」。如果您需要,請向我們打開功能請求。 // 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", }, }), });
EC2 中繼資料 (IMDS) 登入資料
代表從 Amazon EC2 執行個體上的中繼資料服務收到的登入資料。
-
v3:
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 }), });
ECS 認證
代表從指定 URL 接收的認證。此提供者將從AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
或AWS_CONTAINER_CREDENTIALS_FULL_URI
環境變數指定的 URI 要求臨時認證。
-
第 2 版:
ECSCredentials
或RemoteCredentials
。 -
v3:
fromContainerMetadata
建立將從 Amazon ECS 容器中繼資料服務取得登入資料的認證提供者。import { fromContainerMetadata } from "@aws-sdk/credential-providers"; // ES6 import const client = new FooClient({ credentials: fromContainerMetadata({ maxRetries: 3, // Optional timeout: 0, // Optional }), });
檔案系統認證
-
v2:
FileSystemCredentials
代表來自磁盤上 JSON 文件的憑據。 -
V3:已棄用。您可以明確讀取 JSON 文件並提供給客戶端。如果您需要,請向我們打開功能
請求。
SAML 認證提供者
-
v2:
SAMLCredentials
代表從 STS SAML 支援擷取的認證。 -
v3:不可用。如果您需要,請向我們打開功能
請求。
共用認證檔案認證
從共用認證檔案載入認證 (預設為環境變數~/.aws/credentials
或由AWS_SHARED_CREDENTIALS_FILE
環境變數定義)。此檔案在不同的 AWS SDK 和工具中受到支援。您可以參考共用設定和憑證檔案文件以取得更多資訊。
-
第三版:
fromIni
。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 }), });
網路身分認證
使用 OIDC 權杖從磁碟上的檔案擷取認證。它在 EKS 中常用。
-
第三版:
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 }, }), });
Web 身分同盟認證
從 STS Web 身分同盟支援擷取認證。
-
第三版:
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 }, }), });