AWS CLI中跨区域的加密RDS复制失败

问题描述 投票:2回答:2

我有一个脚本可以跨区域复制未加密和加密的快照。脚本在未加密的快照副本中正常工作但由于某种原因,加密副本失败并出现错误: -

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进行复制

amazon-web-services encryption amazon-rds boto3 aws-cli
2个回答
3
投票

指定在目标区域中有效的KMS密钥。

您可以复制使用AWS KMS加密密钥加密的快照。如果复制加密的快照,则还必须加密快照的副本。如果在同一AWS区域内复制加密快照,则可以使用与原始快照相同的KMS加密密钥加密副本,也可以指定其他KMS加密密钥。如果跨区域复制加密的快照,则不能使用与源快照使用的副本相同的KMS加密密钥,因为KMS密钥是特定于区域的。相反,您必须在目标AWS区域中指定有效的KMS密钥。

Handling Encryption


0
投票

我发现在复制加密快照时需要提供--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": "*"
        }
     ]
   }
© www.soinside.com 2019 - 2024. All rights reserved.