Create Global secondary indexes update_table

def check_gsi(tablename, indexname, region):
    dynamoDB = boto3.client("dynamodb", region_name=region)
    table = dynamoDB.describe_table(TableName=tablename)["Table"]
    gsi = table.get("GlobalSecondaryIndexes", [])
    for g in gsi:
        if g["IndexName"] == indexname:
            print(f"--- Exists - Global Secondary Index {indexname} ---")
            return True
        else:
            return False
 
def create_gsi(tablename, indexname, region):
    if check_gsi(tablename, indexname, region):
       return
     
    dynamoDB = boto3.client("dynamodb", region_name=region)
 
    dynamoDB.update_table(
        TableName=tablename,
        AttributeDefinitions=[
            {"AttributeName": "gsi_pk", "AttributeType": "S"},
            {"AttributeName": "timestamp", "AttributeType":"N"},
        ],
        GlobalSecondaryIndexUpdates=[
            {
                "Create": {
                    "IndexName": "gsi_time_all",
                    "KeySchema": [
                        {"AttributeName": "gsi_pk", "KeyType": "HASH"},
                        {"AttributeName": "timestamp", "KeyType": "RANGE"},
                    ],
                    "Projection": {"ProjectionType": "ALL"} # The index contains all attributes from the base table item.
                }
            }
        ]
    )
    print(f"--- Added Global Secondary Index {indexname} ---")
dynamodb.put_item(
    TableName=TABLE_NAME,
    Item={
        "bucket_name": {"S": bucket_name},
        "timestamp": {"N": str(now_ms)},
        "total_size_bytes": {"N": str(total_size)},
        "gsi_pk": {"S": "ALL"},
    },
)