Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

381
Visualizações
Función AWS Lambda python para analizar json de S3 y almacenar en DynamoDB

Estoy tratando de escribir una función lambda que se activa cada vez que se carga un archivo json en un depósito s3. Se supone que la función analiza el archivo y lo almacena inmediatamente en DynamoDB. Creé una tabla llamada 'datos' con la clave principal establecida como 'fecha'. Esto es lo que tengo para la función hasta ahora:

 import boto3 import json s3_client = boto3.client('s3') dynamodb = boto3.resource('dynamodb') def lambda_handler(event, context): bucket = event['Records'][0]['s3']['bucket']['name'] json_file_name = event['Records'][0]['s3']['object']['key'] json_object = s3.Bucket(bucket).Object(json_file_name) jsonFileReader = json_object['Body'].read() jsonDict = json.loads(jsonFileReader) table = dynamodb.Table('data') table.put_item(Item = jsonDict)

Aquí hay un ejemplo de un archivo json que estoy tratando de usar:

 { "date": "2020-06-07 21:00:34.284421", "ConfirmedCases": 7062067, "ActiveCases": 3206573, "RecoveredCases": 3450965, "Deaths": 404529 }

Desafortunadamente, cada vez que pruebo el código, arroja este error:

 [[ERROR] TypeError: string indices must be integers Traceback (most recent call last): File "/var/task/lambda_function.py", line 7, in lambda_handler bucket = event'Records'][0]['s3']['bucket']['name']]

Alguien sabe cómo resolver este problema? He perdido tanto tiempo tratando de resolver esto y todavía no puedo :/

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Su error es de cualquiera de estas líneas.

 bucket = event['Records'][0]['s3']['bucket']['name'] json_file_name = event['Records'][0]['s3']['object']['key']

Sin embargo, son correctos . Esta es la forma válida de acceder al nombre del depósito y la clave del objeto desde el evento generado por las notificaciones de S3.

Me parece que otra cosa es activar tu función . O usa la opción Test en la consola y proporciona un objeto de event incorrecto, o hay algún otro evento que activa la lambda con un evento que no es S3.

Como solución rápida, puede hacer lo siguiente. El siguiente código terminará si el objeto del event no contiene Records :

 def lambda_handler(event, context): if 'Records' not in event: print(event) # good to check what event you get return # and the rest of code
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda