EC2インスタンスでyumコマンドを打った時に403エラーが返ってきた件

EC2インスタンスで yum install をしたところ、なぜか次のようなエラーが返ってきました。

Could not retrieve mirrorlist http://repo.ap-northeast-1.amazonaws.com/latest/main/mirror.list error was
14: HTTP Error 403 - Forbidden

このままだと新しいパッケージをインストールできないので、調査しました。

原因…VPCエンドポイントの設定

EC2インスタンスで403エラーとなる原因の一つとして、インスタンスから外へ向かう通信がうまくいっていない可能性が考えられます。

セキュリティーグループのアウトバウンド設定、Elastic IP、パブリックIPのアサイン状況など確認しましたが、問題ありませんでした。

落とし穴だったのが、AWSの場合はVPCにS3エンドポイントがあると、S3でリポジトリファイルが保存されるため、yumコマンドが失敗するとのことです。

解決策…VPCエンドポイントのポリシー修正

repo.ap-northeast-1.amazonaws.com との通信を許可するため、VPCエンドポイントのResouceに下記を追記します。

"arn:aws:s3:::repo.ap-northeast-1.amazonaws.com",
"arn:aws:s3:::repo.ap-northeast-1.amazonaws.com/*"
例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "*",
"Resource": [
"arn:aws:s3:::repo.ap-northeast-1.amazonaws.com",
"arn:aws:s3:::repo.ap-northeast-1.amazonaws.com/*"
]
}
]
}

これで yumコマンドが通るようになりました。

同じ要領で、マカレルエージェントのインストールを行うには次のポリシーを許可する必要があります。

"arn:aws:s3:::yum.mackerel.io",
"arn:aws:s3:::yum.mackerel.io/*",