【问题标题】:AWS Cloudformation package wont update codeAWS Cloudformation 包不会更新代码
【发布时间】:2022-01-04 18:34:55
【问题描述】:

我有这个问题: 我已经使用 CF 部署了一个使用 aws cloudformation package 命令构建的函数。第一次部署完美。但是当它尝试更新代码时,什么也没有发生。我就是这样做的:

  • 保存对我的本地代码和 CF 的更改并运行 aws cloudformation package (aws cloudformation package --template-file mycf.yml --s3-bucket mybucket --output-template-file packaged-mycf.yml --profile我的个人资料)
  • 我在打包的文件中看到 CodeUri 下的新路径在哪里(CodeUri:s3://mybucket/319bd03cb3cc8d50ceb80e52bf51c53c)
  • 我部署更新(我在控制台中执行)我在更新下看到功能更新在哪里
  • CF 事件表明功能更新已完成
  • 我去代码,同样的旧代码没有任何改变

其他人有同样的经历吗? 我曾尝试重命名 CF 文件、脚本文件和打包的 CF 文件。但它仍然得到相同的结果。 这里有人知道我可以尝试什么吗?

CF 的未打包函数部分如下所示:

  CRFunction:
    Type: AWS::Serverless::Function
    Properties:
      Description: Convert IAM Policy into SCP
      Handler: scpfunction.lambda_handler
      Runtime: python3.9
      Timeout: 30
      MemorySize: 128
      FunctionName: !Sub SCP-Function-${SCPName}
      CodeUri: src/
      Environment:
        Variables:
          SCPName: !Ref SCPName
          Policy: !Ref IAMPolicyToConvertToSCP
          OUs: !Ref OUs
          Description: !Ref Description
      Policies:
        Statement:
          - Effect: Allow
            Action:
              - organizations:CreatePolicy
              - organizations:AttachPolicy
              - organizations:List*
              - iam:get*
            Resource: '*'

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-cli


    【解决方案1】:

    其他人有同样的经历吗?

    这就是它的设计方式。未检测到对源代码的更改。您必须在 CloudFormation 模板中更改 KeyVersion 才能部署新代码。

    更新

    s3://mybucket/319bd03cb3cc8d50ceb80e52bf51c53c 只是您的功能代码,而不是模板。要使用 s3://mybucket/319bd03cb3cc8d50ceb80e52bf51c53c 更新您的函数,您必须使用 AWS Lambda 控制台的 Amazon S3 location

    【讨论】:

    • 当您在本地对脚本文件进行更改并将其打包时,package 命令会创建一个新的 zip 文件,并且打包的 CF 会引用新的 zip。新的 zip 文件有一个新名称(我认为是一个完全随机的名称)。所以正如我所说,我检查了 CodeUri 指向新文件/新密钥。
    • @ErikAsplund 它必须是 S3 中的新密钥,而不是 zip 文件的本地名称。
    • 那么 package 命令会以新的 zip 文件名将 zip 文件上传到 s3,并且该名称是新打包的 CF 文件中引用的名称。当您在本地对代码进行更改时,打包的命令会将新文件推送到 s3 并引用该新文件。
    • @ErikAsplund 我建议使用您的模板更新问题,也许还可以使用您使用的屏幕截图和其他代码 (AWS CLI)。换句话说,任何人如何复制并粘贴您的代码来重现该问题?
    • 我按照建议编辑问题。但我不认为需要共享代码,因为它只是您使用的简单的 hello world 代码。
    【解决方案2】:

    我解决了这个问题。 这不是与 AWS 相关的问题。 重新启动 VisualStudioCode 后,我得到了部署工作。所以它与一些本地缓存或其他东西有关。 真的很奇怪,以前从未经历过这样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 2020-06-03
      • 2017-08-03
      • 1970-01-01
      • 2020-01-26
      • 2022-07-28
      相关资源
      最近更新 更多