一种将数据从一个 S3 复制到另一个 S3 存储桶的自动方法
An automatic way to copy data from one S3 to another S3 bucket
将数据从一个 s3 连续复制到另一个 s3 存储桶的最佳方法是什么?我知道 S3 支持事件通知并将它们发送到 lambda、SNS 和 SQS,但我不确定该怎么做?我应该触发一个 lambda 函数来接收来自 S3 的记录并将它们复制到另一个 s3 中吗?我应该使用 SNS 还是 SQS 来做到这一点?
假设您的两个存储桶都在同一区域(否则您可以使用跨区域复制),过程将是:
- 创建一个 AWS Lambda 函数
- 在存储桶上配置 S3 事件 以在创建对象时触发 Lambda 函数
Lambda 函数将传递存储桶和对象的详细信息。然后它应该将对象复制到另一个桶。
无需涉及Amazon SNS和Amazon SQS。
我建议使用 S3 复制。您可以在不同 AWS 区域之间或同一 AWS 区域中复制对象。
跨区域复制 (CRR) 用于跨不同 AWS 区域的 Amazon S3 存储桶复制对象。
同区域复制 (SRR) 用于在同一 AWS 区域跨 Amazon S3 存储桶复制对象。
如此处所述:https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html
您只需转到 S3 存储桶中的管理 -> 复制并配置源和目标存储桶。此外,您可以使用加密:
为什么要使用复制?
复制可以帮助您执行以下操作:
在保留元数据的同时复制对象 — 您可以使用复制来制作保留所有元数据(例如原始对象创建时间和版本 ID)的对象副本。如果您需要确保您的副本与源对象相同,此功能很重要
将对象复制到不同的存储 classes — 您可以使用复制将对象直接放入 Glacier、DEEP ARCHIVE 或目标存储桶中的其他存储 class。您还可以将数据复制到相同的存储空间 class,并在目标存储桶上使用生命周期策略,随着对象的老化将其移动到较冷的存储空间 class。
维护不同所有权下的对象副本 — 无论谁拥有源对象,您都可以告诉 Amazon S3 将副本所有权更改为拥有目标存储桶的 AWS 账户。这称为所有者覆盖选项。您可以使用此选项来限制对对象副本的访问。
在 15 分钟内复制对象 — 您可以使用 S3 复制时间控制 (S3 RTC) 在同一 AWS 区域或在可预测的时间范围内跨不同区域复制您的数据。 S3 RTC 在 15 分钟内复制 99.99% 存储在 Amazon S3 中的新对象(由服务级别协议支持)。有关详细信息,请参阅使用 S3 复制时间控制 (S3 RTC) 复制对象。
何时使用 CRR?
跨区域复制可以帮助您做到以下几点:
满足合规性要求 — 尽管 Amazon S3 默认将您的数据存储在多个地理位置遥远的可用区中,但合规性要求可能会要求您将数据存储在更远的地方。跨区域复制允许您在遥远的 AWS 区域之间复制数据以满足这些要求。
最大限度地减少延迟 — 如果您的客户位于两个地理位置,您可以通过在地理位置更接近您的用户的 AWS 区域维护对象副本来最大限度地减少访问对象的延迟。
提高运营效率 — 如果您在两个不同的 AWS 区域中拥有分析同一组对象的计算集群,您可以选择在这些区域中维护对象副本。
何时使用 SRR?
同区复制可以帮助您执行以下操作:
将日志聚合到单个存储桶中 — 如果您将日志存储在多个存储桶中或跨多个账户,您可以轻松地将日志复制到单个区域内存储桶中。这允许在单个位置更简单地处理日志。
配置生产账户和测试账户之间的实时复制 — 如果您或您的客户拥有使用相同数据的生产账户和测试账户,您可以通过实施 SRR 规则在这些多个账户之间复制对象,同时维护对象元数据。
遵守数据主权法 — 您可能需要将多个数据副本存储在特定区域内的不同 AWS 账户中。当合规性法规不允许数据离开您的国家/地区时,同区域复制可以帮助您自动复制关键数据。
将数据从一个 s3 连续复制到另一个 s3 存储桶的最佳方法是什么?我知道 S3 支持事件通知并将它们发送到 lambda、SNS 和 SQS,但我不确定该怎么做?我应该触发一个 lambda 函数来接收来自 S3 的记录并将它们复制到另一个 s3 中吗?我应该使用 SNS 还是 SQS 来做到这一点?
假设您的两个存储桶都在同一区域(否则您可以使用跨区域复制),过程将是:
- 创建一个 AWS Lambda 函数
- 在存储桶上配置 S3 事件 以在创建对象时触发 Lambda 函数
Lambda 函数将传递存储桶和对象的详细信息。然后它应该将对象复制到另一个桶。
无需涉及Amazon SNS和Amazon SQS。
我建议使用 S3 复制。您可以在不同 AWS 区域之间或同一 AWS 区域中复制对象。
跨区域复制 (CRR) 用于跨不同 AWS 区域的 Amazon S3 存储桶复制对象。
同区域复制 (SRR) 用于在同一 AWS 区域跨 Amazon S3 存储桶复制对象。
如此处所述:https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html
您只需转到 S3 存储桶中的管理 -> 复制并配置源和目标存储桶。此外,您可以使用加密:
为什么要使用复制?
复制可以帮助您执行以下操作:
在保留元数据的同时复制对象 — 您可以使用复制来制作保留所有元数据(例如原始对象创建时间和版本 ID)的对象副本。如果您需要确保您的副本与源对象相同,此功能很重要
将对象复制到不同的存储 classes — 您可以使用复制将对象直接放入 Glacier、DEEP ARCHIVE 或目标存储桶中的其他存储 class。您还可以将数据复制到相同的存储空间 class,并在目标存储桶上使用生命周期策略,随着对象的老化将其移动到较冷的存储空间 class。
维护不同所有权下的对象副本 — 无论谁拥有源对象,您都可以告诉 Amazon S3 将副本所有权更改为拥有目标存储桶的 AWS 账户。这称为所有者覆盖选项。您可以使用此选项来限制对对象副本的访问。
在 15 分钟内复制对象 — 您可以使用 S3 复制时间控制 (S3 RTC) 在同一 AWS 区域或在可预测的时间范围内跨不同区域复制您的数据。 S3 RTC 在 15 分钟内复制 99.99% 存储在 Amazon S3 中的新对象(由服务级别协议支持)。有关详细信息,请参阅使用 S3 复制时间控制 (S3 RTC) 复制对象。
何时使用 CRR?
跨区域复制可以帮助您做到以下几点:
满足合规性要求 — 尽管 Amazon S3 默认将您的数据存储在多个地理位置遥远的可用区中,但合规性要求可能会要求您将数据存储在更远的地方。跨区域复制允许您在遥远的 AWS 区域之间复制数据以满足这些要求。
最大限度地减少延迟 — 如果您的客户位于两个地理位置,您可以通过在地理位置更接近您的用户的 AWS 区域维护对象副本来最大限度地减少访问对象的延迟。
提高运营效率 — 如果您在两个不同的 AWS 区域中拥有分析同一组对象的计算集群,您可以选择在这些区域中维护对象副本。
何时使用 SRR?
同区复制可以帮助您执行以下操作:
将日志聚合到单个存储桶中 — 如果您将日志存储在多个存储桶中或跨多个账户,您可以轻松地将日志复制到单个区域内存储桶中。这允许在单个位置更简单地处理日志。
配置生产账户和测试账户之间的实时复制 — 如果您或您的客户拥有使用相同数据的生产账户和测试账户,您可以通过实施 SRR 规则在这些多个账户之间复制对象,同时维护对象元数据。
遵守数据主权法 — 您可能需要将多个数据副本存储在特定区域内的不同 AWS 账户中。当合规性法规不允许数据离开您的国家/地区时,同区域复制可以帮助您自动复制关键数据。