NoSuchBucket: The specified bucket does not exist
AWS S3で存在しないバケットにアクセスした際のエラー
概要
AWS S3で存在しないバケットにアクセスしようとした際に発生するエラーです。バケット名の間違いや、削除されたバケットへのアクセス、リージョンの不一致が原因として考えられます。
エラーメッセージ
An error occurred (NoSuchBucket) when calling the GetObject operation: The specified bucket does not exist
| |
原因
- バケット名の間違い: タイプミスや大文字小文字の違い
- バケットが存在しない: まだ作成されていない、または削除された
- リージョンの不一致: 異なるリージョンのバケットにアクセス
- 環境変数の誤り: 環境変数で指定したバケット名が間違っている
- アカウントの違い: 別のAWSアカウントのバケット
解決策
1. バケットの存在確認
| |
2. バケット名を確認
| |
3. リージョンを明示的に指定
| |
| |
4. バケットを作成
| |
5. 環境変数を確認
| |
6. エラーハンドリング
| |
7. Terraformでの対処
| |
8. CloudFormationでの対処
| |
バケット命名規則
- 3〜63文字
- 小文字、数字、ハイフン、ピリオドのみ
- 小文字または数字で開始
- IPアドレス形式は不可(例: 192.168.0.1)
- xn--で始まることは不可
- -s3aliasで終わることは不可
- グローバルに一意
よくある間違い
- 大文字を含むバケット名を指定する
- 環境(dev/staging/prod)ごとに異なるバケット名を使い分け忘れる
- バケット削除後に同じ名前で再作成できると思う(一時的に使用不可)
関連エラー
参考リンク
AWS の他のエラー
AccessDeniedException: User is not authorized
ECS CannotPullContainerError
AccessDenied: User is not authorized to perform sts:AssumeRole
IncompleteSignature: The request signature we calculated does not match
MissingAuthenticationToken: Missing Authentication Token
SignatureDoesNotMatch: The request signature we calculated does not match
この記事は役に立ちましたか?