gpt4 book ai didi

amazon-web-services - 无服务器框架 : S3 Lambda Trigger with bucket from resources

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

我想创建一个从同一 CloudFormation 堆栈中创建的 S3 存储桶触发的 Lambda 函数,但语法无法完全正确。

仅当对象上传到 /uploads 时才应触发该事件。我还需要指定一些存储桶属性 (CORS)。

资源中的 S3 存储桶定义

resources:
Resources:
myBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-bucket
# CORS properties...

函数定义中的事件:

events:
- s3:
bucket: myBucket
event: s3:ObjectCreated:Put
rules:
- prefix: uploads/

我不想使用 existing: true 因为它会为这个简单的任务创建一些辅助对象。我找不到任何适合我的情况的文档或示例。

最佳答案

existing:true 标志仅与在无服务器项目外部创建的 S3 存储桶相关,对于已经存在的存储桶,此处情况并非如此。

您面临的情况是,您无法使用在 Lambda 事件触发器中定义存储桶的典型无服务器框架便利性,如下所示:

functions:
users:
handler: users.handler
events:
- s3:
bucket: photos
event: s3:ObjectRemoved:*

您无法使用该方法的原因是它创建了 photos 存储桶,并且不允许您提供额外的存储桶配置,例如CORS 或存储桶策略。

解决方案是在 S3 提供商配置中使用 CORS 策略创建 S3 存储桶,然后从 Lambda 函数事件配置中引用该存储桶。例如:

provider:
s3:
photosBucket:
name: photos
versioningConfiguration:
Status: Enabled
corsConfiguration:
CorsRules
- rule1 here

关于amazon-web-services - 无服务器框架 : S3 Lambda Trigger with bucket from resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70059531/

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