为何迁移EC2 Redis至AWS ElastiCache需禁用加密?如何加密迁移?
迁移失败原因
- 源Redis未匹配加密配置:EC2上的默认Redis未启用传输加密(TLS)和静态加密,而启用双加密的ElastiCache集群要求迁移过程通过加密通道传输数据,且仅接收加密后的静态数据。源Redis既无法提供TLS连接,也无加密的静态数据,导致迁移工具无法完成数据传输与写入。
- 权限与密钥配置缺失:静态加密的ElastiCache依赖KMS密钥加密数据,若EC2实例的IAM角色无该密钥的
kms:Encrypt/Decrypt/GenerateDataKey权限,迁移时无法将源数据加密写入目标集群;此外,安全组若未放行加密端口流量,也会导致连接失败。 - 迁移参数未适配加密要求:开启传输加密的ElastiCache要求迁移请求用TLS连接源Redis,但首次迁移时未配置源Redis的TLS端口、证书等参数,导致迁移工具无法建立加密连接。
带加密的迁移实现步骤
1. 给源Redis启用传输加密(TLS)
- 修改EC2上的Redis配置文件(通常为
redis.conf),添加以下配置:port 0 # 禁用非TLS端口 tls-port 6379 # 启用TLS端口 tls-cert-file /path/to/server.crt tls-key-file /path/to/server.key tls-ca-cert-file /path/to/ca.crt - 重启Redis服务,验证TLS端口可正常连接。
2. 配置KMS权限与安全组
- 若使用自定义KMS密钥,给EC2实例的IAM角色添加该密钥的
kms:Encrypt、kms:Decrypt、kms:GenerateDataKey权限;使用AWS管理密钥则默认权限通常足够,需确认无额外限制。 - 调整安全组:ElastiCache集群的安全组允许EC2实例IP访问其加密端口(默认6379);EC2的安全组允许出站到ElastiCache集群的端口。
3. 创建加密ElastiCache集群并启动迁移
- 创建ElastiCache Redis集群时,开启Encryption at rest(选择对应KMS密钥)和Encryption in transit(启用TLS)。
- 配置迁移任务时,指定源Redis的TLS端口,上传CA证书(自签名证书需此步骤);确保迁移任务的IAM角色拥有读取源Redis、写入目标集群的权限。
4. 验证迁移结果
- 通过ElastiCache控制台监控迁移状态,完成后检查目标集群的数据完整性,确认所有数据已迁移成功。
内容的提问来源于stack exchange,提问作者Ahmed Hussain Shaikh
相关产品推荐
相关产品推荐

