gpt4 book ai didi

amazon-web-services - 如何在 2 个不同的 cloudformation 模板中创建 S3 和触发的 lambda

转载 作者:行者123 更新时间:2023-12-04 15:44:24 29 4
gpt4 key购买 nike

是否可以在单独的 CloudFormation 模板中创建 S3 存储桶和触发的 Lambda。我希望将长时间运行的资源堆栈与 Lambda 之类的资源堆栈分开,因为 Lambda 的更新非常频繁

当尝试单独创建 Lambda 时,它说 lambda 事件中定义的存储桶应该在同一模板中定义,并且不能被引用。

S3 events must reference an S3 bucket in the same template.

GetFileMetadata:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub '${targetenv}-lambdaname'
CodeUri: target-file-0.0.1-SNAPSHOT.jar
Handler: LambdaFunctionHandler::handleRequest
Runtime: java8
Timeout: 30
MemorySize: 512
Environment:
Variables:
STAGE: !Sub '${targetenv}'

Events:
S3Event:
Type: S3
Properties:
Bucket:
Ref: MyS3Bucket
Events:
- 's3:ObjectCreated:*'

MyS3Bucket:
Type: 'AWS::S3::Bucket'
DependsOn: BucketPermission
Properties:
BucketName: !Sub 'bucketname-${targetenv}'

最佳答案

2021 年 11 月 21 日,AWS 宣布 S3 Event Notifications with Amazon EventBridge 。因此,您可以部署一个具有已启用 EventBridge 集成的 S3 存储桶的堆栈,然后部署具有由特定存储桶的 EventBridge 事件触发的 Lambda 函数的第二个堆栈。

持久性堆栈:

AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: 'Stack with S3 bucket with EventBridge event notification enabled'

Parameters:
BucketName:
Type: String
Description: 'Name of the bucket to be created'

Resources:

S3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Ref BucketName
NotificationConfiguration:
EventBridgeConfiguration:
EventBridgeEnabled: true

# Alternatively shorthand config
# EventBridgeConfiguration: {}

应用程序堆栈:

AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Stack with Lambda for procesing S3 events via EventBridge

Parameters:
BucketName:
Type: String
Description: Name of the bucket to listen events from

Resources:
S3EventProcessor:
Type: AWS::Serverless::Function
Properties:
FunctionName: S3EventListener
Architectures:
- arm64
Runtime: nodejs14.x
Handler: index.handler
InlineCode: |
exports.handler = (event, context) => {
console.log('event:', JSON.stringify(event));
}
Events:
S3EventBridgeRule:
Type: EventBridgeRule
Properties:
Pattern:
source:
- aws.s3
detail:
bucket:
name:
- !Ref BucketName

通过配置 Pattern ,您可以过滤事件流以获取更具体的事件,例如对象创建对象删除、文件名、文件扩展名等。请在 EventBridge userguide 中查找更多信息。

关于amazon-web-services - 如何在 2 个不同的 cloudformation 模板中创建 S3 和触发的 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56503098/

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