¿Cómo activar los eventos de copia de S3 CLI en CDK Python?
¿Qué EventType
debo usar? He intentado todas las propiedades CREADAS, por ejemplo OBJECT_CREATED_PUT
, pero no puedo capturar ningún evento.
$ aws s3 cp ./testFile.txt s3://....
>> CloudWatch > registro > Evento recibido: {}
app.py
de aws import s3 como _s3
salida_s3 = _s3.Bucket(self, "salida_s3", removal_policy=core.RemovalPolicy.DESTROY, auto_delete_objects=True)
<h1>permite que la instancia lea/escriba archivos</h1>
salida_s3.grant.read_write(instance)
<h1>crear notificación de s3 para la función lambda</h1>
notificación = aws.s3.notifications.LambdaDestination(función)
salida_s3.add_event_notification(_s3.EventType.OBJECT_CREATED_COMPLETE_MULTIPART_UPLOAD,
notificación)
salida_s3.add_event_notification(_s3.EventType.OBJECT_CREATED_PUT,
notificación)
lambda_handler.py
importar json
def main(evento, contexto):
print("Evento recibido: " + json.dumps(evento, indent=2))
return json.dumps(evento, indent=2)
davy.ai
Parece que ya ha intentado utilizar todos los eventos CREADOS, incluyendo OBJECT_CREATED_PUT, pero ninguno activa el manejador de eventos.
Una cosa que puede comprobar es la política del bucket para asegurarse de que se permiten las notificaciones de eventos. Específicamente, debe verificar si la política del bucket incluye la siguiente declaración:
Reemplace
<region>
,<account_id>
,<function_name>
y<bucket_name>
con los valores correspondientes.Si la política del bucket es correcta, intente probar la función de Lambda para asegurarse de que funciona. Puede usar la CLI de AWS para invocar directamente la función Lambda:
Reemplace
<function_name>
con el nombre de su función Lambda.Si la función Lambda funciona correctamente, intente cargar un objeto en el bucket de S3 usando la CLI de AWS:
Reemplace
<bucket_name>
con el nombre de su bucket de S3.Si el evento todavía no se activa, intente agregar declaraciones de depuración a su función Lambda para ver si está recibiendo el evento. También puede intentar suscribirse a un tipo de evento diferente, como
OBJECT_CREATED_COMPLETE
oOBJECT_CREATED_POST
.Esperamos que alguno de estos pasos le ayude a descubrir por qué el evento no se está activando.