

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在.NET 或 Java 中使用自定义实现 AWS SDKs
<a name="cust-imp"></a>

您可以使用.NET、Java、Python 或其他支持的编程语言构建自定义解决方案，而不必依赖其他 AWS 服务来执行跨账户表复制。 AWS 提供 SDKs，允许以编程方式访问 AWS 服务 APIs，或者以多种语言提供。此解决方案需要您所用语言的实际开发经验。

您可以创建一个控制台应用程序（如果您使用的是 Web API，则可以创建新的 API 端点），该应用程序可以调用以执行完整表复制。自定义解决方案应执行以下步骤：

****

1. 删除目标账户中的 DynamoDB 表。

1. 在目标账户中创建 DynamoDB 表（具有按需容量）和索引。或者，您可以使用预配置容量模式， RCUs 并 WCUs 根据需要设置和。

1. 使用软件开发工具包 AWS 中的 DynamoDB 批量写入操作将数据从源账户复制到目标账户，以减少对 DynamoDB 的服务调用次数。

![\[自定义实现使用安全令牌来访问提供对源账户和目标账户的访问权限的 IAM 策略。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/dynamodb-full-table-copy-options/images/dynamodb_cross-account_table-copy_cust-implementation.png)


此解决方案最适合大小较小（小于 500 MB）的 DynamoDB 表。

对于包含 200 K 个项目（平均项目大小 30 KB，表大小为 250 MB）的 DynamoDB 表，此解决方案（包括表创建和数据填充）大约需要 5 分钟：
+ 容量模式-已预配置，有 4000 和 4000 RCUs WCUs
+ 消耗的容量单位 — 30 K RCUs 和大约 400 K WCUs

## 优点
<a name="adv-cust-imp"></a>
+ 该解决方案不依赖于 DynamoDB 以外的任何 AWS 服务，因此维护开销较少。
+ 通过使用 AWS Lambda 函数来运行该解决方案，可以使其成为无服务器解决方案。但是，运行时间必须为 15 分钟或更短。

## 缺点
<a name="dis-cust-imp"></a>
+ 该解决方案消耗更多 RCUs 和. WCUs 
+ 对于大型数据集，这可能不是一个好的解决方案，因为该解决方案需要与两个不同账户（使用两个不同的安全令牌）中的两个不同 DynamoDB 表进行主动连接。如果大型数据集的表复制需要很长时间，则可能会出现连接中断或安全令牌过期，因此您必须实现逻辑来处理这些可能性。您还必须实现逻辑才能从失败的地方继续复制。

有关更多信息，请参阅[使用自定义实施模式跨账户复制 Amazon DynamoDB 表](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/copy-amazon-dynamodb-tables-across-accounts-using-a-custom-implementation.html)。