憑證提供者 - AWS SDK for JavaScript

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 的方式。

暫時登入資料

  • v2ChainableTemporaryCredentials代表從中擷取的臨時證明資料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 身分識別服務 (通常用於瀏覽器) 載入登入資料。

  • v2CognitoIdentityCredentials代表使用 Amazon Cognito 身分識別服務從 STS 網路身分聯合擷取的登入資料。

  • v3Cognito 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 執行個體上的中繼資料服務收到的登入資料。

  • 二版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_URIAWS_CONTAINER_CREDENTIALS_FULL_URI環境變數指定的 URI 要求臨時認證。

  • 2 版ECSCredentialsRemoteCredentials

  • v3fromContainerMetadata建立將從 Amazon ECS 容器中繼資料服務取得登入資料的認證提供者。

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

檔案系統認證

SAML 認證提供者

共用認證檔案認證

從共用認證檔案載入認證 (預設為環境變數~/.aws/credentials或由AWS_SHARED_CREDENTIALS_FILE環境變數定義)。此檔案在不同的 AWS SDK 和工具中受到支援。您可以參考共用設定和憑證檔案文件以取得更多資訊。

  • 二版SharedIniFileCredentials

  • 第三版: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 中常用。

  • 2 版TokenFileWebIdentityCredentials

  • 第三版: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 身分同盟支援擷取認證。

  • 二版WebIdentityCredentials

  • 第三版: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 }, }), });