🔖

"AWS Hands-on for Beginners - Network編#1"をAWS CLIで構築する1

2024/05/01に公開

AWS Hands-on for Beginners - Network編#1 AWS上にセキュアなプライベートネットワーク空間を作成するを先日受講したが、さらに深い理解を得るためにAWS CLIで構築していく。

構成図

作業環境の構築

まず、AWS CLIを実行するための作業環境を構築をする。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-getting-started.html

VPCの作成

  • 環境変数に東京リージョンを指定
export AWS_DEFAULT_REGION="ap-northeast-1"
  • VPCのCIDRブロックとタグを変数に指定
VPC_TAG_NAME="handson"
VPC_CIDR="10.0.0.0/16"
TAG_SPECIFICATIONS="ResourceType=vpc,Tags=[{Key=Name,Value=${VPC_TAG_NAME}}]"
  • VPCを作成
aws ec2 create-vpc \
    --cidr-block ${VPC_CIDR} \
    --tag-specifications ${TAG_SPECIFICATIONS}
  • VPCが作成されたことを確認
aws ec2 describe-vpcs \
    --filters Name=tag:Name,Values=${VPC_TAG_NAME} \
    --query "Vpcs[].Tags[?Key == `Name`].Value" \
    --output text

サブネットの作成

サブネットを4つまとめて作成、確認、削除する場合はこちら

  • VPC IDの指定
VPC_ID=$( \
    aws ec2 describe-vpcs \
    --filters Name=tag:Name,Values=${VPC_TAG_NAME}  \
    --query "Vpcs[].VpcId" \
    --output text \
    )
  • サブネットのCIDRブロック、アベイラビリティゾーン、タグを指定
SUBNET_CIDR="10.0.1.0/24"
AZ_CODE="a"
AZ_NAME=${AWS_DEFAULT_REGION}${AZ_CODE}
SUBNET_TYPE="Public"
SUBNET_TAG_NAME=${SUBNET_TYPE}"-subnet-"${AZ_CODE}
SUBNET_TAG_SPECIFICATIONS="ResourceType=subnet,Tags=[{Key=Name,Value=${SUBNET_TAG_NAME}}]"
  • サブネットの作成
aws ec2 create-subnet \
      --vpc-id ${VPC_ID} \
      --cidr-block ${SUBNET_CIDR} \
      --availability-zone ${AZ_NAME} \
      --tag-specifications ${SUBNET_TAG_SPECIFICATIONS}
  • サブネットが作成されたことを確認
aws ec2 describe-subnets \
        --filters Name=vpc-id,Values=${VPC_ID} \
        Name=tag:Name,Values=${SUBNET_TAG_NAME}  \
        --query "Subnets[].Tags[?Key==`Name`].Value" \
        --output text

サブネットを4つまとめて作成、確認、削除する

  • サブネットを作成
subnet_cidrs=("10.0.1.0/24" "10.0.2.0/24" "10.0.11.0/24" "10.0.12.0/24")
az_codes=("a" "c" "a" "c")
subnet_tag_names=("Public-subnet-a" "Public-subnet-c" "Private-subnet-a" "Private-subnet-c")

for i in {0..3}
do
    subnet_tag_specifications="ResourceType=subnet,Tags=[{Key=Name,Value=${subnet_tag_names[$i]}}]"
    aws ec2 create-subnet \
          --vpc-id ${VPC_ID} \
          --cidr-block ${subnet_cidrs[$i]} \
          --availability-zone ${AWS_DEFAULT_REGION}${az_codes[$i]} \
          --tag-specifications ${subnet_tag_specifications}
done
  • サブネットを確認
subnet_tag_names=("Public-subnet-a" "Public-subnet-c" "Private-subnet-a" "Private-subnet-c")
for i in {0..3}
do
    aws ec2 describe-subnets \
            --filters Name=vpc-id,Values=${VPC_ID} \
            Name=tag:Name,Values=${subnet_tag_names[$i]}   \
            --query "Subnets[].Tags[?Key==`Name`].Value" \
            --output text
done
  • サブネットを削除
subnet_tag_names=("Public-subnet-a" "Public-subnet-c" "Private-subnet-a" "Private-subnet-c")
for i in {0..3}
do
    SUBNET_ID=$( \
        aws ec2 describe-subnets \
        --filters Name=tag:Name,Values=${subnet_tag_names[$i]}  \
        --query "Subnets[].SubnetId" \
        --output text \
    )
    aws ec2 delete-subnet --subnet-id ${SUBNET_ID}
done

参考
https://zenn.dev/amarelo_n24/articles/35cb14a057ecf1


次回
https://zenn.dev/tn_a/articles/7b7628e4932235

Discussion