要在AWS Athena中实现跨账号写入CTAS查询结果,您可以按照以下步骤操作:
创建源账号中的IAM角色:
AmazonAthenaFullAccess策略。在目标账号中创建IAM角色:
AmazonS3FullAccess策略。配置源账号中的Athena查询结果位置:
创建源账号中的数据库和表:
source_db。source_table。创建目标账号中的数据库和表:
target_db。target_table。在源账号中运行CTAS查询:
在源账号的Athena控制台中,转到“查询编辑器”。
使用以下示例代码运行CTAS查询,将查询结果写入目标账号中的表:
CREATE TABLE target_db.target_table
WITH (
format = 'PARQUET',
external_location = 's3://target-bucket/path/to/result/'
) AS
SELECT *
FROM source_db.source_table;
将target_db.target_table和s3://target-bucket/path/to/result/替换为目标账号中实际的数据库和表以及S3存储桶路径。
配置源账号中的IAM角色信任关系:
在源账号的IAM控制台中,编辑源账号的IAM角色。
添加以下信任关系,以允许目标账号中的IAM角色假定源账号中的IAM角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "目标账号中的IAM角色ARN"
},
"Action": "sts:AssumeRole"
}
]
}
将目标账号中的IAM角色ARN替换为目标账号中实际的IAM角色ARN。
在目标账号中运行查询:
在目标账号的Athena控制台中,转到“查询编辑器”。
使用以下示例代码运行查询,从源账号中的表读取数据:
SELECT *
FROM source_db.source_table;
将source_db.source_table替换为源账号中实际的数据库和表。
通过以上步骤,您可以实现在AWS Athena中跨账号写入CTAS查询结果。记住要根据您的实际情况修改和替换示例代码中的参数和值。