本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
导出快照
适用于 Redis 的 MemoryDB 支持将 MemoryDB 快照导出到 Amazon Simple Storage Service (Amazon S3) 存储桶,因此您可以从 MemoryDB 外部访问该快照。导出的 MemoryDB 快照与开源 Redis 完全兼容,并且可以使用相应的 Redis 版本或工具进行加载。您可以使用 MemoryDB 控制台导出快照,Amazon CLI,或 MemoryDB API。
当您需要在其他Amazon区域。您可以导出您在某个 Amazon 区域中的数据,将 .rdb 文件复制到新的 Amazon 区域,然后使用该 .rdb 文件为新集群设定种子而不用等待新集群在使用过程中填充。有关为新集群做种的信息,请参阅 使用外部创建的快照为新集群设定种子。您可能希望导出集群数据的另一个原因是将 .rdb 文件用于脱机处理。
MemoryDB 快照以及您希望将该快照复制到其中的 Amazon S3 存储桶必须位于同一个Amazon区域。
尽管复制到 Amazon S3 存储桶的快照已加密,但我们强烈建议您不要将要存储快照的 Amazon S3 存储桶的访问权限授予他人。
您必须具有一个 Amazon S3 存储桶,才能将快照导出到 Amazon S3 存储桶Amazon区域作为快照。授予 MemoryDB 对存储桶的访问权限。前两个步骤向您演示了如何执行此操作。
以下方案会以您可能不希望的方式公开您的数据:
-
其他人具有您将快照导出到其中的 Amazon S3 存储桶的访问权限时。
要控制对快照的访问权限,请将对 Amazon S3 存储桶的访问权限仅授予您允许访问数据的人员。有关管理对 Amazon S3 存储桶的访问权限的信息,请参阅 Amazon S3 开发人员指南中的管理访问权限。
-
其他人有权使用 CopySnapshot API 操作。
具有使用权限的用户或组
CopySnapshotAPI 操作可以创建自己的 Amazon S3 存储桶并将快照复制到其中。要控制对快照的访问,请使用Amazon Identity and Access Management(IAM) 策略来控制谁可以使用CopySnapshotAPI。有关使用 IAM 控制 MemoryDB API 操作使用的更多信息,请参阅Redis MemoryDB 中的身份和权限管理中的内存 DB 用户指南.
第 1 步:创建 Amazon S3 存储桶
以下步骤使用 Amazon S3 控制台创建您可以在其中导出和存储 MemoryDB 快照的 Amazon S3 存储桶。
创建 Amazon S3 存储桶
-
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
选择 Create Bucket(创建存储桶)。
-
在 Create a Bucket - Select a Bucket Name and Region 中,执行以下操作:
-
在 Bucket Name(存储桶名称)中键入 Amazon S3 存储桶的名称。
-
从Region(区域)列表中,选择 Amazon S3 存储桶的 Amazon 区域。该Amazon区域必须相同Amazon区域作为您要导出的 MemoryDB 快照。
-
选择Create(创建)。
-
有关创建 Amazon S3 存储桶的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶。
第 2 步:授予 MemoryDB 对 Amazon S3 存储桶的访问权限
默认情况下,在 2019 年 3 月 20 日之前推出的 Amazon 区域为已启用状态。您可以立即开始在这些 Amazon 区域中工作。2019 年 3 月 20 日之后推出的区域默认情况下处于禁用状态。您必须按照所述,先启用或选择加入这些区域,然后才能使用它们。管理Amazon地区.
授予 MemoryDB 对 AU 中的 S3 存储桶的访问权限Amazon区域
要对中的 Amazon S3 存储桶创建适当的权限Amazon区域,请按以下步骤进行操作。
授予 MemoryDB 对 S3 存储桶的访问权限
-
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/
。 -
选择要将快照复制到其中的 Amazon S3 存储桶的名称。这应该是您在第 1 步:创建 Amazon S3 存储桶中创建的 S3 存储桶。
-
选择Permissions (权限)选项卡和下方Permissions (权限),选择存储桶策略.
-
更新策略以授予 MemoryDB 执行操作所需的权限:
将
[ "Service" : "添加到region-full-name.memorydb-snapshot.amazonaws.com" ]Principal。添加将快照导出到 Amazon S3 存储桶所需的以下权限。
"s3:PutObject""s3:GetObject""s3:ListBucket""s3:GetBucketAcl""s3:ListMultipartUploadParts""s3:ListBucketMultipartUploads"
以下是更新策略具体形式的示例。
{ "Version": "2012-10-17", "Id": "Policy15397346", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "aws-region.memorydb-snapshot.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::example-bucket", "arn:aws:s3:::example-bucket/*" ] } ] }
第 3 步:导出 MemoryDB 快照
现在,您已经创建了 S3 存储桶并向授予 MemoryDB 访问它的权限。将 S3 对象所有权更改为已启用 ACL — 存储桶拥有者首选. 接下来,您可以使用 MemoryDB 控制台AmazonCLI 或 MemoryDB API 来将您的快照导出到存储桶。下面假设您拥有以下附加的 S3 特定 IAM 权限。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListAllMyBuckets", "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::*" }] }
以下步骤使用 MemoryDB 控制台将快照导出到 Amazon S3 存储桶,以便从 MemoryDB 外部访问它。Amazon S3 存储桶必须位于同一Amazon区域作为 MemoryDB 快照。
将 MemoryDB 快照导出到 Amazon S3 存储桶
-
登录到Amazon Web Services Management Console然后打开适用于 Redis 的 MemoryDB 控制台https://console.aws.amazon.com/memorydb/
. -
要查看您的快照列表,请从左侧导航窗格中,选择快照.
-
从快照列表中,选择要导出的快照名称左侧的单选按钮。
-
选择 Copy(复制)。
-
在 Create a Copy of the Backup? (创建备份副本?) 中,执行以下操作:
-
In新快照名称框中,键入新快照的名称。
名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
MemoryDB 添加了一个分片标识符和
.rdb对您在此处输入的值进行修改。例如,如果您输入my-exported-snapshot,内存 DB 创建my-exported-snapshot-0001.rdb. -
从目标 S3 位置列表中,选择要将快照复制到其中的 Amazon S3 存储桶(您在中创建的存储桶)的名称第 1 步:创建 Amazon S3 存储桶)。
这些区域有:目标 S3 位置必须是快照中的 Amazon S3 存储桶Amazon具有以下权限的区域,导出过程才能成功。
对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅 第 2 步:授予 MemoryDB 对 Amazon S3 存储桶的访问权限。
-
选择 Copy(复制)。
-
如果您的 S3 存储桶没有供 MemoryDB 将快照导出到其中所需的权限,则您会收到以下某个错误消息。返回到第 2 步:授予 MemoryDB 对 Amazon S3 存储桶的访问权限添加指定权限并重试导出快照的操作。
-
未授予 MemoryDB 在 S3 存储桶上的 READ 权限 %s。
解决方案:在存储桶上添加 Read 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 WRITE 权限 %s。
解决方案:在存储桶上添加 Write 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:AddRead存储桶的权限访问权限。
如果想要将您的快照复制到其他存储Amazon区域,使用 Amazon S3 来复制它。有关更多信息,请参阅 。复制对象中的Amazon Storage Service.
使用将快照导出到 Amazon S3 存储桶copy-snapshot使用以下参数的 CLI 操作:
参数
-
--source-snapshot-name— 要复制的快照的名称。 -
--target-snapshot-name— 快照副本的名称。名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
MemoryDB 添加了一个分片标识符和
.rdb对您在此处输入的值进行修改。例如,如果您输入my-exported-snapshot,内存 DB 创建my-exported-snapshot-0001.rdb. -
--target-bucket— 您要将快照导出到其中的 Amazon S3 存储桶的名称。在指定存储桶中生成快照的副本。这些区域有:
--target-bucket必须是快照中的 Amazon S3 存储桶Amazon具有以下权限的区域,导出过程才能成功。对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅 第 2 步:授予 MemoryDB 对 Amazon S3 存储桶的访问权限。
以下操作将快照复制到 my-s3-bucket。
对于 Linux、macOS 或 Unix:
aws memorydb copy-snapshot \ --source-snapshot-nameautomatic.my-primary-2021-06-27-03-15\ --target-snapshot-namemy-exported-snapshot\ --target-bucketmy-s3-bucket
对于 Windows:
aws memorydb copy-snapshot ^ --source-snapshot-nameautomatic.my-primary-2021-06-27-03-15^ --target-snapshot-namemy-exported-snapshot^ --target-bucketmy-s3-bucket
如果您的 S3 存储桶没有供 MemoryDB 将快照导出到其中所需的权限,则您会收到以下某个错误消息。返回到第 2 步:授予 MemoryDB 对 Amazon S3 存储桶的访问权限添加指定权限并重试导出快照的操作。
-
未授予 MemoryDB 在 S3 存储桶上的 READ 权限 %s。
解决方案:在存储桶上添加 Read 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 WRITE 权限 %s。
解决方案:在存储桶上添加 Write 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:AddRead存储桶的权限访问权限。
有关更多信息,请参阅《Amazon CLI 命令参考》中的 copy-snapshot。
如果想要将您的快照复制到其他存储Amazon区域,使用 Amazon S3 的复制操作。有关更多信息,请参阅 。复制对象中的Amazon Storage Service.
使用将快照导出到 Amazon S3 存储桶CopySnapshot使用以下参数进行 API 操作。
参数
-
SourceSnapshotName— 要复制的快照的名称。 -
TargetSnapshotName— 快照副本的名称。名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
MemoryDB 添加了一个分片标识符和
.rdb对您在此处输入的值进行修改。例如,如果您输入my-exported-snapshot,则将获得my-exported-snapshot-0001.rdb。 -
TargetBucket— 您要将快照导出到其中的 Amazon S3 存储桶的名称。在指定存储桶中生成快照的副本。这些区域有:
TargetBucket必须是快照中的 Amazon S3 存储桶Amazon具有以下权限的区域,导出过程才能成功。对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅 第 2 步:授予 MemoryDB 对 Amazon S3 存储桶的访问权限。
以下示例将自动快照复制到 Amazon S3 存储桶my-s3-bucket.
https://memory-db.us-east-1.amazonaws.com/ ?Action=CopySnapshot &SourceSnapshotName=automatic.my-primary-2021-06-27-03-15 &TargetBucket=my-s3-bucket &TargetSnapshotName=my-snapshot-copy &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20210801T220302Z &Version=2021-01-01 &X-Amz-Algorithm=Amazon4-HMAC-SHA256 &X-Amz-Date=20210801T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20210801T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>
如果您的 S3 存储桶没有供 MemoryDB 将快照导出到其中所需的权限,则您会收到以下某个错误消息。返回到第 2 步:授予 MemoryDB 对 Amazon S3 存储桶的访问权限添加指定权限并重试导出快照的操作。
-
未授予 MemoryDB 在 S3 存储桶上的 READ 权限 %s。
解决方案:在存储桶上添加 Read 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 WRITE 权限 %s。
解决方案:在存储桶上添加 Write 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:AddRead存储桶的权限访问权限。
有关更多信息,请参阅 。CopySnapshot.
如果想要将您的快照复制到其他存储Amazon区域,使用 Amazon S3 的复制操作将导出的快照复制到其他 Amazon S3 存储桶Amazon区域。有关更多信息,请参阅 。复制对象中的Amazon Storage Service.