Skip to content

Instantly share code, notes, and snippets.

View mjaromi's full-sized avatar

Mateusz Jaromi mjaromi

View GitHub Profile
@mjaromi
mjaromi / aws.ecs.ec2.ssh
Last active February 9, 2021 17:04
Connect via ssh to EC2 instance in $environment on which $ecsServiceName container is running
#!/bin/bash
ecsServiceName=$1
environment=$2
taskNameEcsCluster=$(aws ecs list-clusters | jq -r '.clusterArns[]' | grep $environment | while read cluster; do aws ecs list-services --cluster $cluster | jq -r '.serviceArns[]' | grep "$ecsServiceName$" && echo $cluster; done | rev | cut -d'/' -f1 | rev | sed 'N;s/\n/ /')
echo "taskNameEcsCluster: ${taskNameEcsCluster}"
taskName=$(echo $taskNameEcsCluster | cut -d' ' -f1)
echo "taskName: ${taskName}"
ecsCluster=$(echo $taskNameEcsCluster | cut -d' ' -f2)
echo "ecsCluster: ${ecsCluster}"
ec2Address=$(aws ecs describe-tasks --task $(aws ecs list-tasks --cluster $ecsCluster | jq -r '.taskArns[]' | grep $(aws ecs describe-services --services $taskName --cluster $ecsCluster | jq -r '.services[].events[] | "\(.id) \(.message)"' | grep 'has started' | head -1 | grep -o "[0-9a-f]\{32\}")) --cluster $ecsCluster | jq -r '.tasks[].containers[] | (.networkInterfaces[0].privateIpv4Address, .networkBindings[0].bindIP) | select(length > 0)')
@mjaromi
mjaromi / ecs-terraform-task_definition-diff
Last active February 9, 2021 17:01
Show diff between current and new task_definition
terragrunt plan | egrep '(new resource required)|container_definitions' | sed -n '$!N;s/\x1b\[[0-9;]*m//g;s/\n/;/;s/.*aws_ecs_task_definition.//g;s/ *(new resource required)//g;s/ *container_definitions: *"//gp;;s/" *(forces new resource)//g' | while read task_definition; do
echo -e "\nDIFF for: \033[0;31m$(echo $task_definition | cut -d';' -f1)\033[0m\n$(diff <(echo $task_definition | cut -d';' -f2- | sed 's/\\"/"/g;s/^ //g;s/ => /\n/g;s/"\[/\[/g;s/\]"/\]/g;s/ *(forces new resource)//g' | head -1 | jq) <(echo $task_definition | cut -d';' -f2- | sed 's/\\"/"/g;s/^ //g;s/ => /\n/g;s/"\[/\[/g;s/\]"/\]/g;s/ *(forces new resource)//g' | tail -1 | jq))" | egrep -v '\+\+\+|\-\-\-' | egrep '^(\+|\-|DIFF for)'
done
@mjaromi
mjaromi / ecs-placementConstraints
Created September 23, 2020 11:30
Show serviceName / placementConstraints.type/expression for ECS services running on $ECS_CLUSTER_NAME cluster
aws ecs list-services --cluster $ECS_CLUSTER_NAME | jq -r '.serviceArns[]' | while read service ; do
aws ecs describe-services --services $service --cluster $ECS_CLUSTER_NAME | jq -r '.services[] | "\(.serviceName) - \(.placementConstraints[].type) - \(.placementConstraints[].expression)"'
done
@mjaromi
mjaromi / ecs-deploymentConfiguration
Created September 23, 2020 11:30
Show serviceName / desiredCount / minimum/maximumHealthyPercent for ECS services running on $ECS_CLUSTER_NAME cluster
aws ecs list-services --cluster $ECS_CLUSTER_NAME | jq -r '.serviceArns[]' | while read service ; do
aws ecs describe-services --services $service --cluster $ECS_CLUSTER_NAME | jq -r '.services[] | "\(.serviceName) - \(.desiredCount) - \(.deploymentConfiguration.minimumHealthyPercent),\(.deploymentConfiguration.maximumPercent)"'
done
@mjaromi
mjaromi / ecs-taskDefinition-memory
Last active February 9, 2021 16:59
Show name / memory / memoryReservation for every ECS taskDefinition
aws ecs list-task-definitions --status active | jq -r '.taskDefinitionArns[]' | cut -d'/' -f2 | while read taskDefinition; do
echo -ne "$taskDefinition - " ; aws ecs describe-task-definition --task-definition $taskDefinition | jq -r '.taskDefinition.containerDefinitions[] | "\(.name) - \(.memory) - \(.memoryReservation)"'
done