导出备份 - Amazon ElastiCache for Redis
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

导出备份

Amazon ElastiCache 支持将您的 ElastiCache 备份导出到 Amazon Simple Storage Service (Amazon S3) 存储桶,这让您可以从 ElastiCache 之外访问它。您可以使用 ElastiCache 控制台、Amazon CLI 或 ElastiCache API 导出备份。

当您需要启动另一个集群时,导出备份会很有用Amazon区域。您可以将数据导出到一个Amazon区域中,将 .rdb 文件复制到新的Amazon区域,然后使用该 .rdb 文件为新集群做种而不是等待新集群在使用过程中填充。有关为新集群做种的信息,请参阅 使用外部创建的备份为新集群做种。您可能希望导出集群数据的另一个原因是将 .rdb 文件用于脱机处理。

重要

这些区域有:ElastiCache备份和Amazon S3存储桶必须位于同一个Amazon区域。

尽管复制到 Amazon S3 存储桶的备份已加密,但我们强烈建议您不要将要存储备份的 Amazon S3 存储桶的访问权限授予他人。

在您可以将备份导出到Amazon S3存储桶,必须拥有Amazon S3存储桶位于同一Amazon区域作为备份。向 ElastiCache 授予对存储桶的访问权限。前两个步骤向您演示了如何执行此操作。

警告

以下方案会以您可能不希望的方式公开您的数据:

  • 其他人具有对Amazon S3存储桶导出您的备份。

    要控制对备份的访问权限,请将对 Amazon S3 存储桶的访问权限仅授予您允许访问数据的人员。有关管理对Amazon S3存储桶,请参阅管理访问中的Amazon S3开发人员指南

  • 其他人有权使用 CopySnapshot API 操作时。

    有权使用 CopySnapshot API 操作的用户或组可以创建自己的 Amazon S3 存储桶并将备份复制到其中。要控制对您的备份的访问权限,请使用 Amazon Identity and Access Management (IAM) 策略来控制谁可以使用 CopySnapshot API。有关使用 IAM 控制 ElastiCache API 操作的使用的更多信息,请参阅Amazon ElastiCache 中的 Identity and Access Management中的ElastiCache用户指南

第 1 步:创建 Amazon S3 存储桶

以下过程使用 Amazon S3 控制台创建将用于导出和存储 ElastiCache 备份的 Amazon S3 存储桶。

创建 Amazon S3 存储桶

  1. 登录 Amazon Web Services Management Console并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 选择 Create Bucket

  3. Create a Bucket - Select a Bucket Name and Region 中,执行以下操作:

    1. Bucket Name (存储桶名称) 中,键入您 Amazon S3 存储桶的名称。

      您的 Amazon S3 存储桶名称必须符合 DNS 标准,否则 ElastiCache 将无法访问您的备份文件。DNS 合规性的规则包括:

      • 名称的长度为至少 3 个字符,不能超过 63 个字符。

      • 名称必须是一系列由句点 (.) 隔开的一个或多个标签,每个标签都遵从以下规则:

        • 以小写字母或数字开头。

        • 以小写字母或数字结尾。

        • 只允许使用小写字母、数字和短划线。

      • 名称不能采用 IP 地址格式(例如,192.0.2.0)。

    2. 区域列表中,选择Amazon适用于的区域Amazon S3存储桶。该Amazon区域必须相同AmazonImageElastiCache备份。

    3. 选择创建

有关创建Amazon S3存储桶,请参阅创建存储桶中的Amazon Simple Storage Service 控制台用户指南

第 2 步:GrantElastiCache针对您的Amazon S3存储桶

为了使 ElastiCache 能够向 Amazon S3 存储桶复制快照,请为其授予该存储桶的访问权限。您授予ElastiCache针对您的Amazon S3存储桶的方式不同,具体取决于您的存储桶是位于默认Amazon区域或选择加入Amazon区域。

Amazon默认情况下启用 2019 年 3 月 20 日之前推出的区域。您可以开始在这些Amazon区域立即。2019 年 3 月 20 日之后推出的区域(例如 亚太地区(香港) 和 中东(巴林))默认情况下处于禁用状态。您必须先启用或选择加入这些区域,然后才能使用。管理Amazon区域中的Amazon-源-参考;

选择您的方法,具体取决于您的Amazon区域:

GrantElastiCache访问默认区域中的 S3 存储桶

Amazon默认情况下启用 2019 年 3 月 20 日之前推出的区域。您可以开始在这些Amazon区域立即。2019 年 3 月 20 日之后推出的区域(例如 亚太地区(香港) 和 中东(巴林))默认情况下处于禁用状态。您必须先启用或选择加入这些区域,然后才能使用。管理Amazon区域中的Amazon-源-参考;

要在Amazon S3存储桶中的Amazon默认情况下启用区域,请执行以下步骤。

警告

虽然复制到 Amazon S3 存储桶的备份已加密,但是对您的 Amazon S3 存储桶拥有访问权限的任何人都可以访问您的数据。因此,我们强烈建议您设置 IAM 策略来防止未经授权访问此 Amazon S3 存储桶。有关更多信息,请参阅 。管理访问中的Amazon S3开发人员指南

