首页 文章

S3 Bucket中的AWS Lambda代码未更新

提问于
浏览
2

我正在使用cloudformation来创建我的lambda函数,其中包含启用了版本控制的S3Bucket中的代码 .

"MYLAMBDA": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "FunctionName": {
          "Fn::Sub": "My-Lambda-${StageName}"
        },
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "${S3BucketName}"
          },
          "S3Key": {
            "Fn::Sub": "${artifact}.zip"
          },
          "S3ObjectVersion": "1e8Oasedk6sDZu6y01tioj8X._tAl3N"
        },
        "Handler": "streams.lambda_handler",
        "Runtime": "python3.6",
        "Timeout": "300",
        "MemorySize": "512",
        "Role": {
          "Fn::GetAtt": [
            "LambdaExecutionRole",
            "Arn"
          ]
        }
      }
    }

lambda函数成功创建 . 当我将新的工件zip文件复制到s3bucket时,将使用新版本“S3ObjectVersion”字符串创建该文件的新版本 . 但lambda函数代码仍在使用旧版本 .

aws cloudformation的文档清楚地说明了以下内容

要更新源代码位于Amazon S3存储桶中的Lambda函数,必须通过更新S3Bucket,S3Key或S3ObjectVersion属性来触发更新 . 仅更新源代码不会更新该功能 .

是否有额外的触发事件,我需要创建以更新代码?

1 回答

  • 0

    我也遇到了同样的问题,我的代码是在S3桶中的Archive.zip,当我上传一个新的Archive.zip时,lambda根据新代码没有响应 .

    解决方法是再次将Archive.zip的S3位置链接粘贴到lambda的功能代码部分并再次保存 .

    How I figured out lambda was not taking new code?

    转到lambda函数 - >操作 - >导出函数 - >下载部署包,并检查代码是否实际上是您最近上传到S3的代码 .

相关问题