DynamoDB のインデックスを使う際は権限不足に注意
DynamoDB の LSI (Local Secondary Index) / GSI (Global Secondary Index) を使ってクエリする際には、LSI / GSI に対しての許可も与える必要がある
意外にも、テーブルへの許可だけでは足りないので注意が必要です
具体的に言えば
arn:aws:dynamodb:ap-northeast-1:xxx:table/hogehoge の他に
arn:aws:dynamodb:ap-northeast-1:xxx:table/hogehoge/index/* に対しても許可を与える必要がある
/index/* でワイルドカードを使っているけど、テーブルで権限を切っているので、いんじゃなーい (いんじゃなーい)
ワイルドカードの代わりにインデックス名を使うのももちろんできます
気になる場合はインデックス名を明示しましょう
code:json
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"dynamodb:Query",
"dynamodb:GetItem",
"dynamodb:Scan"
],
"Resource": [
"arn:aws:dynamodb:ap-northeast-1:xxx:table/hogehoge",
"arn:aws:dynamodb:ap-northeast-1:xxx:table/hogehoge/index/*"
],
"Effect": "Allow"
}
]
}