マルチAZ構成のプライベートサブネットに配置したEC2からyumが通らない件について対処方法とまとめました。
一般的な堅牢な構成の環境構築をしてみたく、プライベートサブネットに配置したEC2にApacheをインストールしWebServer化し、パブリックサブネットに配置したALBから各AZ配下のEC2に対してトラフィックを流す構成です。
構成は以下です。
Table of Contents
プライベートサブネットに配置したEC2にyumが通らないポイント
プライベートサブネットは基本的にインターネットゲートウェイにルートが向いていないため、インターネットに接続できない点がyumが通らない最大のポイントになります。
なぜインターネットに接続しなければ行けないか?については以下の記事をご参考にしていただければと思います。
参考 aptコマンドのUbuntuパッケージ管理についてITサービス指向エンジニアブログEC2からyum update
WebServer-dev-1, WebServer-dev-2が今回対象のEC2となります。
このWebServerに対してApacheのインストールを実行しようと、まずはパッケージを最新の状態にすべく
yum updateを行い、Apacheのインストールを実行しようとしましたが、yum updateを実行できません。
最初は「あれ?なんでだろう?」と「プライベートサブネット EC2 yum 通らない」などでググってみると、その理由がすぐにわかりました。
先に述べた通り、プライベートサブネットに配置したEC2はインターネットに出れない環境に構築しているため、リポジトリにアクセスできません。
S3にエンドポイントで経由してyumを実行する
調べて見ると、AWS公式ドキュメントにも記載がありました。
参考 インターネットにアクセスせずに yum を更新したり、パッケージをインストールしたりするにはどうすればよいですか?AWS公式ドキュメント結論はVPCエンドポイントからS3にアクセスし、パッケージの更新やインストールを行います。
理由はAWSの公式ドキュメントを引用しますが、Amazon LinuxはS3にリポジトリがホストされているため、S3に接続さえできればyumを実行することができるようです。
Amazon Linux リポジトリは、Amazon Simple Storage Service (Amazon S3) バケットでホストされます。インターネット接続なしでインスタンスにパッケージを更新したりインストールしたりするには、S3 Amazon Virtual Private Cloud (Amazon VPC) ゲートウェイエンドポイントを作成します。S3 VPC ゲートウェイエンドポイントに、リポジトリバケットへのアクセスを許可するポリシーを含めます。次に、VPC エンドポイントをインスタンスサブネットのルーティングテーブルに関連付けます。
S3にVPCエンドポイント経由で接続するには
AWSマネジメントコンソールからVPCの画面を開き、エンドポイントを選択し、エンドポイントを作成を選択します。
サービスカテゴリを「AWSサービス」を選択し、サービスのフィルターにて「com.amazonaws.ap-northeast-1.s3」を検索し、タイプがGatewayのものを選択します。
対象のVPCを選択します。
ルートテーブルの選択項目で、EC2を配置しているプライベートサブネットのルートテーブルIDを選択します。
これでエンドポイントを作成します。
これでプライベートサブネットに配置したEC2からVPCエンドポイント経由でS3に接続できyum updateが通るようになります。
yumコマンドが通れば、Apacheのインストールも問題なくできるようになります。
現在AWS初学者~中級者へ向けたオンライン学習サービスCloudTechのお得なクーポンを配信しております。
興味がある方は以下のリンクから確認してみてください。