マルチAZ構成のプライベートサブネットに配置したEC2からyumが通らない件について対処方法とまとめました。
一般的な堅牢な構成の環境構築をしてみたく、プライベートサブネットに配置したEC2にApacheをインストールしWebServer化し、パブリックサブネットに配置したALBから各AZ配下のEC2に対してトラフィックを流す構成です。
構成は以下です。
![](https://i2.wp.com/kyrieee.com/wp-content/uploads/2022/08/multiAZ_privatesubnt_ec2-1.png?resize=880%2C476&ssl=1)
Table of Contents
プライベートサブネットに配置したEC2にyumが通らないポイント
プライベートサブネットは基本的にインターネットゲートウェイにルートが向いていないため、インターネットに接続できない点がyumが通らない最大のポイントになります。
なぜインターネットに接続しなければ行けないか?については以下の記事をご参考にしていただければと思います。
参考 aptコマンドのUbuntuパッケージ管理についてITサービス指向エンジニアブログEC2からyum update
WebServer-dev-1, WebServer-dev-2が今回対象のEC2となります。
![](https://i1.wp.com/kyrieee.com/wp-content/uploads/2022/08/image.png?resize=880%2C327&ssl=1)
この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の画面を開き、エンドポイントを選択し、エンドポイントを作成を選択します。
![](https://i2.wp.com/kyrieee.com/wp-content/uploads/2022/08/image-3.png?resize=880%2C120&ssl=1)
サービスカテゴリを「AWSサービス」を選択し、サービスのフィルターにて「com.amazonaws.ap-northeast-1.s3」を検索し、タイプがGatewayのものを選択します。
![](https://i0.wp.com/kyrieee.com/wp-content/uploads/2022/08/image-1.png?resize=861%2C697&ssl=1)
![](https://i1.wp.com/kyrieee.com/wp-content/uploads/2022/08/image-4.png?resize=828%2C284&ssl=1)
対象のVPCを選択します。
![](https://i0.wp.com/kyrieee.com/wp-content/uploads/2022/08/image-5.png?resize=769%2C165&ssl=1)
ルートテーブルの選択項目で、EC2を配置しているプライベートサブネットのルートテーブルIDを選択します。
![](https://i0.wp.com/kyrieee.com/wp-content/uploads/2022/08/image-6.png?resize=807%2C207&ssl=1)
これでエンドポイントを作成します。
これでプライベートサブネットに配置したEC2からVPCエンドポイント経由でS3に接続できyum updateが通るようになります。
yumコマンドが通れば、Apacheのインストールも問題なくできるようになります。
現在AWS初学者~中級者へ向けたオンライン学習サービスCloudTechのお得なクーポンを配信しております。
興味がある方は以下のリンクから確認してみてください。