繁体   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