App-FargateStack
view release on metacpan or search on metacpan
lib/App/ECS.pm view on Meta::CPAN
########################################################################
my ( $self, %args ) = @_;
my ( $service_name, $cluster_name, $task_definition, $desired_count, $public_ip )
= @args{qw(service_name cluster_name task_definition desired_count public_ip)};
$cluster_name //= $self->get_cluster_name;
$desired_count //= 1;
my ( $subnets, $security_groups ) = @args{qw(subnets security_groups)};
croak "subnets is required and must be an array\n"
if !$subnets || reftype($subnets) ne 'ARRAY';
croak "security_groups is required and must be an array\n"
if !$security_groups || reftype($security_groups) ne 'ARRAY';
croak "no security groups defined\n"
if !@{$security_groups};
croak "service-name is required\n"
if !$service_name;
my $network_configuration = {
awsvpcConfiguration => {
subnets => $subnets,
securityGroups => $security_groups,
assignPublicIp => $public_ip ? 'ENABLED' : 'DISABLED',
}
};
my ( $target_group_arn, $container_name, $container_port ) = @args{qw(target_group_arn container_name container_port)};
$container_port //= $DEFAULT_PORT;
my $load_balancers;
if ($target_group_arn) {
$load_balancers = [
{ targetGroupArn => $target_group_arn,
containerName => $container_name,
containerPort => $container_port,
}
];
}
return $self->command(
'create-service' => [
'--cluster' => $cluster_name,
'--service-name' => $service_name,
'--task-definition' => $task_definition,
'--desired-count' => $desired_count,
'--launch-type' => 'FARGATE',
'--network-configuration' => encode_json($network_configuration),
$load_balancers ? ( '--load-balancers' => encode_json($load_balancers) ) : (),
]
);
}
########################################################################
sub update_service {
########################################################################
my ( $self, %args ) = @_;
my ( $cluster_name, $service_name, $task_definition, $force, $desired_count, $query )
= @args{qw(cluster_name service_name task_definition force desired_count query)};
$cluster_name //= $self->get_cluster_name;
$service_name //= $self->get_service_name;
return $self->command(
'update-service' => [
'--cluster' => $cluster_name,
'--service' => $service_name,
$query ? ( '--query' => $query ) : (),
defined $desired_count ? ( '--desired-count' => $desired_count ) : (),
($task_definition) ? ( '--task-definition' => $task_definition ) : (),
$force ? '--force-new-deployment' : (),
]
);
}
########################################################################
sub tag_resource {
########################################################################
my ( $self, $arn, @tags ) = @_;
my $tag_string = join q{}, map { sprintf 'Key=%s,Value=%s', @{$_} } pairs @tags;
return $self->command(
'add-tags',
[ '--tags' => $tag_string,
'--resoure-arns' => $arn,
]
);
}
1;
( run in 0.680 second using v1.01-cache-2.11-cpan-2398b32b56e )