我正在尝试从一个非AWS实例备份一个数据库,推送到S3,然后在一个RDS实例上恢复该数据库。我已经成功地使用服务器端加密将文件推送到S3,但是在试图恢复RDS实例上的上述数据库时,我遇到了一个问题。
这是我正在犯的错误:
对象元数据(x-amz-key)不完整,无法解密给定的S3对象.
下面是我使用(删除私有信息)将对象写入S3并在RDS上恢复的代码:
Powershell
Write-S3Object -BucketName my-S3-bucket -Key "my_test_database.bak" -File C:\somepath\my_test_database.bak -ServerSideEncryption aws:kms -ServerSideEncryptionKeyManagementServiceKeyId "abcde012-abcd-0123-ef89-9876543210cd" -ProfileName default
Server (在RDS实例上):
EXEC [msdb].[dbo].[rds_restore_database] @restore_db_name = 'my_test_database',
@S3_arn_to_restore_from = N'arn:aws:s3:::my-S3-bucket/my_test_database.bak',
@KMS_master_key_arn = N'arn:aws:kms:region:0123456789:key/abcde012-abcd-0123-ef89-9876543210cd';
我在想,在设置IAM或生成加密密钥时,我是否可能错过了什么。据我所知,我的推到S3和还原数据库的代码与AWS文档是相同的。
任何帮助都将不胜感激!
发布于 2018-07-11 18:47:59
对于存储在桶中的对象,AWS支持两种类型的加密:服务器端加密(SSE)和客户端加密(CSE)。如果计划使用加密的Server还原选项,则备份文件必须是客户端加密的。
在简单地将SQL备份上载到配置为存储桶的SSE的S3桶中时,尝试从该备份文件恢复将失败,AWS服务器实例将引发异常:“对象元数据(x-amz-key)不完整,无法解密给定的S3对象.”
https://stackoverflow.com/questions/51291577
复制相似问题