Skip to content

Instantly share code, notes, and snippets.

@yaasita
Created September 21, 2022 01:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yaasita/07b0d93b1d906f963969bb94681f901d to your computer and use it in GitHub Desktop.
Save yaasita/07b0d93b1d906f963969bb94681f901d to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use strict;
use warnings;
use feature qw(:5.10);
use utf8;
use JSON::PP;
use HTTP::Tiny;
# 自分のタスクデータ取得
my ($own_cluster, $own_family, $own_version);
{
my $response = HTTP::Tiny->new->get($ENV{ECS_CONTAINER_METADATA_URI_V4});
die "failed to get ecs meta data" unless $response->{success};
my $ecs_metadata = decode_json($response->{content});
$own_cluster = $ecs_metadata->{Labels}->{"com.amazonaws.ecs.cluster"};
$own_family = $ecs_metadata->{Labels}->{"com.amazonaws.ecs.task-definition-family"};
$own_version = $ecs_metadata->{Labels}->{"com.amazonaws.ecs.task-definition-version"};
}
# タスク一覧取得
my @tasks;
{
my $result = `aws ecs list-tasks --cluster $own_cluster --family $own_family --desired-status RUNNING --output json`;
my $tasks = decode_json($result);
for (@{$tasks->{taskArns}}) {
push(@tasks, $_);
}
}
# 自分と同じバージョンのタスクを数える
my $task_count = 0;
for (@tasks) {
my $result = `aws ecs describe-tasks --cluster $own_cluster --tasks $_ --output json`;
my $task_info = decode_json($result);
my $task_version = $task_info->{tasks}->[0]->{version};
if ($task_version == $own_version) {
$task_count++;
}
}
say $task_count;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment