amazon-web-services - AWS CodeDeploy 可以为 lambda 进行跨账户部署吗?
问题描述
我找不到任何信息如何使用 CodeDeploy 操作设置 CodePipeline,该操作将 CloudFormation 堆栈部署的现有 lambda 的新版本部署到另一个 AWS 账户中。即跨账户部署与管道在一个账户中部署到开发、测试和生产。
我想使用 CodeDeploy,因为我希望这可以简单地部署现有的 lambda,无论是否在堆栈中。这是正确的假设吗?
是否可以使用 CodeDeploy 部署 lambda 跨账户?
我做了什么
我已经用这样的管道进行了测试:
DeployApplication:
Type: AWS::CodeDeploy::Application
Properties:
ComputePlatform: Lambda
LambdaDeploymentGroup:
Type: AWS::CodeDeploy::DeploymentGroup
Properties:
ApplicationName: !Ref DeployApplication
ServiceRoleArn: !ImportValue delivery-pipeline-foundation-codedeploy-role
DeploymentStyle:
DeploymentOption: WITH_TRAFFIC_CONTROL
DeploymentType: BLUE_GREEN
...并具有这样的阶段/动作:
- Name: Deploy_to_Dev
Actions:
- Name: CreateChangeSet
ActionTypeId:
Category: Deploy
Owner: AWS
Provider: CodeDeploy
Version: 1
Configuration:
ApplicationName: !Ref DeployApplication
DeploymentGroupName: !Ref LambdaDeploymentGroup
InputArtifacts:
- Name: !Sub ${AWS::StackName}-build-output
RunOrder: 1
问题 1
第一个问题是我不知道如何设置跨账户部署的权限!当使用具有三个权限级别的 CloudFormation 时,我知道如何做到这一点:CodePipeline、Stage/action 和 CloudFormation,其中最后一个在目标帐户中,而两个在管道帐户中第一个。
对于具有 CodePipeline 和 CodeDeploy 的管道帐户,他们似乎需要该帐户中的角色,而不是目标帐户中的角色。要部署一个显然必须具有在该帐户中部署的权限。
如何设置 CodeDeploy 部署 lambda 跨账户的权限?
问题 2
另一个问题是我不知道 CodeDeploy 究竟需要什么作为工件才能运行。我已经在网上阅读了各种内容,但似乎没有人知道,并且混合使用buildspec.yml
withaws cloudformation
命令或转向使用 CloudFormation。
CodeDeploy 需要什么输入工件来部署 lambda?
非常感谢!
解决方案
使用 CodePipeline 部署 Lambda - 首选方法是使用 CloudFormation 作为部署提供程序而不是 CodeDeploy 服务,因为关于 CodeDeploy 服务如何接受 appspec 文件存在一些悬而未决的问题(Codepipeline 压缩工件,而 CD 需要解压缩的 appspec 文件)
推荐的方法如下定义: https ://docs.aws.amazon.com/lambda/latest/dg/build-pipeline.html
CloudFormation 支持跨账户操作,因此它应该可以很好地服务于您的用例。此处的详细信息: https ://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create-cross-account.html
推荐阅读
- flutter - 如何在 Flutter 中更改主题?
- angular - 将 eventEmitter 传递给自定义 Angular Material 组件
- wordpress - WPGraphql 错误:Gridsome 中的未知类型“用户”
- image - 如何在没有 Adobe Acrobat 的情况下在 2021 年创建高质量的 PDF?
- julia - 在 slurm 集群中的 julia 上安装软件包的权限
- php - Wordpress - 未指定 id 字段时 get_the_author_meta() 不起作用
- android - 如何永久隐藏回收视图项目
- java - 如何有效地迭代固定的三维矩阵(java)
- r - 更新到最新的 Rstudio 版本后 ggplot 出现致命错误
- javascript - 需要更改 javascript 以链接到我的按钮,但让按钮从 RESTapi 获取小部件