从 S3 存储桶恢复 RDS 的 IAM 策略不起作用

Gui*_*den 3 amazon-s3 amazon-web-services amazon-rds

我正在尝试恢复存储在 S3 中的 parquet 格式的快照。但我收到错误

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

这是我创建的 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/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

角色上配置的信任关系:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的命令: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 存储桶,并且存储桶策略上未配置任何内容

nby*_*vuz 7

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

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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