Featured image of post 「Cannot find a valid baseurl for repo」の対処【NATゲートウェイ】

「Cannot find a valid baseurl for repo」の対処【NATゲートウェイ】

AWSのプライベートサブネットのEC2でyumが「Cannot find a valid baseurl for repo: amzn-main/latest」で失敗する原因はインターネットに出られないこと。NATゲートウェイを作成してルートテーブルに追加すれば解決します♪

1171文字

プライベートサブネットでyumエラー

yumインストールが出来ない

いつも通りpublicサブネットとprivateサブネットのEC2インスタンスに対して、Ansibleを使ってサーバー構築をしていた際に、yumを使ってモジュールをインストールしようとしたところpublicサブネット上のEC2インスタンスには正常にインストール出来ましたが、privateサブネット上のEC2インスタンスでは以下のエラーが発生してしまい、インストールが出来ませんでした。

エラーログ
Failure talking to yum: Cannot find a valid baseurl for repo: amzn-main/latest

一体これは一体何が原因なのでしょう。。。

インターネットに出れない事が原因

これは、AWSのyumリポジトリへのアクセスをする際に、デフォルトのyum設定の場合は、AWSのインターネットゲートウェイを介して通信が行われるのですが、プライベートサブネット内のEC2インスタンスは内部アドレスしか持ってないのでインターネットへの接続が出来ません。

NATゲートウェイの利用

その問題を解決するために、AWSにはNATゲートウェイというものが存在しています。

NATとはNetwork Address Translationの略で、AWSのNATゲートウェイは自分自身へのインターネットからの接続は遮断するが、自分自身のインターネットへの接続は許可するための機能です。

では、実際に作成してみましょう。

手順

NATゲートウェイの作成

AWSのサービスメニューからネットワーキング&コンテンツ配信>VPCを選択します。

次に、左部メニューからNATゲートウェイを選択し、NATゲートウェイの作成ボタンをクリックします。

すると、NATゲートウェイの作成ダイアログが表示されるので、privateサブネットを選択し、ElasticIPを選択(必要があれば新しいEIPの作成ボタンをクリックして作成)し、NATゲートウェイの作成ボタンをクリックします。

正常に作成が完了すると、以下のような画面が表示されるのでルートテーブルの編集ボタンをクリックします。

次に、関連付けたいprivateルートテーブルにチェックを入れ、ルートタブを選択し、編集ボタンをクリックします。

送信先に0.0.0.0/0を入力し、ターゲットにNATゲートウェイのIDを入力したら保存ボタンをクリックします。

これでprivateルートテーブルからインターネットへの接続が出来るようになりました。

確認

では、もう一度yumインストールを試してみましょう。

実行ログ
Installed:
  docker.x86_64 0:18.03.1ce-2.141.amzn1

Dependency Installed:
  bzip2.x86_64 0:1.0.6-8.12.amzn1
  dash.x86_64 0:0.5.5.1-4.5.amzn1
  device-mapper.x86_64 0:1.02.135-1.31.amzn1
  device-mapper-libs.x86_64 0:1.02.135-1.31.amzn1
  dracut.noarch 0:004-409.31.amzn1
  file.x86_64 0:5.30-11.34.amzn1
  grubby.x86_64 0:7.0.15-7.8.amzn1
  kbd.x86_64 0:1.15-11.4.amzn1
  kbd-misc.noarch 0:1.15-11.4.amzn1
  kernel.x86_64 0:4.14.42-52.37.amzn1
  libcgroup.x86_64 0:0.40.rc1-5.11.amzn1
  libseccomp.x86_64 0:2.3.1-2.4.amzn1
  libtool-ltdl.x86_64 0:2.4.2-20.4.8.5.32.amzn1
  xfsprogs.x86_64 0:4.5.0-9.21.amzn1

Complete!

正常にyumインストールが出来るようになりましたね。

終わりに

AWSのゲートウェイ周りの仕組みが分かってないと、原因と対応方法がわかりにくい現象でしたね。

お困りの際は、是非この記事を参考にして対応してみてください。