我有这个问题: 我已经使用 CF 部署了一个使用 aws cloudformation package 命令构建的函数。第一次部署工作完美。但是当它尝试更新代码时什么也没有发生。这就是我所做的:
- 保存对本地代码和 CF 的更改并运行 aws cloudformation 包 (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: '*'
最佳答案
Have anyone else experienced the same?
这就是它的设计原理。未检测到对源代码的更改。您必须更改 Key或Version在您的 CloudFormation 模板中部署新代码。
更新
s3://mybucket/319bd03cb3cc8d50ceb80e52bf51c53c
只是您的函数代码,而不是模板。要使用 s3://mybucket/319bd03cb3cc8d50ceb80e52bf51c53c
更新您的函数,您必须使用 AWS Lambda 控制台的 Amazon S3 位置
:
关于amazon-web-services - AWS Cloudformation 包不会更新代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70575256/