PythonでDynamoDBのテーブルをGSIで検索する
DynamoDBのテーブルに対して、インデックス(GSI)を使って検索するためのスクリプトをPythonで書いたので、ザクっとメモっておく。
import sys import boto3 from boto3.session import Session from boto3.dynamodb.conditions import Key, Attr # Search List id_list = ['29311b1e-360eedfe8098', '22ff8c79-e14ccf5800fe', '29311b1e-360eedfe8098' ] # Argument args = sys.argv # AWS CLI Credential session = Session(profile_name=args[1]) credentials = session.get_credentials() # DynamoDB Session dynamodb = boto3.resource( 'dynamodb', region_name='ap-northeast-1', aws_access_key_id=credentials.access_key, aws_secret_access_key=credentials.secret_key, aws_session_token=credentials.token ) DYNAMO_TABLE_NAME = 'UserInfo' TABLE = dynamodb.Table(DYNAMO_TABLE_NAME) ret_data = "" # Search List loop for id_item in id_list: # GSI Search response = TABLE.query( IndexName='UserIndex', KeyConditionExpression=Key('ID').eq(id_item), FilterExpression=Attr('Authority').eq(3)) # Count Check if response['Count'] > 0: for items in response['Items']: ret_data += '"' + items['ID'] + '","' + items['MailAddress'] + '"\n' else: print(id_item, ' --None--') print(ret_data)