如何使用 aws cdk 运行 在现有 ecs 集群上执行 Fargate 任务

How to run a Fargate Task on an existing ecs cluster using aws cdk

我有一个将由我的 cdk 堆栈创建的 ECS 集群。在我的 ECS 服务堆栈部署之前,我必须 运行 一个 fargate 任务来为我的应用程序生成构建文件和配置。我想 运行 现有 Ecs 集群中的独立任务。

有两个问题。我会尽量回答这两个问题:

  1. 首先你需要通过 CDK运行 Fargate 任务

您需要创建一个规则,该规则运行按计划(或其他事件)执行您的 ECS 任务

import { Rule, Schedule } from '@aws-cdk/aws-events';
import { EcsTask } from '@aws-cdk/aws-events-targets';

new Rule(this, 'ScheduleRule', {
        schedule: schedule,
        targets: [
          new EcsTask({
            cluster,
            taskDefinition: task,
          }),
        ],
      });
  1. 第二个 - 我如何使用现有集群

您可以通过属性找到您的集群

import { Cluster } from '@aws-cdk/aws-ecs';

let cluster = Cluster.fromClusterAttributes(this, 'cluster_id', {
     clusterName: "CLUSTER_NAME", securityGroups: [], vpc: iVpc
 });

更新: 您可以通过一些自定义事件触发您的任务:

 new Rule(this, 'EventPatternRule', {
         eventPattern: {
             "version": "0",
             "id": "CWE-event-id",
             "detail-type": "CodePipeline Pipeline Execution State Change",
             "source": "aws.codepipeline",
             "account": "123456789012",
             "time": "2017-04-22T03:31:47Z",
             "region": "us-east-1",
             "resources": [
                 "arn:aws:codepipeline:us-east-1:123456789012:pipeline:myPipeline"
             ],
             "detail": {
                 "pipeline": "myPipeline",
                 "version": "1",
                 "state": "STARTED",
                 "execution-id": "01234567-0123-0123-0123-012345678901"
             }
         }
         targets: [
           new EcsTask({
             cluster,
             taskDefinition: task,
           }),
         ],
       });

请参阅this doc了解事件模式