🦔

Amazon VPCをAWS CLIで構築する手順③

2022/04/29に公開

はじめに

前回はセキュリティグループの作成を行いました。
今回は、インターネットゲートウェイの作成とアタッチをAWS CLIでやる手順を書きます。今回も「AWS Hands-on for Beginners」とJAWS-UG CLI専門支部のハンズオンで学んだことを基に書いています。

※注意
ハンズオンで学んだことを基にしてコマンド実行しながら書きますが、認識違いや補足などがありましたらご指摘いただけますと幸いです。
また、記載内容を参考にする場合は自己責任でお願いいたします。

前回の記事

本記事の作業環境と、VPCとサブネット、セキュリティグループの手順については、前回以前の記事を参照してください。

https://zenn.dev/amarelo_n24/articles/30cb58cad805e8

構成図

前回までに作成したVPCにインターネットゲートウェイをアタッチする形を目指します。

手順

1.インターネットゲートウェイの作成

①リージョンを環境変数に指定

VPCを作成するリージョンを環境変数に指定します。この手順では東京リージョンを指定します。

export AWS_DEFAULT_REGION='ap-northeast-1'

②各種変数の指定

インターネットゲートウェイのタグ名・タグ文字列を指定します。

インターネットゲートウェイタグ名

EC2_INTERNET_GATEWAY_TAG_NAME='handson-cli-igw'

タグ文字列

STRING_EC2_INTERNET_GATEWAY_TAG="ResourceType=internet-gateway,Tags=[{Key=Name,Value=${EC2_INTERNET_GATEWAY_TAG_NAME}}]" \
&& echo ${STRING_EC2_INTERNET_GATEWAY_TAG}
ResourceType=internet-gateway,Tags=[{Key=Name,Value=handson-cli-igw}]

③コマンド実行

以下のコマンドを実行して、インターネットゲートウェイを作ります。

aws ec2 create-internet-gateway \
  --tag-specifications ${STRING_EC2_INTERNET_GATEWAY_TAG}

成功すると以下のように表示されます。

{
    "InternetGateway": {
        "Attachments": [],
        "InternetGatewayId": "igw-xxxxxxxxxxxxxxxx",
        "OwnerId": "xxxxxxxxxxxx",
        "Tags": [
            {
                "Key": "Name",
                "Value": "handson-cli-igw"
            }
        ]
    }
}

指定した名称でインターネットゲートウェイが作成されたことを確認します。

aws ec2 describe-internet-gateways \
  --filters Name=tag:Name,Values=${EC2_INTERNET_GATEWAY_TAG_NAME} \
  --query "InternetGateways[].Tags[].Value" \
  --output text

成功していたら、インターネットゲートウェイタグ名が表示されます。

handson-cli-igw

2.インターネットゲートウェイをVPCにアタッチ

①リージョンを環境変数に指定

VPCを作成するリージョンを環境変数に指定します。この手順では東京リージョンを指定します。

export AWS_DEFAULT_REGION='ap-northeast-1'

②各種変数の指定

VPCタグ名とID、インターネットゲートウェイのタグ名とIDを変数に指定します。

VPCタグ名

EC2_VPC_TAG_NAME='handson-cli-vpc'

VPC ID

EC2_VPC_ID=$( \
  aws ec2 describe-vpcs \
    --filters Name=tag:Name,Values=${EC2_VPC_TAG_NAME} \
    --query "Vpcs[].VpcId" \
    --output text \
) \
&& echo ${EC2_VPC_ID}

インターネットゲートウェイタグ名

EC2_INTERNET_GATEWAY_TAG_NAME='handson-cli-igw'

インターネットゲートウェイID

EC2_INTERNET_GATEWAY_ID=$( \
  aws ec2 describe-internet-gateways \
      --filters Name=tag:Name,Values=${EC2_INTERNET_GATEWAY_TAG_NAME} \
      --query "InternetGateways[].InternetGatewayId" \
      --output text \
) \
&& echo ${EC2_INTERNET_GATEWAY_ID}

③コマンド実行

指定した名称でインターネットゲートウェイを作成します。
※成功しても何も返しません。

aws ec2 attach-internet-gateway \
  --vpc-id ${EC2_VPC_ID} \
  --internet-gateway-id ${EC2_INTERNET_GATEWAY_ID}

インターネットゲートウェイが指定のVPCにアタッチされているか確認します。

aws ec2 describe-internet-gateways \
  --filters Name=tag:Name,Values=${EC2_INTERNET_GATEWAY_TAG_NAME} \
  --query "InternetGateways[].Attachments[?VpcId==\`${EC2_VPC_ID}\`].VpcId" \
  --output text

正しくアタッチされているとVPC IDを返します。

vpc-XXXXXXXXXXXXXXXXX

ここまでのまとめ

この記事ではインターネットゲートウェイの作成とVPCへのアタッチまでを書きました。
次回はルートテーブルの作成とサブネットの関連付け、インターネットへのルート登録を書きます。

※次の記事
https://zenn.dev/amarelo_n24/articles/f66a1757344f9e

Discussion