0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エンドポイントポリシーによりAmazon Linux 2023 dnf yumがStatus code: 403

Last updated at Posted at 2024-09-01

これは何か?

AWSのEC2セットアップ中にdnfやyumを使用してもStatus code: 403となってしまい、インストールができなくて解決までに時間を要しました。
そのため誰かの助けになればと思い書きました。
もし筆者の間違いや、認識、思い違いなどがあればご指摘ください。

ではスタート!!

事件が起きました!Amazon Linux 2023でdnfやyumで403

AWSのEC2のお話しです。
Dockerコンテナ内ではなく、ホストマシンのお話です。
調べるとリポジトリのロックなどの記事がありますが、欲しい情報はそうでは、無かった。。。

環境

  • 東京リージョン ap-northeast-1 

結論

  • s3向けのゲートウェイ型エンドポイントのポリシーに1行追加しました。

  • 追加したポリシーがこれ!
    "arn:aws:s3:::al2023-repos-ap-northeast-1-de612dc2/*"

  • なおS3へのバケットポリシーがフルアクセス"Resource": "*"の状態であれば、このような問題は発生しないです。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Principal": "*",
			"Action": "s3:*",
			"Resource": [
				"arn:aws:s3:::hoge-bucket",
				"arn:aws:s3:::hoge-bucket/*",
				"arn:aws:s3:::al2023-repos-ap-northeast-1-de612dc2/*" ←これを追加
			]
		}
	]
}
  • S3へのゲートウェイエンドポイントを作成したVPCでは、リポジトリ(S3)への許可が必要ということに気がつきました。

状態としてはこのような感じです。

gitでもdockerでもインストールしようとすると必ず怒られます。

$ sudo dnf install -y git
Amazon Linux 2023 repository                                                                                                                                                                                                             813  B/s | 243  B     00:00    
Errors during downloading metadata for repository 'amazonlinux':
  - Status code: 403 for https://al2023-repos-ap-northeast-1-de612dc2.s3.dualstack.ap-northeast-1.amazonaws.com/core/mirrors/2023.5.20240819/x86_64/mirror.list (IP: 52.219.16.134)
  - Status code: 403 for https://al2023-repos-ap-northeast-1-de612dc2.s3.dualstack.ap-northeast-1.amazonaws.com/core/mirrors/2023.5.20240819/x86_64/mirror.list (IP: 52.219.12.70)
  - Status code: 403 for https://al2023-repos-ap-northeast-1-de612dc2.s3.dualstack.ap-northeast-1.amazonaws.com/core/mirrors/2023.5.20240819/x86_64/mirror.list (IP: 52.219.162.100)
Error: Failed to download metadata for repo 'amazonlinux': Cannot prepare internal mirrorlist: Status code: 403 for https://al2023-repos-ap-northeast-1-de612dc2.s3.dualstack.ap-northeast-1.amazonaws.com/core/mirrors/2023.5.20240819/x86_64/mirror.list (IP: 52.219.12.70)
Amazon Linux 2023 Kernel Livepatch repository                                                                                                                                                                                            841  B/s | 243  B     00:00    
Errors during downloading metadata for repository 'kernel-livepatch':
  - Status code: 403 for https://al2023-repos-ap-northeast-1-de612dc2.s3.dualstack.ap-northeast-1.amazonaws.com/kernel-livepatch/mirrors/al2023/x86_64/mirror.list (IP: 52.219.199.36)
  - Status code: 403 for https://al2023-repos-ap-northeast-1-de612dc2.s3.dualstack.ap-northeast-1.amazonaws.com/kernel-livepatch/mirrors/al2023/x86_64/mirror.list (IP: 52.219.172.56)
  - Status code: 403 for https://al2023-repos-ap-northeast-1-de612dc2.s3.dualstack.ap-northeast-1.amazonaws.com/kernel-livepatch/mirrors/al2023/x86_64/mirror.list (IP: 52.219.0.198)
Error: Failed to download metadata for repo 'kernel-livepatch': Cannot prepare internal mirrorlist: Status code: 403 for https://al2023-repos-ap-northeast-1-de612dc2.s3.dualstack.ap-northeast-1.amazonaws.com/kernel-livepatch/mirrors/al2023/x86_64/mirror.list (IP: 52.219.172.56)
Ignoring repositories: amazonlinux, kernel-livepatch
No match for argument: git
Error: Unable to find a match: git

原因と解決策

EC2とS3の間の通信料金を無料にする目的で、VPCは特定S3バケットに対して、VPCエンドポイントのゲートウェイ型を使っていました。

エンドポイントポリシーのResouceにはhoge-bucketバケットのみ許可しています。

			"Resource": [
				"arn:aws:s3:::hoge-bucket",
				"arn:aws:s3:::hoge-bucket/*",
			]

下記の記事を参考に、Resouceにリポジトリにアクセスできる許可を追加したら解決です!。

  • s3向けのゲートウェイ型エンドポイントのポリシーに1行追加
  • 追加したポリシー
    "arn:aws:s3:::al2023-repos-ap-northeast-1-de612dc2/*"
  • 参考にした記事
    image.png

試行錯誤と考察

  • エラー内容ではリポジトリにアクセスできない内容だった
  • エンドポイントを作成していなかったデフォルトVPCで、Amazon Linux 2023をテストしたら、インストールができていた事もあり、何か根本的に変だ?
  • ネットワークに問題があると睨んでいたが、ルートテーブル、サブネット、など付け替えましたが変わりません。
  • 『EC2とS3の間の通信料金を無料にする』は、S3に対してインターネットを通らないという事になるのですが、リポジトリがS3に置いてあることに気がつくまで、しばらく時間がかかった。
  • よって、S3へのゲートウェイエンドポイントを作成していなかったデフォルトVPCでテストが成功していたのは、①インターネット経由でリポジトリ(S3)へ通信しているのか、②ひょっとしたら暗黙のエンドポイントがあってresouceのポリシーがフルアクセス"Resource": "*"の状態なものか、のどちらかであると考えられ、エンドポイントを作成しているVPCで、S3への許可が必要ということに気がつきました。
  • なおS3へのバケットポリシーがフルアクセス"Resource": "*"の状態であれば、このような問題は発生しないです。

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?