#!/bin/bash
private_a=$(aws ec2 describe-subnets --filters "Name=tag:Name,Values=wsi-private-subnet-a" --query "Subnets[].SubnetId[]" --region ap-northeast-2 --output text)
private_b=$(aws ec2 describe-subnets --filters "Name=tag:Name,Values=wsi-private-subnet-b" --query "Subnets[].SubnetId[]" --region ap-northeast-2 --output text)
ecs_app_sg=$(aws ec2 describe-security-groups --filters "Name=tag:Name,Values=wsi-app-sg" --query "SecurityGroups[].GroupId[]" --region ap-northeast-2 --output text)
target_group_arn=$(aws elbv2 describe-target-groups --names wsi-stress-tg --query "TargetGroups[].TargetGroupArn[]" --region ap-northeast-2 --output text)
service_discovery_arn="arn:aws:servicediscovery:ap-northeast-2:$(aws sts get-caller-identity --query 'Account' --output text):service/$SERVICE_ID"
Shell
복사
aws ecs create-service \
--cluster wsi-ecs-cluster \
--service-name wsi-stress-svc \
--task-definition wsi-taskdef-stress \
--desired-count 2 \
--enable-execute-command \
--load-balancers "targetGroupArn=$target_group_arn,containerName=wsi-stress,containerPort=8080" \
--deployment-configuration "minimumHealthyPercent=100,maximumPercent=200" \
--service-registries "registryArn=$service_discovery_arn,containerName=wsi-stress,containerPort=8080" \
--health-check-grace-period-seconds 60 \
--propagate-tags SERVICE \
--deployment-controller "type=ECS" \
--scheduling-strategy REPLICA \
--availability-zone-rebalancing ENABLED \
--launch-type EC2
Shell
복사
aws application-autoscaling register-scalable-target \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/wsi-ecs-cluster/wsi-stress-svc \
--min-capacity 2 \
--max-capacity 20
Shell
복사
aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/wsi-ecs-cluster/wsi-stress-svc \
--policy-name policy \
--policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{
"TargetValue": 70.0,
"PredefinedMetricSpecification": {
"PredefinedMetricType": "ECSServiceAverageCPUUtilization"
},
"ScaleOutCooldown": 0,
"ScaleInCooldown": 0
}'
Shell
복사
ECS EXEC
sudo dnf install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpmsudo systemctl start amazon-ssm-agent
# sudo yum erase session-manager-plugin -y
Shell
복사
TASKDEF_ARN=$(aws ecs list-tasks --cluster wsi-ecs-cluster --desired-status RUNNING --family wsi-taskdef-stress --region ap-northeast-2 --query "taskArns[0]" --output text)
Shell
복사
aws ecs execute-command \
--region ap-northeast-2 \
--cluster wsi-ecs-cluster \
--task $TASKDEF_ARN \
--container wsi-stress \
--command "/bin/sh" \
--interactive
Shell
복사
