AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

JAWS-UG CLI専門支部 EC2基礎(VPC) オンライン参加

6月初めのイベント参加は、VPCハンズオン。

自身がインフラ系 & 前回のEC2ハンズオン に続いての参加(or 予習して)なので、流れはすんなりでしたが、GUIでぼんやりしてた全体像の把握ができてとても良かったです。

#156R EC2基礎(VPC)

jawsug-cli.connpass.com


マネジメントコンソールだと、独立したサービスに見えるけど、APIからするとEC2シリーズに含まれるVPC

f:id:hidehara:20200608231029p:plain

あらためて基礎から抑えてみていくと、VPCをただの仮想ネットワーク(ルータとスイッチの仮想化)という概念で設計されてないところがまた、AWSの前進的なところだったのではないかなぁと思えてきました。


今回のハンズオン

ここ数回参加してますが、一番気を抜けない?ボリュームだったかも。

コピペを順次していければOKな資料となってます。

とはいえ、主催者側では(今日はあったけど)めったに手戻りすることはないので、ちょっと先をいくぐらいのテンポで進められると余裕ありかも。




VPC を個人的に説明

※ここは、ハンズオンで聞いた話ではなく、個人の意見です。遅れて参加したので。。※


EC2インスタンスを立ち上げる、各AWSアカウントごとに(仮想的に)定義するプライベートなネットワークです。

同じ CIDR(VPCIPアドレス空間)を設定していても、仮想的に分離されてるので問題ありません(VPC IDはユニークは設定毎にユニーク)。

後述のデフォルトVPCというのが、どのリージョンにも作られてるので、VPCをはっきりと意識しなくてもEC2インスタンスは立てれます。

しかし、EC2インスタンスを複数台あげたり、RDSや内部セグメントなどを使いたくなったときには、きっとネットワーク設計を必要として、VPCを新たに定義したくなるかと思います。


今回のハンズオンでは、インターネットからのHTTPアクセスをうけるEC2インスタンスをあげるべく、新たにカスタムVPCをゼロから定義していく手順をAWS-CLIで抑えていました。

ハンズオン手順

上記の手順で、次のVPCを構築します(図は、ハンズオン手順から引用しました)。

f:id:hidehara:20200609000422p:plain


ざっくり、こんな流れです。

  • VPCの構築 (VPCIPアドレス範囲を CIDR として設定)
  • IGWの作成 (インターネットとの通信用Gateway作成 & VPCに引っ付ける)
  • ルートテーブルの作成 (インターネットはIGWへ行けと設定して後の使う)
  • サブネットの作成 (AZ単位で作成するVPCの子供を作成 & さっき作ったルートテーブルを割り当て)
  • セキュリティグループの作成 (後で起動するEC2インスタンスのファイアーウォール設定)

個人的な VPC用語の補足

サブネット や CIDR(サイダー) などの、オンプレエンジニアがちょっと迷いそうな用語の使い方かも?

# でも、大きく外してもいないところもまた、賢いなぁと一人思ったり

VPCの「CIDR」

VPCの「CIDR」 は、そのVPCが取りうるIPアドレスの範囲です。

今回のWSハンズオン手順1.1だと " EC2_VPC_CIDR='10.0.0.0/16' " として進めています。

この表記から サブネットマスク が "/16 = 255.255.0.0" だから、 IPアドレス数:65536 (ホストアドレス数:65534) だなとわかります(ネットワークエンジニアさんは)。

?な方は、こんなツールで確認してみるといいかも。

VPCの「サブネット」

VPCの「サブネット」は、VPCの「CIDR」範囲内で作成する「(VPCのアドレス範囲より)小さなネットワーク」。

今回のWSハンズオン手順1.6では " EC2_SUBNET_CIDR='10.0.0.0/24' " を設定しています。

この表記から サブネットマスク が "/24 = 255.255.225.0" だから、 IPアドレス数:256 (ホストアドレス数:254) のネットワークにしたのだなとわかります(ネットワークエンジニアさんは)。

この場合サブネットの IPアドレス数は256で、VPCIPアドレス数の65536よりも小さいので設定可能となります。


その他サブネットとしては、 10.11.22.0/24 とか 10.1.1.0/24 とか 10.1.2.128/25 なども必要に応じて設定することが可能だなというのを、先程紹介したツールで確認いただけると、腑に落ちるのではないでしょうか。


※ある程度のパターンみてみないと、慣れないと思いますので、ハンズオンする分には淡々と進めましょう。

※数字が気になる人は2進数で考えてもらえると良いです。


デフォルトVPC

今回のハンズオンでは使いませんでした。

前回のEC2ハンズオン では利用されてるので、こっちが気になる人は前回の資料を参照するといいかも。

講師も、何度も繰り返して話をされてましたが、デフォルトVPCはあくまでもお試しとして使うのが良く、本番環境にはなじまないものです。

とはいえ、1台しかEC2インスタンスあげないことがわかってる状況であれば、使ったらいいかも?(ただし、それがスケールしないと判断できていればといえるかもなぁ)

相手がデフォルトVPCか、カスタムVPC(自分で定義したものか)で、AWS-CLIのパラメータも変わってくるので、操作対象を意識しながらたたく必要はありそうです。

※デフォルトVPCは、デフォルトってだけで削除可能(また、AWS-CLIでは専用コマンドで再作成も可能)


AWS CloudFormation テンプレート使い所

VPCとは少し外れますが、ハンズオン途中で出ていた話題。

講師の印象だと、こういう区切りがいいんじゃないかとの提案(押し付けじゃないところが、また良いと感じます)。

  • 30回以上つかうなら、テンプレートがいいのではないか?
  • それを下回るとき、2〜3回ぐらいしか使わないとわかってるものは、CLIで十分。


その理由としては、次のような話を紹介してくれていました。

  • AWS CloudFormation が対応できない機能があったときには、CLIを使うことになる。が、そのCLIの管理は?
  • 引き継ぎで成功した話をきかない。導入した人は、良いですよと話をされるのだけれども。
  • 密結合になり、疎結合に作られてるAPIと合わない(もったいない?)


逆に、使うと良いシーンの話も。

  • チームの中に、明るい人が複数いる。互いの癖がわかるぐらいに?
  • 特定の定形パターンが固まってる検証環境の構築(確かに、最近AWS提供のハンズオン資料でも増えたような気がする)

感覚値的にはなるほどと感じました。

とはいえ、僕も、聞いてるだけだとハッキリはわからないので、一度試してみないと。


その他

今回は、30分遅れの参加だったので、ギリ終わらせた感じでした。

cloud9構築のところから説明いただけてたので間に合ったぁ〜

ハンズオンは終わらせることが、まず大事(その後、復習)というのを達成できました(笑


波田野さん、本日も濃いハンズオンありがとうございました!!