gpt4 book ai didi

amazon-s3 - CloudFormation 堆栈不会从 S3 上传触发 AWS Lambda

转载 作者:行者123 更新时间:2023-12-03 07:33:40 25 4
gpt4 key购买 nike

我正在使用 CloudFormation 部署堆栈,上传到现有 S3 存储桶和对象的文件会触发 Lambda 函数。堆栈部署没有错误,但在 UI 中未显示 S3 和 Lambda 资源之间的连接,因此无法发生触发。

我已经看过很多关于这个主题的帖子,所有帖子都与我需要的设置不同。另外,我还看到了!ImportValue的使用,如here所示,但是参数 Bucket 无法识别。

如前所述,S3 存储桶和对象已经存在,因此我需要以某种方式引用 template.yml 中已存在的资源。目前状态是:

      MyTrigger:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Ref LambdaModuleName
CodeUri: src/my_module
Handler: app.lambda_handler
Runtime: python3.9
MemorySize: 7500
Timeout: 600
ReservedConcurrentExecutions: 1

Policies:
- AWSLambdaExecute
- AWSLambdaVPCAccessExecutionRole
- Statement:
- Sid: StagingS3DeleteCreate
Effect: Allow
Action:
- s3:DeleteObject*
- s3:PutObject*
Resource:
- arn:aws:s3:::bucket1/folder1/folder2/*
- Sid: StagingS3List
Effect: Allow
Action:
- s3:List*
Resource:
- arn:aws:s3:::*

# Permissions
AllowS3ToCallLambdaPermission:
Type: AWS::Lambda::Permission
Properties:
Action: 'lambda:InvokeFunction'
FunctionName: !Ref MyTrigger
Principal: s3.amazonaws.com
SourceArn: arn:aws:s3:::bucket1/folder1/folder2/

我的问题是如何部署堆栈并引用此现有存储桶和对象,以便在文件上传时触发 Lambda?

更新

添加:

  StagingBucket:
Type: "AWS::S3::Bucket"
DeletionPolicy: Retain
Properties:
BucketName: !Ref S3SourceBucket

地点:

  S3SourceBucket:
Type: String
Default: "mybucket"

最佳答案

您已设置 IAM 权限,但并未实际启用通知。

S3 Bucket Notification Configuration是 S3 存储桶本身的属性。您将无法将其添加到不属于此堆栈的存储桶中。您可以通过 importing 修复此问题现有的 AWS::S3::Bucket 资源,使其成为堆栈的一部分并由堆栈管理。

将现有存储桶导入堆栈后,您可以设置其 LambdaConfiguration ,它告诉 S3 调用哪个 Lambda 以及何时调用。

关于amazon-s3 - CloudFormation 堆栈不会从 S3 上传触发 AWS Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72562284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com