是否有可能让Lambda从中国西部2或us-east-1等非中国地区的其他帐户访问中国AWS账户中的DynamoDB表?
示例:
帐户1,区域:us-east-1 Lambda函数位于此处,需要访问DynamoDB
帐户2,区域:cn-north -... DynamoDB表位于此处
答案 0 :(得分:3)
AWS中目前有三个独立且独立的分区。
aws
(通常被认为是“AWS”),aws-cn
(中国)和aws-us-gov
(GovCloud US)。
三个分区之间似乎没有任何连接 - 即使S3存储桶的“全局”命名空间只是每个分区中的全局。
在操作上,就好像AWS有三个完全自主且独立的“副本”。因此,没有可能的跨账户IAM访问,因为分区似乎完全没有意识到彼此。
您应该能够使用从中国帐户获取的IAM用户凭据从任何地方访问aws-cn
分区中的资源。这应该没有障碍,因为DynamoDB endpoint in cn-north-1可以直接从因特网访问。您需要将这些凭据传递给DynamoDB客户端,而不是使用Lambda函数的角色凭据。
答案 1 :(得分:0)
可以从一个区域访问DynamoDB表到另一个区域。当您使用SDK时,请将该区域更新为cn-north
,应该从那里开始。
var AWS = require('aws-sdk');
AWS.config.update({region: 'cn-north'});
var dynamodb = new AWS.DynamoDB();
dynamodb.batchGetItem(params, function (err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
如果您正在使用其他帐户,请创建一个单独的角色(另一个帐户的AssumeRole)并将其添加到Lambda。您还可以使用单独的AccessKey和SecretKey进行访问。但建议使用角色。
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html
希望它有所帮助。
答案 2 :(得分:0)
您可以使用每个AWS服务的公共API地址,并自行签署请求以在不同帐户中发送数据。