6

我目前正在尝试将带有 MySQL 引擎的 AWS Aurora Serverless 中的 .csv 文件导出到 AWS S3。这在使用实例支持的 Aurora 时非常有效,但对于无服务器则不行。我按照文档中的说明为 S3 设置了 IAM 策略,并创建了一个对 S3 和 RDS 具有完全访问权限的 IAM 用户。无服务器使用的参数组在 LOAD DATA FROM S3 和 SELECT INTO OUTFILE S3 字段中具有 IAM 用户的 ARN。

我用来导出到 S3 的代码:

SELECT * FROM TABLE WHERE ID = '6838' INTO OUTFILE S3 's3://bucketname/file.csv';

我在这里阅读了文档:https ://docs.aws.amazon.com/de_de/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.SaveIntoS3.html

错误信息:Access denied; you need (at least one of) the SELECT INTO S3 privilege(s) for this operation

我希望 Aurora 无服务器能够像 Aurora with Instances 一样顺利加载。带有实例的 Aurora 正在使用为无服务器创建的 IAM 用户并且工作正常。

编辑: AWS Aurora Serverless 似乎不支持从 S3 导入或导出到 S3。(https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.limitations

4

3 回答 3

2

实际上,您只能将数据加载到 Aurora 集群而不是无服务器集群中,我遇到了同样的问题,也许您可​​以考虑将您的数据集成到 Amazon RDS MySQL 数据库中,然后让 lambda 将您的数据从 S3 注入到 RDS MySQL。

于 2020-01-16T13:12:42.147 回答
1

您是否完成了此步骤(假设您是从非主数据库帐户发出该语句):

发出 SELECT INTO OUTFILE S3 语句的数据库用户必须被授予 SELECT INTO S3 权限才能发出该语句。默认情况下,数据库集群的主用户名被授予 SELECT INTO S3 权限。您可以使用以下语句将权限授予其他用户。

GRANT SELECT INTO S3 ON *.* TO 'user'@'domain-or-ip-address'
于 2019-10-09T14:53:57.930 回答
0

如果您可以暂时将数据放在本地或 EC2 实例上,您可以分两步完成:

  1. 从数据库中提取数据:mysql --defaults-file=/path/to/.my.cnf -e "SELECT * FROM TABLE WHERE ID = '6838'" | tr '\t' ',' > /local/path/to/file.csv如果您可以使用制表符分隔的输出,则无需将其包含tr在管道中。

  2. 将文件复制到 S3:aws s3 cp /local/path/to/file.csv s3://bucketname/file.csv

参考

复制到 s3

使用 MySQL 选项文件

于 2020-01-27T18:22:17.933 回答