Zugriff auf Meta-Daten von AWS S3, AWS Lambda
Möchte ich abrufen, einige meta-Daten, die ich Hinzugefügt (Konsole mit dem x-amz-meta-my_variable) jedes mal, wenn ich den upload ein Objekt S3.
Habe ich lambda über die Konsole auslösen, jedes mal, wenn ein Objekt hochgeladen wird mein Eimer
Frage ich mich, wenn ich so etwas wie variable = event['Records'][0]['s3']['object']['my_variable']
zum abrufen dieser Daten oder wenn ich die Verbindung zu S3 mit dem Eimer und-Taste und rufen dann eine Funktion, die es abrufen?
Unten ist der code:
from __future__ import print_function
import json
import urllib
import boto3
print('Loading function')
s3 = boto3.client('s3')
def lambda_handler(event, context):
# Get the object from the event and show its content type
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')
# variable = event['Records'][0]['s3']['object']['my_variable']
try:
response = s3.get_object(Bucket=bucket, Key=key)
# Call some function here?
print("CONTENT TYPE: " + response['ContentType'])
return response['ContentType']
except Exception as e:
print(e)
print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket))
raise e
- Ich habe nicht gefunden eine autorisierende Dokumentation, was genau enthalten ist, in S3-Veranstaltungen geschickt werden, um eine Lambda-Funktion. Mein Vorschlag wäre, das Ereignis zu protokollieren und überprüfen Sie dann die Protokolldatei, um zu sehen, wenn die Informationen, die Sie wollen, ist Bestandteil der Veranstaltung.
- Dokumentation über das, was enthalten ist in S3 Ereignisse können hier gefunden werden: docs.aws.amazon.com/AmazonS3/latest/dev/... . Es ist eine Schande, dass die Metadaten nicht enthalten 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Metadaten nicht im Ereignis, sondern in der Kopf-Objekt.
Code unten ein Codeausschnitt, um die Metadaten.
Ausgabe:
Cache-Control
Metadaten auf mein Objekt, nochresponse['Metadata']
leer ist. Gibt es einen link zu den docs auf den Sie verweisen?Können Sie die meta-Daten aus head-Objekt, wo Sie ein Objekt übergeben, welches enthält Eimer und Schlüssel:-
ZB : Unten ist ein code(in NodeJs), die Sie verwenden, um die meta-Daten, die verbunden war mit der pre-signedUrl während der Erzeugung von aws-sdk.