AWS SDK for JavaScript V3 API 参考指南详细描述了 AWS SDK for JavaScript 版本 3 (V3) 的所有API操作。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
凭证提供程序
在 v2 中,的 SDK JavaScript 提供了一个可供选择的凭证提供商列表,以及一个凭证提供者链(默认在 Node.js 上可用),它会尝试从所有最常见的提供商加载 AWS 证书。适用于 JavaScript v3 的 SDK 简化了凭据提供程序的界面,使其更易于使用和编写自定义凭据提供程序。在新的凭证提供商链之上,v JavaScript 3 版 SDK 都提供了旨在提供等同于 v2 的凭证提供商的列表。
以下是 v2 中的所有证书提供者以及 v3 中的等效凭证提供商。
默认凭证提供商
如果您未明确提供凭证,则默认凭证提供程序是用于 SDK JavaScript 解析 AWS 凭证的方式。
-
v2:CredentialProviderChain在 Node.js 中,按以下顺序解析来自来源的凭证:
如果上述凭证提供者之一未能解析 AWS 证书,则链会回退到下一个提供者,直到解析有效的凭证,当所有提供者都失败时,链将引发错误。
在 Browser 和 React Native 运行时中,凭据链为空,必须明确设置凭据。
-
v3:默认提供商。凭证来源和备用顺序在 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
以递归方式折叠 MasterCredentials,从而无法刷新需要中间临时凭证的证书。在 v2 中
TemporaryCredentials
,原版已被弃用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 }, }), });
亚马逊 Cognito 身份凭证
从 Amazon Cognito 身份服务加载证书,该服务通常在浏览器中使用。
-
v2:
CognitoIdentityCredentials
表示使用亚马逊 Cognito 身份服务从 STS Web 联合身份验证检索到的证书。 -
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 请求临时证书。
-
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 凭证提供商
-
v2:
SAMLCredentials
表示从 STS SAML 支持中检索到的凭证。 -
v3:不可用。如果您需要,请向我们提交功能请求
。
共享凭证文件凭证
从共享凭证文件加载凭证(默认为环境变量~/.aws/credentials
或由AWS_SHARED_CREDENTIALS_FILE
环境变量定义)。不同的 AWS SDK 和工具都支持此文件。您可以参阅共享配置和凭据文件文档了解更多信息。
-
v3:
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 }), });
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. clientConfig: { region }, }), });