我需要能够在AWS CDK中仅给定集群构造的情况下获得所有服务(本例中为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根本不可能做到这一点?
发布于 2021-08-20 01:04:12
事实证明,如果你至少也有服务名称,就有一种方法可以做到这一点。
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输出进行比较。
$ 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",
...
}https://stackoverflow.com/questions/68796290
复制相似问题