Amazon EC2 で yum が使えなくなった

環境AWS, Linux

ある日突然、 EC2 上の Amazon Linux で yum コマンド( yum list installed )を打つと HTTP Error 403 – Forbidden エラーが出て使えなくなった。

スポンサーリンク

エラー内容

$ yum list installed
Loaded plugins: priorities, update-motd, upgrade-helper
Could not retrieve mirrorlist http://repo.us-east-1.amazonaws.com/latest/updates/mirror.list error was
14: HTTP Error 403 - Forbidden

原因

エラーが発生したのは、EC2 と S3 をプライベートサブネットでアクセスできるよう VPC エンドポイントを設置した直後だった。 VPC エンドポイントのポリシーは、特定のバケットにのみアクセス可能としてあり、原因はこれだった。

まず Amazon Linux の yum リポジトリは S3 上に置いてある。
そのため、自分で作った VPC エンドポイントのポリシーのせいで S3 上の yum リポジトリへのアクセスが拒否された。

解決方法

VPC エンドポイントのポリシーで yum リポジトリへのアクセスを許可する。

Resource にこれを追記する。

"arn:aws:s3:::repo.us-east-1.amazonaws.com",
"arn:aws:s3:::repo.us-east-1.amazonaws.com/*"

Amazon Linux の リポジトリとは、各リージョン内の S3 バケットだった。

VPC エンドポイントのポリシー

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

リポジトリ名とかを気にせず、なんでも使えるようにしたい場合

"arn:aws:s3:::*.amazonaws.com",
"arn:aws:s3:::*.amazonaws.com/*"

Posted by Agopeanuts