授予ElastiCache访问默认情况下的 S3 存储桶Amazon区域

  1. 登录 Amazon Web Services Management Console并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 选择要将备份复制到的 Amazon S3 存储桶的名称。这应该是您在第 1 步:创建 Amazon S3 存储桶中创建的 S3 存储桶。

  3. 确保存储桶的Amazon区域与您的ElastiCache备份Amazon区域。否则,请返回第 1 步:创建 Amazon S3 存储桶并在同一个Amazon区域作为您备份的群集。

  4. 选择Permissions (权限)选项卡上,选择访问控制列表,并在其他访问权限Amazon账户中,选择添加被授权者

  5. 在框中,添加Amazon区域的规范 ID,如下所示:

    • 中国(北京)和中国 (宁夏)Region:

      b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83

       

    • Amazon GovCloud (US-West)Region:

      40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
      重要

      该备份必须导出到 Amazon GovCloud (US) 中的 S3 存储桶。

  6. 通过为以下选项选择 Yes (是) 对存储桶设置权限:

    • 列出对象

    • 写入对象

    • 读取存储桶权限

  7. 选择 Save

现在,您可以使用 ElastiCache 控制台、Amazon CLI 或 ElastiCache API 将 ElastiCache 备份导出到 Amazon S3 存储桶中。

授予 ElastiCache 对选择加入区域中的 S3 存储桶的访问权限

Amazon默认情况下启用 2019 年 3 月 20 日之前推出的区域。您可以开始在这些Amazon区域立即。2019 年 3 月 20 日之后推出的区域(例如 亚太地区(香港) 和 中东(巴林))默认情况下处于禁用状态。您必须先启用或选择加入这些区域,然后才能使用。管理Amazon区域中的Amazon-源-参考;

要在Amazon S3选择加入中的存储桶Amazon区域,请执行以下步骤。

