【问题标题】:Can AWS CodeDeploy do cross-account deployments for lambdas?AWS CodeDeploy 可以为 lambda 进行跨账户部署吗?
【发布时间】: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.ymlaws cloudformation 命令或转向使用 CloudFormation。

CodeDeploy 需要什么输入工件来部署 lambda?

非常感谢!

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cloudformation aws-code-deploy aws-codepipeline


    【解决方案1】:

    使用 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

    【讨论】:

    • 谢谢,我知道 Cloudformation 和 SAM,但是,我有兴趣了解 CodeDeploy 是否/如何能够像声称的那样完成这项工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2017-07-23
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多