当前位置: 首页 > 知识库问答 >
问题:

用于S3铲斗的AWS lambda动态触发器

乐正光誉
2023-03-14

我有一个名为“archive\u a”的S3 bucket。我创建了一个lambda函数,用于从S3 bucket中检索任何对象“创建”或“永久删除”的元数据信息,作为lambda函数(python)的触发器,并将收集的元数据插入DynamoDB。对于S3 bucket archive_A,我已经手动添加了触发器,一个用于“创建”,另一个用于通过GUI在lambda函数中“永久删除”。

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\u B、archive\u C等。在这种情况下,我必须继续为每个S3存储桶手动添加触发器,这有点麻烦。

对于名称为“archive_*”的S3存储桶,是否有任何动态方式或将触发器添加到lambda,因此任何名称为“archive_G”的未来S3存储桶都将动态添加触发器到lambda。

请提出建议。我对AWS也很陌生。任何例子都更容易遵循。

共有1个答案

苏淇
2023-03-14

没有内置的方法可以自动为新存储桶添加触发器。

您可能可以创建一个Amazon EventBridge规则,该规则在CreateBucket上触发并调用带有新存储桶详细信息的AWS Lambda函数。

然后,该Lambda函数可以通过编程方式在现有Lambda函数上添加触发器。

 类似资料:
  • 以下是具有自定义铲斗尺寸的直方图图表的示例。 我们已经在Google Charts Configuration Syntax一章中看到了用于绘制图表的配置 。 现在,让我们看一个具有自定义桶大小的直方图的示例。 配置 (Configurations) 我们使用bucketSize配置来更改直方图的默认桶大小。 options.setBucketSize(5); 例子 (Example) Hell

  • AWS S3 Web控制台列出了已删除的存储桶。选择桶并尝试清空或删除它会导致“清空桶”或“删除桶”模式确认按钮静默失败。 如果您单击桶并尝试上传文件,您会收到一条错误消息,“找不到错误数据”。如果您尝试创建一个文件夹,您会得到,“错误无法创建带名称的文件夹”。"如果尝试更改和属性、权限或管理,也会收到错误消息。 如果您尝试使用相同的名称创建一个bucket(可能是为了覆盖旧的bucket),则会

  • 我创建了一个组,我添加了新用户到这个组,然后我创建了以下IAM策略: 我从以下方面获得上述政策: http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html 基本上,我想为一个特定的桶开通权限,但是上面的策略不起作用。用户仍然可以从其他存储桶中添加、删除、修改文件。 谢谢!

  • 问题内容: 如何设置Jenkins作业以触发在变量/参数中动态定义的作业? 我的问题的伪代码: 生成操作“触发/调用在其他项目上生成”以及生成后操作“参数化触发器插件”和“生成其他项目”不允许在参数中定义作业名称。 我似乎没有将GroovyAxis插件与Build多重配置项目一起使用。常规代码似乎不在作业构建环境中运行,而是在作业配置保存期间运行。 我了解您可以通过脚本通过其build-start

  • 一组六个广义密度: 从每个手机显示的 wiki 页面 按比例缩小到桶中,即如果ppi为300,将进入hdpi桶,因为它小于320? 这是计算屏幕尺寸桶的正确方法吗? 我问的原因是因为我创建了以下值目录资源: 在< code>dimens.xml中,我有不同的边距,并根据桶的大小设置dp,即 我很想知道这是否是正确的方法。

  • 在我的GCP项目中,我有为spring boot托管docker容器的MIG。目前,来自spring boot应用程序的日志驻留在容器中,要访问这些日志,我必须运行以下命令。 我需要从容器中提取日志并将其导出到 GCS 存储桶。 在GCP有没有任何内置的解决方案,或者我是否需要在虚拟机中安装fluentd,并使用它将容器日志导出到GCS Bucket?