Amazon ElastiCache
用户指南 (API Version 2015-02-02)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

导出备份

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

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

重要

  • ElastiCache 备份与要将其复制到的 Amazon S3 存储桶必须位于同一区域中。

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

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

警告:数据漏洞

以下方案会以您不希望的方式公开您的数据。

  • 其他人具有您将备份导出到的 Amazon S3 存储桶的访问权限时。

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

     

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

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

步骤 1:创建 Amazon S3 存储桶

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

要创建 Amazon S3 存储段

  1. 登录 AWS 管理控制台并通过以下网址打开 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. Region 列表中,为 Amazon S3 存储桶选择区域。此区域必须与要将 ElastiCache 备份导出到的区域相同。

    3. 选择 Create

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

步骤 2:将对 ElastiCache 的访问权限授予您的 Amazon S3 存储桶

为便于 ElastiCache 向 Amazon S3 存储桶复制快照,它必须拥有该存储桶的访问权限。以下过程向 ElastiCache 授予对上一步中创建的 Amazon S3 存储桶的访问权限。

警告

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

向 ElastiCache 授予对 Amazon S3 存储桶的访问权限

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

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

  3. 确保存储桶的区域与 ElastiCache 备份的区域相同。如果不同,请返回步骤 1:创建 Amazon S3 存储桶,在要备份的群集所在的区域内创建一个新存储桶。

  4. 选择 Permissions

  5. 选择访问控制列表

  6. 其他 AWS 账户的访问权限下,选择+ 添加账户

  7. 在框中,添加区域的规范 ID,如以下列表中所示:

    • 中国(北京) 区域 –

      b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83

       

    • AWS GovCloud (US)区域 –

      40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6

      重要

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

    • 所有其他区域 -

      540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353
  8. 通过为以下对象选择来对存储桶设置权限:

    1. 列出对象

    2. 写入对象

    3. 读取存储桶权限

  9. 选择 Save

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

步骤 3:导出 ElastiCache 备份

您已创建 S3 存储桶并向 ElastiCache 授予对该存储桶的访问权限,因此可以使用 ElastiCache 控制台、AWS CLI 或 ElastiCache API 将快照导出到该存储桶中。以下假设您拥有以下附加 S3 特定 IAM 权限。

{ "Statement": { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" } "Version": "2012-10-17" }

(控制台) 导出 ElastiCache 备份

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

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

  1. 登录 AWS 管理控制台 并通过以下网址打开 ElastiCache 控制台:https://console.amazonaws.cn/elasticache/

  2. 在 ElastiCache 控制台控制面板中,选择 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 列表中,选择要将备份复制到的 Amazon S3 存储桶 (您在步骤 1:创建 Amazon S3 存储桶中创建的存储桶) 的名称。

      Target S3 Location 必须是备份所在区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。

      • 对象访问 – ReadWrite

      • 权限访问 – Read

      有关更多信息,请参阅 步骤 2:将对 ElastiCache 的访问权限授予您的 Amazon S3 存储桶

    3. 选择 Copy

注意

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

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

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

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

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

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

    解决方案:为存储桶的权限访问添加 Read

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

导出 ElastiCache 备份 (AWS CLI)

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

参数

  • --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 存储桶并具有以下权限,导出过程才能成功。

    • 对象访问 – ReadWrite

    • 权限访问 – Read

    有关更多信息,请参阅 步骤 2:将对 ElastiCache 的访问权限授予您的 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:将对 ElastiCache 的访问权限授予您的 Amazon S3 存储桶,添加指定权限并重试导出备份的操作。

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

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

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

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

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

    解决方案:为存储桶的权限访问添加 Read

有关更多信息,请参阅 AWS Command Line Interface Reference 中的 copy-snapshot

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

导出 ElastiCache 备份 (ElastiCache API)

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

参数

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

  • TargetSnapshotName - 备份副本的名称。

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

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

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

    TargetBucket 必须是备份所在区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。

    • 对象访问 – ReadWrite

    • 权限访问 – Read

    有关更多信息,请参阅 步骤 2:将对 ElastiCache 的访问权限授予您的 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=AWS4-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:将对 ElastiCache 的访问权限授予您的 Amazon S3 存储桶,添加指定权限并重试导出备份的操作。

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

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

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

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

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

    解决方案:为存储桶的权限访问添加 Read

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

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