💭

ECS ハンズオン

2024/11/04に公開

作るもの

リージョンを環境変数に設定しておく

export MY_REGION_ID_1="ap-northeast-1"
export MY_AZ_ID_1="ap-northeast-1a"
export MY_AZ_ID_2="ap-northeast-1c"

VPC の作成

aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16
export MY_VPC_ID_1=$(aws ec2 describe-vpcs \
  --filters "Name=cidr-block,Values=10.0.0.0/16" \
  --query "Vpcs[].VpcId" \
  --output text) \
&& echo $MY_VPC_ID_1
aws ec2 create-tags \
  --resources $MY_VPC_ID \
  --tags Key=Name,Value=my-vpc
aws ec2 describe-vpcs \
  --filters "Name=vpc-id,Values=$MY_VPC_ID_1"

パブリックサブネット①の作成

aws ec2 create-subnet \
  --vpc-id $MY_VPC_ID \
  --cidr-block 10.0.1.0/24 \
  --availability-zone $MY_AZ_ID_1
export MY_PUBLIC_SUBNET_ID_1=$(aws ec2 describe-subnets \
  --filters "Name=cidr-block,Values=10.0.1.0/24" \
  --query "Subnets[].SubnetId" \
  --output text) \
&& echo $MY_PUBLIC_SUBNET_ID_1
aws ec2 create-tags \
  --resources $MY_PUBLIC_SUBNET_ID_1 \
  --tags Key=Name,Value=my-my-public-subnet-1
aws ec2 describe-subnets \
  --filters "Name=subnet-id,Values=$MY_PUBLIC_SUBNET_ID_1"

パブリックサブネット②の作成

aws ec2 create-subnet \
  --vpc-id $MY_VPC_ID \
  --cidr-block 10.0.2.0/24 \
  --availability-zone $MY_AZ_ID_2
export MY_PUBLIC_SUBNET_ID_2=$(aws ec2 describe-subnets \
  --filters "Name=cidr-block,Values=10.0.2.0/24" \
  --query "Subnets[].SubnetId" \
  --output text) \
&& echo $MY_PUBLIC_SUBNET_ID_2
aws ec2 create-tags \
  --resources $MY_PUBLIC_SUBNET_ID_2 \
  --tags Key=Name,Value=my-my-public-subnet-2
aws ec2 describe-subnets \
  --filters "Name=subnet-id,Values=$MY_PUBLIC_SUBNET_ID_2"

プライベートサブネット①の作成

aws ec2 create-subnet \
  --vpc-id $MY_VPC_ID \
  --cidr-block 10.0.3.0/24 \
  --availability-zone $MY_AZ_ID_1
export MY_PRIVATE_SUBNET_ID_1=$(aws ec2 describe-subnets \
  --filters "Name=cidr-block,Values=10.0.3.0/24" \
  --query "Subnets[].SubnetId" \
  --output text) \
&& echo $MY_PRIVATE_SUBNET_ID_1
aws ec2 create-tags \
  --resources $MY_PRIVATE_SUBNET_ID_1 \
  --tags Key=Name,Value=my-private-subnet-1
aws ec2 describe-subnets \
  --filters "Name=subnet-id,Values=$MY_PRIVATE_SUBNET_ID_1"

プライベートサブネット②の作成

aws ec2 create-subnet \
  --vpc-id $MY_VPC_ID \
  --cidr-block 10.0.4.0/24 \
  --availability-zone $MY_AZ_ID_2
export MY_PRIVATE_SUBNET_ID_2=$(aws ec2 describe-subnets \
  --filters "Name=cidr-block,Values=10.0.4.0/24" \
  --query "Subnets[].SubnetId" \
  --output text) \
&& echo $MY_PRIVATE_SUBNET_ID_2
aws ec2 create-tags \
  --resources $MY_PRIVATE_SUBNET_ID_2 \
  --tags Key=Name,Value=my-private-subnet-2
aws ec2 describe-subnets \
  --filters "Name=subnet-id,Values=$MY_PRIVATE_SUBNET_ID_2"

コンテナ用セキュリティグループの作成

aws ec2 create-security-group \
  --group-name my-sg-container \
  --description "my sg for container" \
  --vpc-id $MY_VPC_ID_1
MY_SG_ID_CONTAINER=$(aws ec2 describe-security-groups \
  --filters "Name=group-name,Values=my-sg-container" "Name=vpc-id,Values=$MY_VPC_ID_1" \
  --query 'SecurityGroups[0].GroupId' \
  --output text) \
&& echo $MY_SG_ID_CONTAINER

セキュリティグループにインバウンドルールの追加

aws ec2 authorize-security-group-ingress \
--group-id $MY_SG_ID_CONTAINER \
--protocol tcp \
--port 80 \
--cidr 10.0.0.0/16

CloudMap に名前空間を作成

VPC を指定して、プライベートな名前空間を作成する

aws servicediscovery create-private-dns-namespace \
  --name httpd-service-discovery.internal \
  --vpc $MY_VPC_ID_1

環境変数に保存

export MY_NAMESPACE_1=$(aws servicediscovery list-namespaces \
  --filters Name="TYPE",Values="DNS_PRIVATE" \
  --query "Namespaces[?Name=='httpd-service-discovery.internal'].Id" \
  --output text)
echo $MY_NAMESPACE_1

上記操作でRoute53にもホストゾーンが作成されていることを確認する

aws route53 list-hosted-zones-by-vpc \
  --vpc-id $MY_VPC_ID_1 \
  --vpc-region $MY_REGION_ID_1

Discussion