AWS ElastiCache Redis跨账号迁移:集群配置与S3权限问题
解决方案:ElastiCache Redis跨账号迁移问题处理
一、控制台创建1节点0分片Redis集群
要创建非集群模式(0分片、单节点)的ElastiCache Redis集群,需在创建流程中明确选择非集群引擎:
- 进入ElastiCache控制台,点击「创建集群」
- 在「选择引擎」环节,选择Redis(非集群模式)(默认选项是「Redis(集群模式)」,会强制生成至少1分片)
- 后续配置选择「0个副本节点」、「非多AZ部署」,完成创建后即可得到1节点、0分片的目标集群
二、CLI创建时S3权限错误排查
针对No permission to access S3 object: mybucket/folder/file.rdb错误,按以下步骤逐一验证:
1. 修正Bucket Policy中的ElastiCache身份配置
ElastiCache访问S3需使用区域特定的规范ID而非服务端点,以eu-west-1区域为例,规范ID为c4c1ede66af54110b8e2c51971d30417(其他区域需参考AWS官方文档确认)。修改Bucket Policy的Stmt15399483语句:
{ "Sid": "Stmt15399483", "Effect": "Allow", "Principal": {"CanonicalUser": "c4c1ede66af54110b8e2c51971d30417"}, "Action": ["s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl"], "Resource": ["arn:aws:s3:::mybucket", "arn:aws:s3:::mybucket/*"] }
注:无需单独指定文件路径,
mybucket/*已覆盖所有对象
2. 确认S3桶与集群区域匹配
ElastiCache快照服务仅能访问同区域的S3桶,确保待创建的Staging集群与S3桶均处于eu-west-1区域
3. 调整S3桶的阻止公共访问设置
进入S3桶的「权限」标签,查看「阻止公共访问」:
- 若开启了「阻止所有公共访问」,需勾选「例外:允许来自AWS服务的访问」;或在确保桶内资源安全的前提下关闭该设置
4. 给RDB文件添加ACL权限
由于文件仅支持编辑ACL,需单独给目标RDB文件授予读取权限:
- 进入S3桶,找到
folder/file.rdb,点击「权限」>「编辑对象ACL」 - 添加权限:选择「Canonical user」,输入对应区域的ElastiCache规范ID,授予「读取」权限
5. 验证CLI命令与IAM用户权限
- 确认CLI命令参数正确,示例:
aws elasticache create-cache-cluster --cache-cluster-id staging-redis --engine redis --cache-node-type cache.t3.micro --num-cache-nodes 1 --s3-bucket mybucket --s3-key folder/file.rdb --region eu-west-1 - 检查执行CLI的IAM用户(
my-user)是否拥有elasticache:CreateCacheCluster权限,可通过IAM控制台的「权限模拟」功能验证
内容的提问来源于stack exchange,提问作者John Set
相关产品推荐
相关产品推荐

