MYJLab Advent Calendar 2021 5日目の記事を担当するのぶです。
昨日の@kanekomさんの記事は、pythonのfor文の言語仕様についてでした。
MYJLab Advent Calendar 2021の5日目はAWS CLIを使ってVPCを簡単に建ててみようとおもいます。
1. はじめに
- 秘密鍵もVPCもEC2も簡単につくってくれるシェルスクリプトを作成したよ。
- AWS CLI のコマンドを列挙してるだけだよ。
- 設定ファイルにネットワークに関するパラメータを埋めて、順番にスクリプトを実行するだけだよ。
- うっかりさん向けだよ。
私はVPCを立てようとするときにいつもどこかの設定をし忘れて
「インスタンスに繋がらないんだけどぉ!!!!」
って叫んでいるので、今回はAWS CLIとシェルスクリプトを用いて簡単にVPCを構築できるようにしました。
VPCだけだと疎通確認がとれないので、ついでにwebサーバもつくれるようにしました。
今は疎通確認がとれるサービスがあるみたいですね。。笑
https://aws.amazon.com/jp/blogs/news/new-vpc-insights-analyzes-reachability-and-visibility-in-vpcs/
今回のスクリプトはGithubに載せてあるのでよかったら使ってみてください。
環境
OS: WSL2(Ubuntu20.04)
必要なもの: jq, AWS CLI, awsアカウント
上の2つのインストール方法については次に挙げる記事を参考にしてください。
jqコマンドのインストール方法:
AWS CLIのインストール方法:
3. vpcのネットワーク設定を書き込む
項目の説明をすると次の通りです。
AVAILABILITY_ZONE='アベイラビリティゾーン'
VPC_CIDR_BLOCK='VPCのサイダーブロック'
SUBNET_CIDR_BLOCK='サブネットのサイダーブロック'
VPC_NAME='VPC名'
SECURITY_GROUP_DESCRIPTION='セキュリティグループの説明'
今回私はこんな感じに設定しました。
実際はもっとIPアドレスを少なくしてもいいと思いますが、遊び場なので多めに確保しておきます。
AVAILABILITY_ZONE='ap-northeast-1a'
VPC_CIDR_BLOCK='192.168.10.0/27'
SUBNET_CIDR_BLOCK='192.168.10.0/28'
VPC_NAME='adventcalendar'
SECURITY_GROUP_DESCRIPTION='web-server'
3. EC2の設定を書き込む
無料枠で使いたい人はこのままで大丈夫です、amiはamazon linux2を指定しています。他のを使いたい方は公式のLinux/ AMI の検索を参考にしてください。
. ./conf/key.conf
EC2_IMAGE_ID='ami-0218d08a1f9dac831'
EC2_INSTANCE_TYPE='t2.micro'
KEY_NAME=$KEYNAME
4. 秘密鍵の生成
conf/key.confに秘密鍵の名前を英字で入力してください
KEYNAME='Name'
設定できたら次のコマンドで秘密鍵を生成します。
sh key_create.sh
するとconfディレクトリの中に秘密鍵が生成されます。
(xxxxとなっているのは伏せているだけです。実際はconf/key.confで指定した名前になっているはずです。)
adventCalendar
├── conf
│ ├── xxxx.pem
│ ├── ec2_conf.sh
│ ├── key.conf
│ └── vpc.conf
├── delete.sh
├── ec2_create.sh
├── key_create.sh
├── lib
│ └── func.sh
├── ssh.sh
└── vpc_create.sh
2 directories, 10 files
5. VPCの作成
いよいよ、VPCをつくっていきます。
vpc_create.shを実行してください。
sh vpc_create.sh
するとjsonでレスポンスが返ってくるはずです。
もし、エラーが返ってきた場合は、conf/vpc.confのネットワーク設定が間違っているということなので、conf/vpc.confを見直しましょう。
6. EC2の作成
ec2_create.shを実行してください。
sh ec2_create.sh
このようにインスタンスが生成されていれば成功です。
7. sshでインスタンスに入る
ssh.shを実行しましょう。
sh ssh.sh
そうすると、
Are you sure you want to continue connecting (yes/no/[fingerprint])?
と聞かれるので
yes
とタイプしEnterを押して先に進みましょう。
このような画面になれば成功です。
お片付け
不要になったときも簡単に削除できるようにしました。(初期状態時のみですが)
delete.shを実行するだけです
sh delete.sh
すこし時間がかかるのは、意図的なので心配しないでください。
インスタンスが削除されるまで待つ必要があるからです。
最後にちゃんと全部消えてるかどうか、AWSのコンソールで確認してくださいね。
インスタンスとVPCが消えてればおそらく大丈夫だと思います。
いろいろ弄った後でも、
- EC2
- VPC
の順で削除すれば消せるはずです。
おわりに
AWS CLIとシェルスクリプトを用いて簡単にローカルからつながるVPCとEC2を作成できました。
これで今後はVPCのネットワーク設定で悩まされることはなくなりそうです、よかったよかった。
なお、それぞれの名前については、
"VPCの名前-awsのサービス名"
となっています、確認してみてください。
ここまで読んでくださった方、ありがとうございました。
本記事はこれで終了です、お疲れ様でした。
参考記事