aws lambda-如果手动创建s3存储桶,如何使用cloudformation添加s3触发器

问题描述

我已经手动创建了s3存储桶“ myBucket”。

我需要一个带s3触发器的lambda函数

    "Parameters": {
      "HandlerCodeS3Bucket": {
        "Type": "String","Default": "myBucket"
      },},"Resources": {
      "uploadBannerToS3Handler": {
        "Type": "AWS::Lambda::Function","Properties": {
          "FunctionName": "uploadBannerToS3","Handler": "uploadBannerToS3.handler","Role": {
            "Fn::ImportValue": {
              "Fn::Sub": "${Rolesstack}-LambdaRoleArn"
            }
          },"Code": {
            "S3Bucket": {
              "Ref": "HandlerCodeS3Bucket"
            },"S3Key":"uploadBannerToS3.zip"
          },"Layers": [
            {
              "Ref": "MyLayer"
            }
          ],"Runtime": "nodejs12.x"
        }
      }
          ...
    }

如何修改代码以在函数添加s3触发器。

对于开发来说,如果我也以cloudformation形式构建s3存储桶,将来是否要构建UAT环境,是否更方便?
如果使用cloudformation,开发人员通常会如何处理s3?

解决方法

如果您手动创建了存储桶,则无法以尝试的方式在CloudFormation(CFN)中使用它。您要么必须将存储区的创建和管理工作留给CFN,要么如果您确实需要,可以import将现有存储区放入CFN。

我仍然需要手动将lambda zip文件手动上传到s3,

是的。 CFN将无法为您上传它,因为它无法访问您的本地工作站。但是AWS CLI具有诸如package之类的命令,可以使上传过程更容易。