🌊

[AWS] サイトを公開するまで

2024/09/13に公開

はじめに

AWSを使って外部にサイトを公開するまでの備忘録です。
グローバルIPアドレスを取得するのに手こずりました。

動作環境

  • macOS 14.4 (23E214)

使用したAWSのサービス

  • VPC: 仮想ネットワークのプラットフォーム (Amazon Virtual Private Cloud)
    • サブネット: VPC内でさらに分割されたネットワーク
    • インターネットゲートウェイ: VPCとインターネットを繋げる門番。サブネットに設定
    • ルートテーブル: パケットの宛先(IPアドレス)をどこに送るのかを決定する表
  • EC2: 仮想サーバー (Amazon Elacstilc Computed Cloud)

手順

VPCの作成

alt text

設定

alt text

  1. 作成するリソースを、VPCのみに設定する
  2. VPC名を入力
  3. IPv4 CIDRを、10.0.0.0/16に設定する

サブネットの作成

サブネットを作成をクリック

  1. サブネット名を入力
  2. IPV4 CIDRを10.0.10.0/24に設定する

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

  1. インターネットゲートウェイ名を入力
  2. 作成したVPCをデタッチする

ルートテーブルの作成

  1. ルートテーブル名を入力
  2. 作成したVPCを選択
  3. 下モーダルのサブネットの関連付けタブから、作成したサブネットを選択する
  4. 下モーダルのルートタブのルートを編集をクリックし、画像のように入力する

EC2の作成

変更箇所を赤枠で囲みました

  1. EC2名を入力する
    alt text
  2. 新しいキーペアを作成をクリックして、入力する

alt text

  1. 一番下の赤枠のように、パブリックIPアドレスの自動割り当てが有効化されているか確認する

無効化されていたらパブリックIPアドレスが割り当てられなくなるので注意

sshでEC2にログイン

  1. パブリックIPv4アドレスをコピー
    alt text
    2.ダウンロードしたpemファイルの権限を変更
% chmod 600 Downloads/[your pem file]
  1. sshでログインする
% ssh -i Downloads/[your pem file] ec2-user@[public IP]

Apacheのインストール

ssh接続して実行する
Amazon Linux はRedHat系なので、パッケージ管理にyumを使う

% sudo yum update -y

# Apacheのインストール
$ sudo yum -y install httpd

# Apachの起動 
% sudo systemctl start httpd.service

# 自動的に起動させる
% sudo systemctl enable httpd.service

起動しているか確認
Active: activeになっていたらOK

% sudo systemctl status httpd

Active: active (running) since Thu 2024-09-12 07:57:33 UTC; 7h ago
       Docs: man:httpd.service(8)
   Main PID: 25860 (httpd)

サーバーを公開

HTTP通信用に、80番ポートを開放する

  1. インスタンスからセキュリティセキュリティグループインバウンドルールの編集
  2. ルールを追加から、httpを追加する

実際にアクセスしてみる

ブラウザで、パブリックIPアドレスを入力すると、以下のような画面が出て成功!

client_loop: send disconnect: Broken pipe のエラーが出たら

% [ec2-user@~]$ client_loop: send disconnect: Broken pipe

hostとクライアントの/.ssh/config/に以下を追加する

おわりに

lambda API gateway S3 なんかも使っていくぞ

参考

https://business.ntt-east.co.jp/content/cloudsolution/column-10.html

https://qiita.com/happy663/items/8b17ad716bf62d487ea5

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectionTimeout

GitHubで編集を提案

Discussion