aws-lambda
aws-lambda déclenché par S3
Recherche…
Syntaxe
- Objet basé sur JSON désérialisé
- La touche "Records" a un ou plusieurs événements réels
- Chaque objet sous-événement contient toutes les informations nécessaires pour déterminer ce qui a changé
Paramètres
Paramètre | Détails |
---|---|
Records -> [] -> s3 -> bucket -> name | Le nom du seau S3 |
Records -> [] -> s3 -> object -> key | Le chemin et le nom du fichier. |
Remarques
Noms de fichiers
Contrairement à la plupart des chemins de fichiers, le nom de la clé S3 (schéma JSON: $.Records[0].s3.object.key
) n'inclut pas de barre oblique. Donc, si vous avez un fichier dans le chemin s3://mybucket/path/file.txt
, la clé sera path/file.txt
Au moins en Python, la valeur du champ clé est l'URL UTF-8 codée. Cela se remarque lorsque le nom de fichier contient des espaces ou des caractères non ascii. Le champ doit être décodé par URL, puis décodé par UTF-8 - Voir Obtenir un nom de fichier non-ASCII à partir de l'événement de notification S3 dans Lambda
Clé d'enregistrement
Il est possible d'avoir plusieurs actions identiques (ou différentes) à l'intérieur de la clé "Records"
de l'événement; toutefois, en pratique, vous verrez généralement un événement par invocation de votre fonction Lambda.
Plus d'exemples et d'essais
Il existe en réalité des exemples d’événements dans la console Lambda, si vous choisissez Actions -> Configurer l’événement de test. Cependant, vous pouvez voir l'opération PUT dans les exemples ci-dessus.
Vous pouvez modifier et soumettre des événements de test à partir de la console AWS Lambda pour voir comment votre fonction répond.
Opération S3 PUT
{
"Records": [
{
"eventVersion": "2.0",
"eventTime": "1970-01-01T00:00:00.000Z",
"requestParameters": {
"sourceIPAddress": "127.0.0.1"
},
"s3": {
"configurationId": "testConfigRule",
"object": {
"eTag": "0123456789abcdef0123456789abcdef",
"sequencer": "0A1B2C3D4E5F678901",
"key": "HappyFace.jpg",
"size": 1024
},
"bucket": {
"arn": "arn:aws:s3:::mybucket",
"name": "sourcebucket",
"ownerIdentity": {
"principalId": "EXAMPLE"
}
},
"s3SchemaVersion": "1.0"
},
"responseElements": {
"x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH",
"x-amz-request-id": "EXAMPLE123456789"
},
"awsRegion": "us-east-1",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "EXAMPLE"
},
"eventSource": "aws:s3"
}
]
}