Amazon web services 跨帐户实时复制DynamoDB表数据

Amazon web services 跨帐户实时复制DynamoDB表数据,amazon-web-services,aws-lambda,amazon-dynamodb,amazon-kinesis,amazon-dynamodb-streams,Amazon Web Services,Aws Lambda,Amazon Dynamodb,Amazon Kinesis,Amazon Dynamodb Streams,最简单的方法是什么?最简单的方法意味着较低的服务维护开销。如果可能的话,更倾向于使用无服务器的方法将数据从一个帐户中的DDB表复制到另一个帐户,最好采用无服务器的方式,这样就不会使用数据管道安排作业 我一直在探索使用DynamoDB流的可能性,但是这篇老文章提到这是不可能的。然而,我找不到证实/反驳这一点的最新文件。还是这样吗 我正在考虑的另一个选项是:更新Firehose transform lambda,该lambda操作数据,然后将数据插入到DynamoDB表中,以将其发布到启用跨帐户传递

最简单的方法是什么?最简单的方法意味着较低的服务维护开销。如果可能的话,更倾向于使用无服务器的方法将数据从一个帐户中的DDB表复制到另一个帐户,最好采用无服务器的方式,这样就不会使用数据管道安排作业

我一直在探索使用DynamoDB流的可能性,但是这篇老文章提到这是不可能的。然而,我找不到证实/反驳这一点的最新文件。还是这样吗


我正在考虑的另一个选项是:更新Firehose transform lambda,该lambda操作数据,然后将数据插入到DynamoDB表中,以将其发布到启用跨帐户传递的Kinesis流,触发lambda,该lambda将根据需要进一步处理数据。

我们使用DynamoDB为跨帐户创建了复制系统用于hackathon任务的streams和Lambda。 由于Lambdas问题,您可能会在记录中看到一些延迟。 解决这个问题的方法也取决于你要让Lambda多忙,下面是答案

我们实际上创建了一个cloudformation和一个jar,我们组织内部的任何人都可以使用它在任何表上开始复制。由于安全问题,将无法共享


请查看此文件以了解更多详细信息。

这应该是可能的

在启用流的源帐户中配置DynamoDB表 在同一帐户源帐户中创建Lambda函数,并将其与DDB流集成 创建跨帐户角色,即目标帐户中的DynamoDBCrossAccountRole,具有对目标DDB表执行必要操作的权限此角色和目标DDB表位于同一帐户中 除了CloudWatch的日志权限外,还将sts:AssumeRole权限添加到Lambda函数的执行角色,以便它可以承担跨帐户角色 从lambda函数中调用sts:AssumeRole并使用以下权限配置DynamoDB客户端,例如: 现在,您的lambda函数应该能够从源帐户对目标帐户中的DynamoDB进行操作
我们使用DyanmoDB streams和Lambda创建了一种跨帐户复制系统->您能提供一些见解吗?DDB流是一个帐户的一部分,Lambda是另一个帐户的一部分吗?Lambda有权在另一个帐户中写入DynamoDB表,这两个帐户是同一帐户的一部分吗?AWS提供了一个类似的案例研究:您应该收听DynamoDB流,而不是kinesis流。
client = boto3.client('sts')
sts_response = client.assume_role(RoleArn='arn:aws:iam::<999999999999>:role/DynamoDBCrossAccountRole',                              
                                      RoleSessionName='AssumePocRole', DurationSeconds=900)

dynamodb = boto3.resource(service_name='dynamodb', region_name=<region>,
                              aws_access_key_id = sts_response['Credentials']['AccessKeyId'],
                              aws_secret_access_key = sts_response['Credentials']['SecretAccessKey',
                              aws_session_token = sts_response['Credentials']['SessionToken'])