#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] после [«Записей»]?