【AWS】Cloud9環境構築を丁寧に解説
はじめに
プログラミング初学者向けに、AWSのcloud9を用いて環境開発構築の手順をまとめている。
AWSのアーキテクチャの図を用いながら丁寧に解説を行っている。
【今回完成目標とするAWS Architecture】
1.AWS Management Consoleにログイン
https://aws.amazon.com/jp/console/ にアクセスし、コンソールにサインインする。
2.VPCの作成
2-1.VPC作成の準備
コンソールの上部メニューから「サービス」を選択し、「VPC」と検索し、VPCサービスをクリックする。
2-2.VPC作成
VPCダッシュボードから「VPCを作成」ボタンをクリックし、「VPCの作成」ページで以下の情報を入力し、「VPCを作成」をクリックしてVPCを作成します。
項目 | 内容 |
---|---|
名前タグ | my-vpc-01(任意の名前) |
IPv4 CIDRブロック | 10.0.0.0/16 |
IPv6 CIDRブロック | 「Pv6 CIDR ブロックなし」または「AmazonのIPv6 CIDRブロック」を選択 |
テナンシー | デフォルト |
実際の画面
【ここまでのAWS Architecture】
3.サブネットの作成
3-1.サブネットを作成の準備
VPCダッシュボードの「サブネット」メニューから「サブネットの作成」をクリックし、以下の情報を入力します:
項目 | 内容 |
---|---|
VPC | 先ほど作成したVPC(my-vpc-01)を選択 |
実際の画面
3-2.1つ目のサブネットの作成
サブネット1の設定で以下の情報を入力し、「新しいサブネットを追加」をクリックします。
項目 | 内容 |
---|---|
サブネット名 | my-public-subnet1(任意) |
アベイラビリティゾーン(AZ) | 「アジアパシフィック(東京)/ap-northeast-1a」を選択 |
IPv4 CIDRブロック | 10.0.1.0/24 |
3-3.2つ目のサブネットの作成
サブネット2の設定で以下の情報を入力し、「サブネットを追加」をクリックする。
項目 | 内容 |
---|---|
サブネット名 | my-public-subnet2(任意) |
アベイラビリティゾーン(AZ) | 「アジアパシフィック(東京)/ap-northeast-1c」を選択 |
IPv4 CIDRブロック | 10.0.2.0/24 |
3-4.3つ目のサブネットの作成
サブネット3の設定で以下の情報を入力し、「サブネットを追加」をクリックする。
項目 | 内容 |
---|---|
サブネット名 | my-private-subnet3(任意) |
アベイラビリティゾーン(AZ) | 「アジアパシフィック(東京)/ap-northeast-1a」を選択 |
IPv4 CIDRブロック | 10.0.3.0/24 |
3-5.4つ目のサブネットの作成
サブネット4の設定で以下の情報を入力し、「サブネットを作成」をクリックする。
項目 | 内容 |
---|---|
サブネット名 | my-private-subnet4(任意) |
アベイラビリティゾーン(AZ) | 「アジアパシフィック(東京)/ap-northeast-1c」を選択 |
IPv4 CIDRブロック | 10.0.4.0/24 |
実際の画面
【ここまでのAWS Architecture】
4.インターネットゲートウェイの作成とアタッチ
4-1.インターネットゲートウェイの作成
VPCダッシュボードの「インターネットゲートウェイ」メニューから「インターネットゲートウェイの作成」をクリックし以下情報を入力し、「インターネットゲートウェイを作成」をクリックします。
項目 | 内容 |
---|---|
名前タグ | my-internet-gateway(任意) |
実際の画面
4-2.インターネットゲートウェイのアタッチ
作成したインターネットゲートウェイを選択し、「アクション」ボタンをクリックして「VPCにアタッチ」を選択し、さらに先ほど作成したVPCを選択し、「インターネットゲートウェイのアタッチ」をクリックする。
実際の画面
【ここまでのAWS Architecture】
5.ルートテーブルの作成と設定
5-1.ルートテーブルの作成準備
VPCダッシュボードの「ルートテーブル」メニューを押す。VPC作成時に、自動的に1つのルートテーブルが作成されていることを確認する。確認後、「ルートテーブルの作成」をクリック。
5-2.1つ目(public用)のルートテーブルの作成
ルートテーブルを作成画面にて、以下の情報を入力し、「ルートテーブルを作成」をクリックする。
項目 | 内容 |
---|---|
名前タグ | my-public-routetable(任意) |
VPC | my-vpc-01 |
実際の画面
5-3.2つ目(private用)のルートテーブルの作成
VPC作成時に、自動的に作成されたルートテーブルの名前を編集する。
項目 | 内容 |
---|---|
名前タグ | my-private-routetable(任意) |
実際の画面
5-4.1つ目(public用)ルートテーブルを編集する
作成したルートテーブルを選択し、「ルート」タブをクリックし、「ルートの編集」をクリックし、ルートを編集画面に遷移する。更に「ルートを追加」をクリックし、以下の情報を入力完了後、「変更を保存」をクリックする。
項目 | 内容 |
---|---|
送信先 | 0.0.0.0/0(デフォルトゲートウェイ) |
ターゲット | 作成したインターネットゲートウェイ(my-internet-gateway) |
実際の画面
【ここまでのAWS Architecture】
6.サブネットの関連付け
6-1.サブネットを関連付けの準備(public)
VPCダッシュボードのルートテーブルから作成したルートテーブル(my-public-routetable
)を選択し、「サブネットの関連付け」タブをクリックし、「サブネットの関連付けを編集」をクリックする。
実際の画面
6-2.サブネットの関連付けを編集(public)
サブネット関連付け編集画面にて、my-public-routetable
と関連付けたいルートテーブルを選択し、「関連付けを保存」をクリックする。
実際の画面
6-3.サブネットの関連付けの準備(private)
VPCダッシュボードのルートテーブルから作成したルートテーブル(my-private-routetable
)を選択し、「サブネットの関連付け」タブをクリックし、「サブネットの関連付けを編集」をクリックする。
実際の画面
6-2.サブネットの関連付けを編集(private)
サブネット関連付け編集画面にて、my-private-routetable
と関連付けたいルートテーブルを選択し、「関連付けを保存」をクリックする。
実際の画面
【ここまでのAWS Architecture】
7.セキュリティグループの作成
7-1.セキュリティグループの作成の準備
セキュリティグループは、インスタンスレベルでネットワークアクセスを制御する仮想ファイアウォールである。EC2ダッシュボードの「セキュリティグループ」メニューから「セキュリティグループの作成」をクリックします。
実際の画面
7-2.セキュリティグループの作成
セキュリティグループを作成画面にて、以下の情報を入力し、インバウンドルールとアウトバウンドルールを設定する。完了後、「セキュリティグループを作成」をクリックする。
【基本的な詳細】
項目 | 内容 |
---|---|
セキュリティグループ名 | my-security-group1(任意) |
説明 | my-vpc-01 |
VPC | 作成したVPC(my-vpc-01) |
【インバウンドルール①】
項目 | 内容 |
---|---|
タイプ | SSH |
プロトコル | TCP |
ポート範囲 | 22 |
ソース | Anywhere-IPv4(0.0.0.0/0) |
【インバウンドルール②】
項目 | 内容 |
---|---|
タイプ | HTTP |
プロトコル | TCP |
ポート範囲 | 80 |
ソース | Anywhere-IPv4(0.0.0.0/0) |
【インバウンドルール③】
項目 | 内容 |
---|---|
タイプ | HTTP |
プロトコル | TCP |
ポート範囲 | 80 |
ソース | Anywhere-IPv6(::/0) |
【アウトバウンドルール】
項目 | 内容 |
---|---|
タイプ | すべてのトラフィック |
プロトコル | すべて |
ポート範囲 | すべて |
送信先 | 任意のIPレンジ(0.0.0.0/0) |
すべてのソースからのTCP 80(HTTP)と、TCP 22(SSH)の接続を許可する設定としている。
8.Cloud9環境の作成とEC2インスタンスの作成
8-1.Cloud9環境とEC2インスタンスの作成準備
コンソールの上部メニューから「サービス」横の検索ボックスから、「cloud9」と入力し、表示されたcloud9サービスをクリックする。Cloud9ダッシュボードから「環境を作成」ボタンをクリックします。
8-2.インスタンスの起動を行う
EC2ダッシュボードから「インスタンスを起動」ボタンをクリックし、以下の設定項目の入力を行う。入力が完了したら、「インスタンス起動」ボタンをクリックする。(ネットワーク設定は「編集」ボタンをクリックする)
項目 | 内容 |
---|---|
名前 | My cloud9 |
説明・オプション | 任意 |
環境タイプ | 新しいEC2インスタンスを選択 |
インスタンスタイプ | t2.micro |
プラットフォーム | Amazon Linux 2 |
タイムアウト | 30分 |
ネットワーク設定(接続) | セキュアシェル(SSH) |
VPC設定 | 作成したVPC(my-vpc-01) |
サブネット | 作成したパブリックサブネット(my-public-subnet1) |
実際の画面
9-3.Cloud9を開く
下記画面が表示されれば環境構築完了
【完成したAWS Architecture】
(おまけ)オリジナルでEC2インスタンスの作成する方法
インスタンス作成の準備
コンソールの上部メニューから「サービス」横の検索ボックスから、「EC2」と入力し、表示されたEC2サービスをクリックする。
インスタンスの起動を行う
EC2ダッシュボードから「インスタンスを起動」ボタンをクリックし、以下の設定項目の入力を行う。入力が完了したら、「インスタンス起動」ボタンをクリックする。(ネットワーク設定は「編集」ボタンをクリックする)
項目 | 内容 |
---|---|
名前 | My web server1(任意) |
Amazon マシンイメージ | Amazon Linux 2 AMI(HVM) |
インスタンスタイプ | t2.micro |
キーペア | 新しいキーペアの作成ボタンをクリック |
キーペア名 | my-key-pair(任意) |
キーペア | ED25519 |
プライベートキーファイル形式 | .pem |
VPC | 作成したVPC(my-vpc-01) |
サブネット | 作成したサブネット(my-public-subnet1) |
パブリックIPの自動割り当て | 有効化 |
ファイアウォール (セキュリティグループ) | 既存のセキュリティグループを選択する |
共通のセキュリティグループ | 作成したセキュリティグループ(my-security-group) |
高度な詳細のIAMインスタンスプロフィール | 作成したIAM(my-IAM1) |
実際の画面
キーペアのタイプ
・AWSでは主に2つのキーペアのタイプ(RSAとED25519)が選べる。
RSA:
互換性: 最も広くサポートされている鍵の種類です。多くのSSHクライアント、サーバー、及びツールでサポートされています。
セキュリティ: 安全性が高く、2048ビット以上の鍵サイズを使用することが推奨されます。
選択時の理由: 互換性が重要な場合や、多様なツールと組み合わせて使う場合に最適です。
ED25519:
互換性: 比較的新しい鍵の種類ですが、近年多くのシステムでサポートが拡がっています。ただし、古いシステムやツールではサポートされていない場合があります。
セキュリティ: 非常に強力なセキュリティを提供し、より短い鍵長で高い安全性を提供します。
選択時の理由: 最新のセキュリティプロトコルを利用したい場合や、新しいシステムを使用している場合に最適です。
プライベートキーファイル形式
キーファイル形式は、使用するSSHクライアントに依存する。
.pem (OpenSSHで使用する場合):
互換性: OpenSSH(Linux、macOS、Unixなど)の標準フォーマット。多くのサーバー管理ツールやSSHクライアントでサポートされている。
選択時の理由: LinuxやmacOSの環境で作業する場合、またはOpenSSHクライアントを使用する場合に最適。
.ppk (PuTTYで使用する場合):
互換性: Windows環境で広く使用されているPuTTYの専用フォーマット。PuTTYgenを使用して.pemファイルを.ppk形式に変換することもできる。
選択時の理由: Windows環境でPuTTYを使用する場合に最適。
キーペアとキーファイル形式の選定ポイント
具体的な選択例
LinuxまたはmacOSを使用している場合:
キーペアのタイプ: RSA または ED25519(互換性重視ならRSA、セキュリティ重視ならED25519)
プライベートキーファイル形式: .pem
Windowsを使用している場合:
キーペアのタイプ: RSA(PuTTYがRSAをサポートしているため)
プライベートキーファイル形式: .ppk(PuTTYを使用する場合)
マルチプラットフォーム環境(WindowsとLinux/macOSの両方)を使用する場合:
キーペアのタイプ: RSA(幅広い互換性のため)
プライベートキーファイル形式: 両方(.pemを基本として、必要に応じてPuTTYgenで.ppkに変換)
Discussion