簡體   English   中英

AWS lambda 與 S3 存儲桶的動態觸發器

[英]AWS lambda with dynamic trigger for S3 buckets

我有一個名為“archive_A”的 S3 存儲桶。 I have created a lambda function to retrieve meta data info for any object "creation" or "permanently delete" from S3 bucket as triggers to my lambda function (python) and insert the meta data collected into DynamoDB. 對於 S3 存儲桶 archive_A,我通過 GUI 在我的 lambda function 中手動添加了觸發器,一個用於“創建”,另一個用於“永久刪除”。

import boto3
from uuid import uuid4
def lambda_handler(event, context):
        s3 = boto3.client("s3")
        dynamodb = boto3.resource('dynamodb')
        for record in event['Records']:
                bucket_name = record['s3']['bucket']['name']
                object_key = record['s3']['object']['key']
                size = record['s3']['object'].get('size', -1)
                event_name = record ['eventName']
                event_time = record['eventTime']
                dynamoTable = dynamodb.Table('S3metadata')
                dynamoTable.put_item(
                          Item={'Resource_id': str(uuid4()), 'Bucket': bucket_name, 'Object': object_key,'Size': size, 'Event': event_name, 'EventTime': event_time})

將來可能會有更多的 S3 存儲桶,例如 archive_B、archive_C 等。在這種情況下,我必須繼續為每個 S3 存儲桶手動添加觸發器,這有點麻煩。

對於名稱為“archive_*”的 S3 存儲桶,是否有任何動態方式或向 lambda 添加觸發器,因此任何未來名稱為“archive_G”的 S3 存儲桶都將動態添加觸發器到 lambda。

請建議。 我對 AWS 也很陌生。 任何例子都會更容易理解。

沒有內置方法可以為新存儲桶自動添加觸發器。

您可能可以創建一個在CreateBucket上觸發並調用 AWS Lambda function 的Amazon EventBridge 規則,其中包含新存儲桶的詳細信息。

然后,Lambda function 可以通過編程方式在您現有的 Lambda ZC1C425268E68385D1AB5074C14A7 上添加觸發器。

Amazon EventBridge 規則

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM