从S3存储桶还原RDS的IAM策略不起作用

时间:2020-08-05 13:46:38

标签: amazon-web-services amazon-s3 amazon-rds

我正在尝试以镶木地板格式还原存储在S3中的快照。但是我得到了错误

”调用RestoreDBInstanceFromS3操作时发生错误(InvalidParameterValue):无法下载指定Amazon S3存储桶中的文件。确保您已经创建了允许Amazon RDS使用的AWS Identity and Access Management(IAM)角色为您访问Amazon S3。”

这是我创建的IAM策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ImportPolict",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject*",
                "s3:ListBucket",
                "s3:GetObject*",
                "s3:DeleteObject*",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ]
        }
    ]
}

在角色上配置的信任关系:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

这是我正在使用的命令:aws rds restore-db-instance-from-s3 --allocated-storage 150 --db-instance-identifier instanceName --db-instance-class db.t2.medium --engine mysql --master-username user --master-user-password password --s3-bucket-name bucket-name --s3-ingestion-role-arn arnToRole --source-engine mysql --source-engine-version 5.6.44

该用户有权访问S3存储桶,并且存储桶策略上未配置任何内容

1 个答案:

答案 0 :(得分:1)

如果您使用 KMS 加密存储桶或对象,则需要授予对 KMS 的访问权限。我创建了该政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}

并将其添加到我在恢复数据库时使用的角色。 请注意:该政策可能比要求的范围更广。