提问者:小点点

使用AWS管道和CDK将应用程序从github部署到fargate


我正在尝试使用AWSCDK设置一个从github到AWSFargate应用程序的CI/CD。我试过使用“CDK管道”:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.pipelines-readme.html

我也尝试了另一个(代码管道?):https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline-readme.html

不知何故,这两个都没有我需要的功能。

我在构建操作中添加了一个步骤:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline_actions.CodeBuildAction.html

它工作正常并生成了一个工件。这是代码:

const buildArtifact = new Artifact();

pipeline.addStage({
  stageName: "Build",
  actions: [
    new CodeBuildAction({
      project: new PipelineProject(this, "Build", {
        projectName: "Build",
        buildSpec: BuildSpec.fromSourceFilename("./docker-compose.yml"),
      }),
      input: sources,
      outputs: [buildArtifact],
    }),
  ],
});

但后来我继续将构建结果部署到fargate,比如:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ecs.FargateTaskDefinition.html

const fargateTaskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef', {
  memoryLimitMiB: 512,
  cpu: 256,
});
const container = fargateTaskDefinition.addContainer("WebContainer", {
  image: ecs.ContainerImage.from...??
});

而且,事实证明,绝对没有办法从工件创建这个容器映像:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ecs.ContainerImage.html

可悲的是,这一切都是徒劳的。

如何制作一个实际工作并将C#项目部署到fargate服务的管道?我并没有试图实现复杂的事情——只是为了部署我的C#应用程序。所以,我一定做错了什么。


共1个答案

匿名用户

你基本上已经得到了所有的部分。由于addContainer函数的imageprop需要ContainerImage类型,我们可以看到定义该图像的几个选项(AssetImageEcrImage似乎是最相关的。)

如果你想走ECR镜像路线,你可以修改你添加的构建步骤,将构建的容器推送到ECR,然后使用EcrImage提供任务定义(本文有一个有用的buildspec. yml来工作)。

或者,您可以使用AssetImage,将其指向repo中的正确位置,并CDK处理构建。请注意,在这个用例中,AssetImage不是在接收预构建的工件,而是在生成工件本身。这显然要求您的Dockerfile和C#代码与CDK代码在同一个repo中。

相关问题