невозможно использовать триггер s3 для передачи объектов s3 в rds

#python #amazon-web-services #amazon-s3 #aws-lambda #boto3

Вопрос:

У меня есть приведенный ниже код функции лямбда, который переносит объекты из сегментов s3 в базу данных AWS RDS.

 import json
import boto3
import pymysql 

s3_client = boto3.client('s3')
def lambda_handler(event, context):

bucket_name = event["bucket"]
s3_file_name = event["object"]
resp = s3_client.get_object(Bucket=bucket_name, Key=s3_file_name)

data = resp['Body']
rds_endpoint  = ""
username =  #username for RDS Mysql
password =  # RDS Mysql password
db_name = # RDS MySQL DB name
conn = None
try:
    conn = pymysql.connect(host=rds_endpoint, user=username, password=password, database=db_name)
except pymysql.MySQLError as e:
    print("ERROR: Unexpected error: Could not connect to MySQL instance.")

try:
    cur = conn.cursor()
    cur.execute(#db stuff)
    conn.commit()
except Exception as e:
    print(e)
    return 'Table not created!'
    
with conn.cursor() as cur:
    try:
        cur.execute(#db stuff)
        conn.commit()
        output = cur.execute()
    except:
        output = ("Entry not inputted! Error!")
    
print("Deleting the csv file from s3 bucket")

return {
    'statusCode': 200,
    'body': 'Successfully uploaded!'
}
 

Приведенный выше код отлично работает с данным тестом.:

{ «ведро»: «python-ведро», «объект»: «бобмарли.mp3» }

Однако, когда я пытаюсь адаптировать его к корзине s3, изменив строки кода на следующие, как показано в этом руководстве: https://www.data-stats.com/s3-data-ingestion-to-rds-through-lambda/

 bucket_name = event["Records"][0]["s3"]["bucket"]["name"]
s3_file_name = event["Records"][0]["s3"]["object"]["key"]
 

Я получаю эту ошибку:

 [ERROR] TypeError: list indices must be integers or slices, not str
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 7, in lambda_handler
    bucket_name = event["Records"]["s3"]["bucket"]["name"]
 

Комментарии:

1. Распечатайте свой объект события, чтобы проверить его структуру

2. Где я смогу увидеть результат инструкции по печати? @Марцин

3. Журналы облачных наблюдений для вашей функции

4. Почему в вашей ошибке указано событие[«Записи»][«s3»][«ведро»][«имя, но ваш код другой. Эта ошибка не связана с вашим кодом, который вы опубликовали

5. Вы поставили индекс [0] после [«Записей»]?