【发布时间】:2020-01-12 05:04:07
【问题描述】:
我找不到任何有关如何使用 CodeDeploy 操作设置 CodePipeline 的信息,该操作将 CloudFormation 堆栈部署的现有 lambda 的新版本部署到另一个 AWS 账户。 IE。跨账户部署,一个账户中的管道部署到开发、测试和生产中。
我想使用 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 和 aws cloudformation 命令或转向使用 CloudFormation。
CodeDeploy 需要什么输入工件来部署 lambda?
非常感谢!
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-cloudformation aws-code-deploy aws-codepipeline