如果上述其中一個登入資料提供者無法解析 AWS 登入資料,則鏈結會回到下一個提供者,直到有效登入資料解析為止,而且當所有提供者都失敗時,鏈結會擲回錯誤。
在瀏覽器和 React Native 執行時間中,登入資料鏈是空的,而且登入資料必須明確設定。
v3
:
defaultProvider
。登入資料來源和備用順序
在 v3 中不會
變更。它也支援
AWS IAM Identity Center 登入
資料。
暫時登入資料
v2
:
ChainableTemporaryCredentials
代表從 擷取的臨時登入資料
AWS.STS
。如果沒有任何額外的參數,將從
AWS.STS.getSessionToken()
操作擷取登入資料。如果提供 IAM 角色,則會改用
AWS.STS.assumeRole()
操作來擷取角色的登入資料。 與 masterCredentials 和重新整理的處理
AWS.TemporaryCredentials
方式
AWS.ChainableTemporaryCredentials
不同。 會使用使用者傳遞的 masterCredentials
AWS.ChainableTemporaryCredentials
重新整理過期的登入資料,以支援 STS 登入資料鏈結。不過, 會在執行個體化期間
AWS.TemporaryCredentials
遞迴收合 masterCredentials,導致無法重新整理需要中繼、暫時登入資料的登入資料。
原始
TemporaryCredentials
已在 v2
ChainableTemporaryCredentials
中
取代
為 。
v3
:
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 Identity 服務載入登入資料,通常用於瀏覽器。
v2:CognitoIdentityCredentials
代表使用 Amazon Cognito Identity 服務從 STS Web Identity Federation 擷取的憑證。
v3: Cognito Identity Credential Provider
@aws/credential-providers
套件提供兩個登入資料提供者函數,其中一個fromCognitoIdentity
會取得身分 ID 並呼叫 cognitoIdentity:GetCredentialsForIdentity
,另一個fromCognitoIdentityPool
則會取得身分集區 ID、第一次呼叫cognitoIdentity:GetId
時的呼叫,然後呼叫 fromCognitoIdentity
。後者的後續調用不會重新調用 GetId。
供應商實作 Amazon Cognito 開發人員指南中所述的「簡化流程」。sts:AssumeRoleWithWebIdentity
不支援涉及呼叫 cognito:GetOpenIdToken
和呼叫 的「傳統流程」。如果您需要,請向我們開啟功能請求。
// 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 執行個體上的中繼資料服務收到的憑證。
v2: EC2MetadataCredentials
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 請求臨時登入資料。
v2: 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 登入資料提供者
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
Web 身分登入資料
使用 OIDC 字符從磁碟上的檔案擷取登入資料。常用於 EKS。
v3: 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 聯合身分支援擷取憑證。
v3: 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.