【问题标题】:Create one empty cdk pipeline to deploy any lambda code创建一个空的 cdk 管道来部署任何 lambda 代码
【发布时间】:2021-09-12 03:16:36
【问题描述】:

我们可以创建一个简单的 cdk 管道,它可以自我更新管道,如 (here) 所示 但是对于部署和更新 lambda 代码的许多微服务,只有一个管道。 这可能吗。这样我们就不必为每个微服务创建管道。

【问题讨论】:

    标签: amazon-web-services aws-lambda microservices aws-cdk aws-codepipeline


    【解决方案1】:

    如果微服务不在同一个仓库中,我可能不会推荐它。可以添加额外的源阶段,但我不能说当有多个 repos 时管道是如何触发的。

    如果微服务在同一个仓库中,你当然可以这样做。代码的结构取决于您。您可以将每个微服务的所有资源分组到一个堆栈中,然后有一个阶段来部署每个微服务堆栈。

    var pipeline = new CdkPipeline(this, "Test", new CdkPipelineProps());
    
    pipeline.AddApplicationStage(new AllMicroservicesStage(this, "Test", new StageProps()));
    
    
    class AllMicroservicesStage : Stage
    {
      var ms1 = new Microservice1Stack();
    
      var ms2 = new Microservice2Stack();
    
      ...
    }
    
    

    或者将每个微服务分离为一个 Stage,每个微服务中都有一个 Stacks 集合。

    var pipeline = new CdkPipeline(this, "Test", new CdkPipelineProps());
    
    pipeline.AddApplicationStage(new Microservice1Stage(this, "Test", new StageProps()));
    
    pipeline.AddApplicationStage(new Microservice2Stage(this, "Test2", new StageProps()));
    
    
    class Microservice1Stage : Stage
    {
      var s1 = new WebsiteStack();
    
      var s2 = new QueueProcessingServiceStack();
    
      var s3 = new AuthServerStack();
    
      ...
    }
    
    class Microservice2Stage : Stage
    {
      var s1 = new InternalWebsiteStack();
    
      var s2 = new NetworkInfrastructureStack();
    
      var s3 = new ApiStack();
    
      ...
    }
    
    

    这只是 C# 的伪代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多