プライベートサブネットにEC2を配置するとyumが通らない件

multiAZ_privatesubnt_ec2

マルチAZ構成のプライベートサブネットに配置したEC2からyumが通らない件について対処方法とまとめました。

一般的な堅牢な構成の環境構築をしてみたく、プライベートサブネットに配置したEC2にApacheをインストールしWebServer化し、パブリックサブネットに配置したALBから各AZ配下のEC2に対してトラフィックを流す構成です。

構成は以下です。

プライベートサブネットに配置した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のお得なクーポンを配信しております。

興味がある方は以下のリンクから確認してみてください。

AWSの学習 お得なクーポンを使って学んでみませんか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です