![](/img/trans.png)
[英]Amazon connect sdk JavaScript V3 with sts assume role
[英]AWS SDK v3 Assume role for a client
我正在使用 AWS JS SDK v3 編寫一個 Node JS 應用程序。 我正確地使用 STS 承擔角色並檢索憑據。 假設呼叫響應是這樣的:
{
"$metadata": {
"httpStatusCode": 200,
"requestId": "xxx",
"attempts": 1,
"totalRetryDelay": 0
},
"Credentials": {
"AccessKeyId": "xxx",
"SecretAccessKey": "xxx",
"SessionToken": "xxx",
"Expiration": "2021-02-26T15:40:17.000Z"
},
"AssumedRoleUser": {
"AssumedRoleId": "xxx",
"Arn": "arn:aws:sts::xxx"
}
}
我正在獲取憑據並將它們傳遞給 DynamoDBClient 構造函數(連同區域)。
import { DynamoDBClient, ListTablesCommand } from '@aws-sdk/client-dynamodb';
public getTablesList(region: string) {
const credentials = await getCredentialsFromSTS(region);
const clientParams = Object.assign(credentials, region); // This just merges two JSONs into one
const dbClient = new DynamoDBClient(clientParams);
const command = new ListTablesCommand({});
const response = await dbClient.send(command);
console.log(response);
}
我在響應中得到的只是運行我的代碼的帳戶表的列表。 我擔任該角色的帳戶中的表不存在。 也許我錯誤地扮演了這個角色? 我試圖 package “憑據”鍵中的憑據,但這也無濟於事。
const clientParams = Object.assign({ Credentials: credentials }, region);
知道我在這里做錯了什么嗎? 也許 DDBClient 沒有像它應該的那樣假設它,但是有沒有辦法檢查 DBClient 的假設角色? 我在文檔中找到了一個名為 RoleInfo 的命名空間,但我不知道如何調用它。
請閱讀 DynamoDBClient 參數 object 的文檔: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#constructor-property
憑證字段是小寫的,而在 STS 結果中它們是大寫的。
您的代碼中還有更多錯誤,例如Object.assign(credentials, region);
稱呼。 這里的region
是一個string
,因此通過將其分配給credentials
,您將不會獲得具有該region
變量值的名為“region”的屬性,但您將獲得數字屬性,每個屬性都有一個region
字符串的字符。
正確的初始化應該是:
const credentials = await getCredentialsFromSTS(region);
const dbClient = new DynamoDBClient({
region: region,
credentials: {
accessKeyId: credentials.AccessKeyId,
secretAccessKey: credentials.SecretAccessKey,
sessionToken: credentials.SessionToken,
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.