从另一个区域的其他帐户访问DynamoDB表?

时间:2017-10-03 22:16:53

标签: amazon-web-services amazon-dynamodb aws-lambda

是否有可能让Lambda从中国西部2或us-east-1等非中国地区的其他帐户访问中国AWS账户中的DynamoDB表?

示例:

帐户1,区域:us-east-1 Lambda函数位于此处,需要访问DynamoDB

帐户2,区域:cn-north -... DynamoDB表位于此处

3 个答案:

答案 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地址,并自行签署请求以在不同帐户中发送数据。