Amazon Aurora 1.8从S3加载数据 - 无法实例化S3客户端

aar*_*bor 9 amazon-s3 amazon-web-services amazon-rds amazon-aurora aws-rds

使用最新的Aurora更新(1.8),LOAD DATA FROM S3引入了该命令.有没有人得到这个工作?升级到1.8之后,我按照设置指南在此处创建角色以允许从RDS访问S3.

重新启动服务器并尝试运行命令后

LOAD DATA FROM S3 PREFIX 's3://<bucket_name>/prefix' INTO TABLE table_name
Run Code Online (Sandbox Code Playgroud)

在SQL Workbench/J中,我得到错误:

Warnings:
S3 API returned error: Missing Credentials: Cannot instantiate S3 Client
S3 API returned error: Failed to instantiate S3 Client
Internal error: Unable to initialize S3Stream
Run Code Online (Sandbox Code Playgroud)

是否还需要其他步骤?我可以只从SDK运行吗?我没有在文件中的任何地方看到这一点

小智 27

我遇到过同样的问题.我尝试将AmazonS3FullAccess添加到我的RDS实例正在使用的IAM角色中......没有快乐.

在四处寻找之后,我进入了RDS控制台,进入了Clusters.选中我的Aurora集群,然后单击Manage IAM Roles.它给了我一个下拉列表,我选择了IAM角色(个别实例使用的角色).

一旦我这样做,一切都很好,数据负载很好,速度很快.

所以,(对我们来说)有5个步骤/组件:

1)允许用户上传对象的S3桶和桶策略

{
    "Version": "2012-10-17",
    "Id": "Policy1453918146601",
    "Statement": [
        {
            "Sid": "Stmt1453917898368",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<account id>:<user/group/role>/<IAM User/Group/Role>"
            },
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::<bucket name>/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

"Principal"将是IAM用户,组或角色将数据文件上载到存储桶的任何内容,以便RDS实例可以导入数据.

2)IAM政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1486490368000",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::<bucket name>/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

使用策略生成器非常简单.

3)创建IAM角色:

应为此角色分配上述IAM策略.如果您不打算将此策略用于其他角色,您也可以执行内联策略,但我喜欢有一个定义的策略的想法,如果我有需要,我可以稍后参考.

4)配置一个参数组,您的集群/实例将使用该参数组将aws_default_s3_role值设置为上面#3中角色的ARN.

5)通过转到群集,选择群集,选择管理IAM角色并为数据库群集设置IAM角色来配置Aurora群集

至少对我来说,这些步骤就像一个魅力.

希望有所帮助!


enh*_*nic 5

如果唯一的错误是Internal error: Unable to initialize S3Stream并立即抛出此错误,则可能的罪魁祸首是:

该路径包括以下值:

  • region (optional) – 包含要从中加载的 Amazon S3 存储桶的 AWS 区域。该值是可选的。如果您未指定区域值,则 Aurora 会从与您的数据库集群位于同一区域的 Amazon S3 加载您的文件。
  • bucket-name – 包含要加载的数据的 Amazon S3 存储桶的名称。支持标识虚拟文件夹路径的对象前缀。
  • file-name-or-prefix – Amazon S3 文本文件或 XML 文件的名称,或者标识要加载的一个或多个文本或 XML 文件的前缀。您还可以指定一个清单文件,用于标识要加载的一个或多个文本文件。