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群集
至少对我来说,这些步骤就像一个魅力.
希望有所帮助!
如果唯一的错误是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 文件的前缀。您还可以指定一个清单文件,用于标识要加载的一个或多个文本文件。