繁体   English   中英

从 AWS CDK 中的 Fargate 集群获取所有服务

[英]Get all Services from a Fargate Cluster in AWS CDK

我需要能够在 AWS CDK 中仅给定 Cluster 构造(本例中为 TypeScript,但任何语言都可以)获得所有服务。

像下面这样的东西。

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

private updateClusterServices(cluster: Cluster): void {
  for (const service of cluster.getServices()) {
    // do something with service
  }
}

但是Cluster上没有这样的getServices()方法。

有没有另一种方法可以做到这一点,或者由于某种原因,CDK 根本不可能做到这一点?

事实证明,如果您至少也有服务名称,那么有一种方法可以做这样的事情。

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

private updateClusterServices(scope: Construct, cluster: Cluster, serviceName: string): void {
  const service = FargateService.fromFargateServiceAttributes(scope, 'FindFargateServices', {
    cluster: cluster,
    serviceName: serviceName,
  });

  console.log(service.serviceArn);

  // do something with service
}

结果似乎是TaskSet serviceArn。

arn:aws:ecs:ap-southeast-2:1234567890:service/backend

通过将其与 CLI output 进行比较。

$ aws ecs describe-services --cluster blue-green-cluster --services backend
{
    "services": [
        {
            "serviceArn": "arn:aws:ecs:ap-southeast-2:1234567890:service/blue-green-cluster/backend",
            "serviceName": "backend",
            "clusterArn": "arn:aws:ecs:ap-southeast-2:1234567890:cluster/blue-green-cluster",
...
            "taskSets": [
                {
                    "taskSetArn": "arn:aws:ecs:ap-southeast-2:1234567890:task-set/blue-green-cluster/backend/ecs-svc/2091139980078414071",
                    "serviceArn": "arn:aws:ecs:ap-southeast-2:1234567890:service/backend",
                    "clusterArn": "arn:aws:ecs:ap-southeast-2:1234567890:cluster/blue-green-cluster",
...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM