Cod*_*imp 5 deployment amazon-web-services continuous-integration amazon-cloudformation aws-cli
我需要将我的 CF 模板(GraphQL 架构、Lambda 源等)的一些文件存储到 S3 存储桶中,该存储桶也(希望)在同一模板中定义,因为这似乎是直接删除内容之外的唯一方法进入模板来做。我也在尝试提前考虑 CI/CD,如果检查这些文件并且 CI/CD 工具适当地移动它们会很好。
有没有办法将文件从模板复制到 S3?大多数人如何使用 CI/CD 做到这一点?
恐怕无法上传到从同一模板创建的存储桶。但是,如果存储桶是预先存在的,例如帐户范围的deployment
存储桶或其中一个cf-templates-...
存储桶,则您有一些选择。
使用Ansible playbook上传辅助文件,并在同一 playbook 中创建/更新 CloudFormation 堆栈。这是一种非常流行的 CI/CD 管道方法。在您的 Ansible 剧本中,您将看到如下内容:
tasks:
- name: "Upload files to s3://{{deployment_bucket}}/lambda/"
s3_sync:
bucket: "{{deployment_bucket}}"
file_root: lambda/
prefix: lambda/
permission: private
- name: "Create CloudFormation Stack"
cloudformation:
stack_name: "some-stack-name"
state: present
template: template.yml
template_parameters:
DeploymentS3Path: "s3://{{deployment_bucket}}/lambda/"
Run Code Online (Sandbox Code Playgroud)让我们将aws cloudformation package
文件压缩并上传到 S3,然后aws cloudformation deploy
创建并执行 CloudFormation 更改集。这又是一种非常流行的方法,与 CI/CD 配合良好。
然后,您可以在 CloudFormation 模板中引用本地文件,如下所示:
MyLambda:
Type: AWS::Lambda::Function
Properties:
Code: lambda/
Run Code Online (Sandbox Code Playgroud)
当aws cloudformation package
运行时,它将输出一个修改后的模板,并扩展了代码路径:
MyLambda:
Properties:
Code:
S3Bucket: cf-templates-1a2b3c4d5e6f-ap-southeast-2
S3Key: e24e45d4f5f2ab3c5d437659fa2246a7
Run Code Online (Sandbox Code Playgroud)
然后你就可以得到aws cloudformation deploy
这个扩展的模板。或者使用其他一些方法进行部署 - 模板已可供使用。
package
此/方法的美妙之处deploy
在于它可以为您处理本地文件到 S3 的上传。
在不同的项目中,我们在各种 CI/CD 管道中使用这两种方法,并且效果都很好。
希望有帮助:)
归档时间: |
|
查看次数: |
2406 次 |
最近记录: |