首页 文章

无法使用boto3为lambda添加s3通知

提问于
浏览
6

我想使用boto3配置s3存储桶,以便每次在该存储桶中创建对象时调用AWS lambda . 这是我的代码:

s3 = ..boto3 resource
bucket_notification = s3.BucketNotification(bucket_name)
lambda_arn = .. arn for lambda

response = bucket_notification.put(
   NotificationConfiguration={'LambdaFunctionConfigurations': [
      {
                'LambdaFunctionArn': lambda_arn,
                'Events': [
                    's3:ObjectCreated:*'
                ],

      },
]})

我收到错误:

botocore.exceptions.ClientError:调用PutBucketNotificationConfiguration操作时发生错误(InvalidArgument):无法验证以下目标配置

1 回答

  • 6

    必须在lambda端添加权限才能允许S3调用lambda函数 . 请注意,如果使用AWS Lambda GUI手动创建事件源映射,然后删除事件源映射,则该权限仍然存在!所以你不会得到上述错误 .

    但是,如果从头开始然后尝试添加通知,则会发生上述错误 .

    权限通过以下方式添加:

    client = ...boto3 lambda client
     response = client.add_permission(
         FunctionName=lambda_name,
         StatementId='1',
         Action='lambda:InvokeFunction',
         Principal='s3.amazonaws.com',
         SourceArn=s3_arn,
         SourceAccount='66666666666'
     )
    

相关问题