gpt4 book ai didi

node.js - dynamoDB 'Requested resource not found' 访问跨 AWS 账户

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:24 24 4
gpt4 key购买 nike

假设我们有两个 aws 帐户,帐户名称是 devoprod。因此,在 prod 上,我有一个 dynamoDB 表,我想使用 devo 中存在的 lambda 函数来访问该表。现在我所做的是在 prod 中创建一个策略,该策略授予对 dynamoDB 的完全访问权限,并将该策略附加到 prod 帐户中的一个角色,这使得 devo 成为可信帐户。在devo中,我创建了一个具有lambda完全访问权限的角色,并附加了一个内联策略,允许承担prod角色。此外,我还可以通过在 devo 帐户中担任角色,使用 aws 控制台从 dynamoDB 获取数据。

下面是lambda函数:

const AWS = require('aws-sdk');
var cred = new AWS.CredentialProviderChain();
var sts = new AWS.STS({credentials: cred, region: 'us-east-1'});
var crd2 ;
var params = {
RoleArn: "arn:aws:iam::123456789012:role/crossAccount",
RoleSessionName: "atul"
};
sts.assumeRole(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else {
crd2 = data; // successful response
console.log("Role assured");
}
});

const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10', credentials: crd2, region: 'eu-west-1', endpoint: 'https://dynamodb.eu-west-1.amazonaws.com'});

exports.handler = (event, context, callback) => {
console.log(crd2);
console.log("**** " + JSON.stringify(dynamodb));

dynamodb.getItem({
TableName: "Testing",
Key: {
"Id": {
S: "1121091591"
}
}
}, function(err, data) {
if (err) {
console.log(err, err.stack);
callback(null, {
statusCode: '500',
body: err
});
} else {
console.log(data);
callback(null, {
statusCode: '200',
body: 'Hello '
});
}
})
};

这是我收到的错误:

{
"message": "Requested resource not found",
"code": "ResourceNotFoundException",
"time": "2019-03-05T17:54:35.920Z",
"requestId": "LAN0EI8B2I6I4CVI4OUH01MI3JVV4KQNSO5AEMVJF66Q9ASUAAJG",
"statusCode": 400,
"retryable": false,
"retryDelay": 11.869537309323096
}

谢谢

最佳答案

我认为您的代码正在 sts 调用完成之前构建 dynamodb 客户端,因为适用于 JavaScript 的 AWS 开发工具包是异步的。我认为您可以通过添加一个长时间 sleep 命令来测试它,看看这是否使它开始工作。一旦您确定这是否是问题所在,AWS 的此页面将帮助您更改代码以使其正常工作

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/calling-services-asynchronously.html

关于node.js - dynamoDB 'Requested resource not found' 访问跨 AWS 账户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55008866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com