7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWSでお手軽に遊び場(VPC)をつくりたい

Last updated at Posted at 2021-12-04

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を構築できるようにしました。

初期のディレクトリ構造は次の画像のとおりです。
image.png

この記事で作るものはこの図のとおりです。
adventCalendar.jpg

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のネットワーク設定を書き込む

項目の説明をすると次の通りです。

conf/vpc.conf
AVAILABILITY_ZONE='アベイラビリティゾーン'
VPC_CIDR_BLOCK='VPCのサイダーブロック'
SUBNET_CIDR_BLOCK='サブネットのサイダーブロック'
VPC_NAME='VPC名'
SECURITY_GROUP_DESCRIPTION='セキュリティグループの説明'

今回私はこんな感じに設定しました。
実際はもっとIPアドレスを少なくしてもいいと思いますが、遊び場なので多めに確保しておきます。

conf/vpc.conf
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/ec2_conf.sh
. ./conf/key.conf

EC2_IMAGE_ID='ami-0218d08a1f9dac831'
EC2_INSTANCE_TYPE='t2.micro'
KEY_NAME=$KEYNAME

4. 秘密鍵の生成

conf/key.confに秘密鍵の名前を英字で入力してください

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

ここでEC2コンソールを見てみましょう。
image.png

このようにインスタンスが生成されていれば成功です。

7. sshでインスタンスに入る

ssh.shを実行しましょう。

sh ssh.sh

そうすると、
Are you sure you want to continue connecting (yes/no/[fingerprint])?
と聞かれるので
yes
とタイプしEnterを押して先に進みましょう。

image.png

このような画面になれば成功です。

お片付け

不要になったときも簡単に削除できるようにしました。(初期状態時のみですが)
delete.shを実行するだけです

sh delete.sh

すこし時間がかかるのは、意図的なので心配しないでください。
インスタンスが削除されるまで待つ必要があるからです。

最後にちゃんと全部消えてるかどうか、AWSのコンソールで確認してくださいね。
インスタンスとVPCが消えてればおそらく大丈夫だと思います。

いろいろ弄った後でも、

  1. EC2
  2. VPC
    の順で削除すれば消せるはずです。

おわりに

AWS CLIとシェルスクリプトを用いて簡単にローカルからつながるVPCとEC2を作成できました。
これで今後はVPCのネットワーク設定で悩まされることはなくなりそうです、よかったよかった。

なお、それぞれの名前については、
"VPCの名前-awsのサービス名"
となっています、確認してみてください。

ここまで読んでくださった方、ありがとうございました。
本記事はこれで終了です、お疲れ様でした。

参考記事

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?