作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在单独的 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/
我是一名优秀的程序员,十分优秀!