3
我想每次將對象上傳到S3時檢索一些我添加的元數據(使用控制檯x-amz-meta-my_variable)。使用AWS Lambda從AWS S3訪問元數據
我已經建立了拉姆達通過控制檯來觸發每一個對象被上傳到我的桶
我想知道如果我可以使用類似variable = event['Records'][0]['s3']['object']['my_variable']
來獲取這些數據,或者如果我要回連接到S3的時間與水桶和鑰匙,然後調用一些函數來檢索它?
下面是代碼:
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
我還沒有找到什麼被包括在發送給lambda函數S3事件的任何權威的文檔。我的建議是記錄事件,然後檢查日誌,看看你想要的信息是否包含在事件中。 – garnaat
有關S3事件包含的文檔可以在這裏找到:https://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html。這是一個恥辱,元數據不包括:( – tramwaj29