如何使用 aws cdk 运行 在现有 ecs 集群上执行 Fargate 任务
How to run a Fargate Task on an existing ecs cluster using aws cdk
我有一个将由我的 cdk 堆栈创建的 ECS 集群。在我的 ECS 服务堆栈部署之前,我必须 运行 一个 fargate 任务来为我的应用程序生成构建文件和配置。我想 运行 现有 Ecs 集群中的独立任务。
有两个问题。我会尽量回答这两个问题:
- 首先你需要通过 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,
}),
],
});
- 第二个 - 我如何使用现有集群
您可以通过属性找到您的集群
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了解事件模式
我有一个将由我的 cdk 堆栈创建的 ECS 集群。在我的 ECS 服务堆栈部署之前,我必须 运行 一个 fargate 任务来为我的应用程序生成构建文件和配置。我想 运行 现有 Ecs 集群中的独立任务。
有两个问题。我会尽量回答这两个问题:
- 首先你需要通过 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, }), ], });
- 第二个 - 我如何使用现有集群
您可以通过属性找到您的集群
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了解事件模式