导出备份
Amazon ElastiCache 支持将 ElasticCache 备份导出到 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 区域的 Amazon S3 存储桶,才能将备份导出到 Amazon S3 存储桶。向 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 操作使用的更多信息,请参阅 ElastiCache 用户指南中的 适用于 Amazon ElastiCache 的 Identity and Access Management。
步骤 1:创建 Amazon S3 存储桶
以下过程使用 Amazon S3 控制台创建您可以在其中导出和存储 ElastiCache 备份的 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 存储桶的名称。
Amazon S3 存储桶的名称必须符合 DNS 标准。否则,ElastiCache 无法访问您的备份文件。DNS 合规性规则包括:
-
名称的长度必须为至少 3 个字符,且不能超过 63 个字符。
-
名称必须是由句点(.)分隔的一个或多个标签组成的系列,其中每个标签:
-
以小写字母或数字开头。
-
以小写字母或数字结尾。
-
仅包含小写字母、数字和短划线。
-
-
名称不能采用 IP 地址格式(例如 192.0.2.0)。
-
-
从Region(区域)列表中,选择 Amazon S3 存储桶的 Amazon 区域。此 Amazon 区域必须与要导出 ElastiCache 备份的 Amazon 区域为同一个区域。
-
选择 Create(创建)。
-
有关创建 Amazon S3 存储桶的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶。
步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限
为了使 ElastiCache 能够将快照复制到 Amazon S3 存储桶,您必须更新您的存储桶策略以授予 ElastiCache 对存储桶的访问权限。
警告
虽然复制到 Amazon S3 存储桶的备份已加密,但是对您的 Amazon S3 存储桶拥有访问权限的任何人都可以访问您的数据。因此,我们强烈建议您设置 IAM 策略来防止未经授权访问此 Amazon S3 存储桶。有关更多信息,请参阅《Amazon S3 用户指南》中的管理访问权限。
要创建 Amazon S3 存储桶的适当权限,请执行以下步骤。
向 ElastiCache 授予对 S3 存储桶的访问权限
-
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
选择要将备份复制到其中的 Amazon S3 存储桶的名称。这应该是您在步骤 1:创建 Amazon S3 存储桶中创建的 S3 存储桶。
-
选择 Permissions(权限)选项卡,然后在 Permissions(权限)下,选择 Access control list(ACL)[访问控制列表(ACL)],再选择 Edit(编辑)。
使用以下选项为被授权者添加规范 ID
540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353
:Objects: List, Write(对象:列出、写入)
Bucket ACL: Read, Write(存储桶 ACL:读取、写入)
注意
对于 GovCloud 区域,规范 ID 为
40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
。
选择 Save(保存)。
步骤 3:导出 ElastiCache 备份
现在您已经创建了 S3 存储桶并向 ElastiCache 授予了访问存储桶的权限。接下来,您可以使用 ElastiCache 控制台、Amazon CLI 或 ElastiCache API 将快照导出到存储桶。以下示例假设调用方的 IAM 身份拥有以下附加的 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:::*" }] }
默认情况下,在 2019 年 3 月 20 日之前推出的 Amazon 区域为已启用状态。您可以立即开始在这些 Amazon 区域中工作。2019 年 3 月 20 日之后推出的区域默认处于禁用状态,如亚太地区(香港)和中东(巴林)。您必须按照 Amazon Web Services 一般参考中的管理 Amazon 区域所述,先启用或选择加入这些区域,然后才能使用它们。
对于选择加入型区域,以下是 S3 存储桶的更新后策略具体形式的示例。[此示例使用亚太地区(香港)区域。]
{ "Version": "2012-10-17", "Id": "Policy15397346", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "elasticache.amazonaws.com" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::hkg-elasticache-backup", "arn:aws:s3:::hkg-elasticache-backup/*" ] }, { "Sid": "Stmt15399484", "Effect": "Allow", "Principal": { "Service": "ap-east-1.elasticache-snapshot.amazonaws.com" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::hkg-elasticache-backup", "arn:aws:s3:::hkg-elasticache-backup/*" ] } ] }
以下步骤使用 ElastiCache 控制台将备份导出到 Amazon S3 存储桶,以便从 ElastiCache 外部访问它。Amazon S3 存储桶必须与 ElastiCache 备份位于同一 Amazon 区域。
将 ElastiCache 备份导出到 Amazon S3 存储桶
-
登录 Amazon Web Services Management Console 并打开 ElastiCache 控制台(https://console.aws.amazon.com/elasticache/
)。 -
要查看您的备份列表,请从左侧导航窗格中,选择 Backups。
-
从备份列表中,选择要导出的备份名称左侧的复选框。
-
选择 Copy(复制)。
-
在 Create a Copy of the Backup?(创建备份副本?)中,执行以下操作:
-
在 New backup name 框中键入新备份的名称。
名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
ElastiCache 会向您在此处输入的值添加实例标识符和
.rdb
。例如,如果您输入my-exported-backup
,则 ElastiCache 会创建my-exported-backup-0001.rdb
。 -
从 Target S3 Location(目标 S3 位置)列表中,选择要将备份复制到其中的 Amazon S3 存储桶(您在 步骤 1:创建 Amazon S3 存储桶 中创建的存储桶)的名称。
目标 S3 位置必须是备份所在 Amazon 区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。
对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限。
-
选择 Copy(复制)。
-
注意
如果您的 S3 存储桶没有供 ElastiCache 将备份导出到其中所需的权限,则您会收到以下某个错误消息。返回到步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限,添加指定权限并重试导出备份的操作。
-
未授予 ElastiCache 在 S3 存储桶上的 READ 权限 %s。
解决方案:在存储桶上添加 Read 权限。
-
未授予 ElastiCache 在 S3 存储桶上的 WRITE 权限 %s。
解决方案:在存储桶上添加 Write 权限。
-
未授予 ElastiCache 在 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:为存储桶的权限访问添加 Read。
如果想要将您的备份复制到其他 Amazon 区域,请使用 Amazon S3 来复制备份。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的复制对象。
使用带有以下参数的 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 区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限。
以下操作将备份复制到 my-s3-bucket。
对于 Linux、macOS 或 Unix:
aws elasticache copy-snapshot \ --source-snapshot-name
automatic.my-redis-primary-2016-06-27-03-15
\ --target-snapshot-namemy-exported-backup
\ --target-bucketmy-s3-bucket
对于 Windows:
aws elasticache copy-snapshot ^ --source-snapshot-name
automatic.my-redis-primary-2016-06-27-03-15
^ --target-snapshot-namemy-exported-backup
^ --target-bucketmy-s3-bucket
注意
如果您的 S3 存储桶没有供 ElastiCache 将备份导出到其中所需的权限,则您会收到以下某个错误消息。返回到步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限,添加指定权限并重试导出备份的操作。
-
未授予 ElastiCache 在 S3 存储桶上的 READ 权限 %s。
解决方案:在存储桶上添加 Read 权限。
-
未授予 ElastiCache 在 S3 存储桶上的 WRITE 权限 %s。
解决方案:在存储桶上添加 Write 权限。
-
未授予 ElastiCache 在 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:为存储桶的权限访问添加 Read。
有关更多信息,请参阅 Amazon CLI 命令参考中的 copy-snapshot。
如果想要将您的备份复制到其他 Amazon 区域,请使用 Amazon S3 的复制操作。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的复制对象。
使用带有以下参数的 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 区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。对象访问 – Read(读取)和 Write(写入)。
权限访问 – 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=&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:授予 ElastiCache 对 Amazon S3 存储桶的访问权限,添加指定权限并重试导出备份的操作。
-
未授予 ElastiCache 在 S3 存储桶上的 READ 权限 %s。
解决方案:在存储桶上添加 Read 权限。
-
未授予 ElastiCache 在 S3 存储桶上的 WRITE 权限 %s。
解决方案:在存储桶上添加 Write 权限。
-
未授予 ElastiCache 在 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:为存储桶的权限访问添加 Read。
有关更多信息,请参阅 Amazon ElastiCache API 参考中的 CopySnapshot。
如果您要将备份复制到其他 Amazon 区域,请使用 Amazon S3 的复制操作将导出的备份复制到其他 Amazon 区域中的 Amazon S3 存储桶。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的复制对象。