App-FargateStack
view release on metacpan or search on metacpan
lib/App/ElbV2.pm view on Meta::CPAN
croak "no vpc_id found\n"
if !$vpc_id;
my $query = sprintf 'LoadBalancers[?Scheme == `%s` && VpcId == `%s`]', $type, $vpc_id;
my $albs = $self->describe_load_balancers( query => $query );
$self->get_logger->debug( Dumper( [ albs => $albs ] ) );
croak "ERROR: No ALBs of type: $type\n"
if !$no_error && !$albs || !@{$albs};
croak sprintf "ERROR: More than one ALBs of type: $type\n%s\n", join "\n", map { $_->{LoadBalancerName} } @{$albs}
if !$no_error && @{$albs} > 1;
my $alb = $albs->[0];
$self->set_alb($alb);
$self->get_logger->debug( sub { return Dumper( [ alb => $alb ] ) } );
return ( $alb->{LoadBalancerArn}, $alb->{SecurityGroups}->[0] );
}
########################################################################
sub get_listener_by_port {
########################################################################
my ( $self, $alb_arn, $port ) = @_;
my $query = sprintf 'Listeners[?Port == `%s`]', $port;
my $result = $self->command(
'describe-listeners' => [
'--load-balancer' => $alb_arn,
'--query', => $query,
]
);
return @{$result};
}
########################################################################
sub create_rule {
########################################################################
my ( $self, %args ) = @_;
my ( $listener_arn, $priority, $conditions, $default_action ) = @args{qw(listener_arn priority conditions default_action)};
return $self->command(
'create-rule' => [
'--listener-arn' => $listener_arn,
'--priority' => $priority,
'--conditions' => $conditions,
'--actions' => $default_action,
]
);
}
########################################################################
sub validate_alb {
########################################################################
my ( $self, %args ) = @_;
my ( $alb_arn, $scheme ) = @args{qw(arn scheme)};
croak "usage: validate_alb(alb-arn, [ vpc-id ])\n"
if !$alb_arn;
my $query = sprintf 'LoadBalancers[?LoadBalancerArn == `%s` && Scheme == `%s`]', $alb_arn, $scheme;
my $albs = $self->describe_load_balancers( query => $query );
croak "ERROR: unable to find ALB: %s\n%s", $alb_arn, $self->get_error
if !$albs;
return $albs;
}
########################################################################
sub find_alb_subnets {
########################################################################
my ( $self, $alb_arn ) = @_;
my $query = sprintf "LoadBalancers[?LoadBalancerArn == `%s`] | [0].AvailabilityZones[].SubnetId", $alb_arn;
my @cmd = qw(aws elbv2 describe-load-balancers);
push @cmd,
'--profile' => $self->profile,
'--query' => $query;
my $result = $self->execute(@cmd);
return $result ? decode_json($result) : $result;
}
########################################################################
sub target_group_exists {
########################################################################
my ( $self, $target_group_name ) = @_;
my $query = sprintf "TargetGroups[?TargetGroupName == `%s`]|[0]", $target_group_name;
my @cmd = qw(aws elbv2 describe-target-groups);
push @cmd,
(
'--query' => $query,
'--profile' => $self->profile,
);
my $result = $self->execute(@cmd);
return $result ? decode_json($result) : $result;
}
########################################################################
sub create_target_group {
########################################################################
my ( $self, %args ) = @_;
my ( $port, $protocol, $name, $vpc_id, $target_type, $health_check )
= @args{qw(port protocol name vpc_id target_type health_check)};
$port //= '80';
$protocol //= 'HTTP';
( run in 0.746 second using v1.01-cache-2.11-cpan-39bf76dae61 )