我有一个脚本可以跨区域复制未加密和加密的快照。脚本在未加密的快照副本中正常工作但由于某种原因,加密副本失败并出现错误: -
An error occurred (InvalidParameterValue) when calling the CopyDBSnapshot operation: PreSignedUrl could not be authenticated.
这是我用来复制加密快照的代码
aws rds copy-db-snapshot
--source-db-snapshot-identifier $source_identifier \
--target-db-snapshot-identifier ${target_identifier} \
--kms-key-id $Enc_Key_ID\
--region $target_region
--source-region $source_region \
--tags Key="owner",Value="RDS Copy Job"
此处传递的所有变量(加密密钥除外)与跨区域的未加密副本一起正常工作。
我想知道出了什么问题。任何帮助和建议对我来说都是一个很大的帮助。 (更新)
aws rds copy-db-snapshot \
--source-db-snapshot-identifier arn:aws:rds:us-west-1:717934610271:snapshot:rds:rds-snapshot-name-dev-2017-12-22-08-08 \
--target-db-snapshot-identifier test-rds-snapshotname \
--kms-key-id XXXXXX-XXXXXX-XXXXXX-XXXXXX \
--region us-east-1\
--source-region us-west-1 \
--tags Key="owner",Value="RDS Copy Job"
上面是用于复制的完整命令。我正在使用ARN进行复制
指定在目标区域中有效的KMS密钥。
您可以复制使用AWS KMS加密密钥加密的快照。如果复制加密的快照,则还必须加密快照的副本。如果在同一AWS区域内复制加密快照,则可以使用与原始快照相同的KMS加密密钥加密副本,也可以指定其他KMS加密密钥。如果跨区域复制加密的快照,则不能使用与源快照使用的副本相同的KMS加密密钥,因为KMS密钥是特定于区域的。相反,您必须在目标AWS区域中指定有效的KMS密钥。
我发现在复制加密快照时需要提供--source-region
参数。这是工作的CLI命令 -
AWS_DEFAULT_REGION=ap-south-1
source_snapshot_arn="arn:aws:rds:ap-southeast-1:3621xxxx334:snapshot:v2db-snapshot-1"
dest_snapshot_id="v2db-snapshot-1"
aws rds copy-db-snapshot \
--kms-key-id db-prod-kms \
--source-region ap-southeast-1 \
--source-db-snapshot-identifier $source_snapshot_arn \
--target-db-snapshot-identifier $dest_snapshot_id
工作KMS关键政策 -
{
"Version": "2012-10-17",
"Id": "key-consolepolicy-3",
"Statement": [
{
"Sid": "Allow backup to use key",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::3621xxxx8334:user/backup"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey",
"kms:CreateGrant",
"kms:Create*",
"kms:Describe*",
"kms:List*",
"kms:Get*",
"kms:ImportKeyMaterial",
"kms:TagResource",
"kms:UntagResource"
],
"Resource": "*"
}
]
}