授予ElastiCache访问选择加入中的 S3 存储桶Amazon区域

  1. 登录 Amazon Web Services Management Console并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 选择要将备份复制到的 Amazon S3 存储桶的名称。这应该是您在第 1 步:创建 Amazon S3 存储桶中创建的 S3 存储桶。

  3. 选择 Permissions (权限) 选项卡,在 Permissions (权限) 下面,选择 Bucket policy (存储桶策略)

  4. 更新策略以授予 ElastiCache 执行操作所需的权限:

    • [ "Service" : "region-full-name.elasticache-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-opt-in-region.elasticache-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 步:将导出ElastiCache备份

现在您已经创建了 S3 存储桶并向 ElastiCache 授予了访问它的权限。接下来,您可以使用 ElastiCache 控制台、Amazon CLI 或 ElastiCache 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:::*" }] }

以下步骤使用 ElastiCache 控制台将备份导出到 Amazon S3 存储桶,以便从 ElastiCache 外部访问它。这些区域有:Amazon S3存储桶必须位于同一个AmazonImageElastiCache备份。

将 ElastiCache 备份导出到 Amazon S3 存储桶

  1. 登录 Amazon Web Services Management Console并通过以下网址打开 ElastiCache 控制台:https://console.amazonaws.cn/elasticache/

  2. 要查看您的备份列表,请从左侧导航窗格中,选择 Backups

  3. 从备份列表中,选择要导出的备份名称左侧的复选框。

  4. 选择 Copy

  5. Create a Copy of the Backup? (创建备份副本?) 中,执行以下操作:

    1. New backup name 框中键入新备份的名称。

      名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。

      ElastiCache 对您在此处输入的值添加实例标识符和 .rdb。例如,如果您输入 my-exported-backup,则 ElastiCache 创建 my-exported-backup-0001.rdb

    2. Target S3 Location (目标 S3 位置) 列表中,选择要将备份复制到的 Amazon S3 存储桶(您在 第 1 步:创建 Amazon S3 存储桶 中创建的存储桶)的名称。

      这些区域有:目标 S3 位置必须是Amazon S3存储桶中的Amazon具有以下权限的区域,导出过程才能成功。

      • 对象访问 – Read (读取)Write (写入)

      • 权限访问 – Read (读取)

      有关更多信息,请参阅 第 2 步:GrantElastiCache针对您的Amazon S3存储桶

    3. 选择 Copy

注意

如果您的 S3 存储桶没有供 ElastiCache 将备份导出到其中所需的权限,则您将收到以下某个错误消息。返回到第 2 步:GrantElastiCache针对您的Amazon S3存储桶,添加指定权限并重试导出备份的操作。

  • 未授予 ElastiCache 在 S3 存储桶上的 READ 权限 %s。

    解决方案: 在存储桶上添加 Read 权限。

  • 未授予 ElastiCache 在 S3 存储桶上的 WRITE 权限 %s。

    解决方案: 在存储桶上添加 Write 权限。

  • 未授予 ElastiCache 在 S3 存储桶上的 READ_ACP 权限 %s。

    解决方案: AddRead获取对存储桶的权限访问。

如果想要将您的备份复制到其他Amazon区域,使用Amazon S3来复制它。有关更多信息,请参阅 。复制对象中的Amazon Simple Storage Service 控制台用户指南

使用带有以下参数的 copy-snapshot CLI 操作将备份导出到 Amazon S3 存储桶:

Parameters

  • --source-snapshot-name – 要复制的备份的名称。

  • --target-snapshot-name – 备份副本的名称。

    名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。

    ElastiCache 对您在此处输入的值添加实例标识符和 .rdb。例如,如果您输入 my-exported-backup,则 ElastiCache 创建 my-exported-backup-0001.rdb

  • --target-bucket – 您要将备份导出到的 Amazon S3 存储桶的名称。在指定存储桶中生成备份的副本。

    这些区域有:--target-bucket必须是Amazon S3存储桶中的Amazon具有以下权限的区域,导出过程才能成功。

    • 对象访问 – Read (读取)Write (写入)

    • 权限访问 – Read (读取)

    有关更多信息,请参阅 第 2 步:GrantElastiCache针对您的Amazon S3存储桶

以下操作将备份复制到 my-s3-bucket。

对于 Linux, OS X, or Unix:

aws elasticache copy-snapshot \ --source-snapshot-name automatic.my-redis-primary-2016-06-27-03-15 \ --target-snapshot-name my-exported-backup \ --target-bucket my-s3-bucket

对于 Windows:

aws elasticache copy-snapshot ^ --source-snapshot-name automatic.my-redis-primary-2016-06-27-03-15 ^ --target-snapshot-name my-exported-backup ^ --target-bucket my-s3-bucket
注意

如果您的 S3 存储桶没有供 ElastiCache 将备份导出到其中所需的权限,则您将收到以下某个错误消息。返回到第 2 步:GrantElastiCache针对您的Amazon S3存储桶,添加指定权限并重试导出备份的操作。

  • 未授予 ElastiCache 在 S3 存储桶上的 READ 权限 %s。

    解决方案: 在存储桶上添加 Read 权限。

  • 未授予 ElastiCache 在 S3 存储桶上的 WRITE 权限 %s。

    解决方案: 在存储桶上添加 Write 权限。

  • 未授予 ElastiCache 在 S3 存储桶上的 READ_ACP 权限 %s。

    解决方案: AddRead获取对存储桶的权限访问。

有关更多信息,请参阅 。复制快照中的Amazon CLI Command Reference

如果想要将您的备份复制到其他Amazon区域,使用Amazon S3复制。有关更多信息,请参阅 。复制对象中的Amazon Simple Storage Service 控制台用户指南

使用带有以下参数的 CopySnapshot API 操作将备份导出到 Amazon S3 存储桶。

Parameters

  • SourceSnapshotName – 要复制的备份的名称。

  • TargetSnapshotName – 备份副本的名称。

    名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。

    ElastiCache 对您在此处输入的值添加实例标识符和 .rdb。例如,如果您输入 my-exported-backup,则将获得 my-exported-backup-0001.rdb

  • TargetBucket – 您要将备份导出到的 Amazon S3 存储桶的名称。在指定存储桶中生成备份的副本。

    这些区域有:TargetBucket必须是Amazon S3存储桶中的Amazon具有以下权限的区域,导出过程才能成功。

    • 对象访问 – Read (读取)Write (写入)

    • 权限访问 – Read (读取)

    有关更多信息,请参阅 第 2 步:GrantElastiCache针对您的Amazon S3存储桶

以下示例将自动备份复制到 Amazon S3 存储桶 my-s3-bucket

https://elasticache.us-west-2.amazonaws.com/ ?Action=CopySnapshot &SourceSnapshotName=automatic.my-redis-primary-2016-06-27-03-15 &TargetBucket=my-s3-bucket &TargetSnapshotName=my-backup-copy &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20141201T220302Z &Version=2016-01-01 &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Date=20141201T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20141201T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>
注意

如果您的 S3 存储桶没有供 ElastiCache 将备份导出到其中所需的权限,则您将收到以下某个错误消息。返回到第 2 步:GrantElastiCache针对您的Amazon S3存储桶,添加指定权限并重试导出备份的操作。

  • 未授予 ElastiCache 在 S3 存储桶上的 READ 权限 %s。

    解决方案: 在存储桶上添加 Read 权限。

  • 未授予 ElastiCache 在 S3 存储桶上的 WRITE 权限 %s。

    解决方案: 在存储桶上添加 Write 权限。

  • 未授予 ElastiCache 在 S3 存储桶上的 READ_ACP 权限 %s。

    解决方案: AddRead获取对存储桶的权限访问。

有关更多信息,请参阅 。CopySnapshot中的Amazon ElastiCache API Reference

如果想要将您的备份复制到其他Amazon区域,使用Amazon S3复制以将导出的备份复制到Amazon S3存储桶位于另一个Amazon区域。有关更多信息,请参阅 。复制对象中的Amazon Simple Storage Service 控制台用户指南