我想創建一個 Lambda 函式,該函式是從在同一 CloudFormation 堆疊中創建的 S3 存盤桶觸發的,但無法獲得完全正確的語法。
僅當物件上傳到 時才應觸發該事件/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因為它為這個簡單的任務創建了一些輔助物件。我找不到適合我的情況的任何檔案或示例。
uj5u.com熱心網友回復:
該existing:true標志僅與在無服務器專案之外創建的 S3 存盤桶相關,對于已經存在的存盤桶,這里不是這種情況。
您面臨的情況是您無法使用典型的無服務器框架在 Lambda 事件觸發器中定義存盤桶的便利性,如下所示:
functions:
users:
handler: users.handler
events:
- s3:
bucket: photos
event: s3:ObjectRemoved:*
您不能使用該方法的原因是它創建了photos存盤桶并且不允許您提供額外的存盤桶配置,例如 CORS 或存盤桶策略。
對此的解決方案是在 S3 提供程式配置中創建 S3 存盤桶,使用 CORS 策略,然后從您的 Lambda 函式事件配置中參考該存盤桶。例如:
provider:
s3:
photosBucket:
name: photos
versioningConfiguration:
Status: Enabled
corsConfiguration:
CorsRules
- rule1 here
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362879.html
