在 DynamoDB 的源账户创建一个 IAM role,并赋予该 role DAXReadOnlyAccess 和 AthenaSelectedDatabasesAccess 权限。
创建一个名为 Assume-DynamoDB-Role-Policy 的 IAM 信任策略,用于分析器账户允许访问 DynamoDB role。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{SOURCE_ACCOUNT}:root"
},
"Action": "sts:AssumeRole"
}
]
}
其中,{SOURCE_ACCOUNT} 是 DynamoDB 源账户的账户 ID。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{TARGET_ACCOUNT}:root"
},
"Action": "sts:AssumeRole"
}
]
}
其中,{TARGET_ACCOUNT} 是 Athena 目标账户的账户 ID。
然后,以 DynamoDB 源账户所拥有的 IAM role 身份登录到 Athena 目标账户。
在 Athena 中创建一个外部表并使用 DynamoDB 在 Athena 中访问的 IAM role:
CREATE EXTERNAL TABLE MyDynamoTable (
keycol string,
valuecol string
) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES (
"dynamodb