DynamoDBのGSIに対してクエリをかける方法を調べたのでまとめます。
結論
dynamodb = boto3.Session(profile_name=profile_name).client("dynamodb")
response = dynamodb.query(
TableName="TABLE_NAME",
IndexName="INDEX_NAME",
KeyConditionExpression="index_key = :index_key",
ExpressionAttributeValues={":index_key": {"S": "00000000"}},
)
レスポンスはItemsをキーとしたオブジェクトが返ってきます。
{'Items':[{"index_key":{"S":"00000000"}, "primary_key":{"S":"pk1"},"sort_key":{"S":"sk1"}}],}
}
リクエストでもレスポンスでも型を(文字列型ならば"S"のように)指定をしなければいいけないというところで躓きました。
参考文献