こんにちは。KOUKIです。
最近、仕事でAWSに触ることが多くなってきました(やったね!)。
その中で、AWSサービスの一つであるAmazon S3を触る機会があり、その中で遭遇したInvalidBucketNameエラーについて記事にしました。
<目次>
事象
Amazon S3は、かなり便利なストレージサービスです。
しかも、aws s3コマンドを使うとローカルから直接、AWS上にS3バケットを作成することができます。
1 |
aws s3 mb "s3://bucket名" --region ap-northeast-1 |
しかし、以下のコマンドを実行したところ、InvalidBucketNameエラーが発生してしまいました。
1 2 3 4 5 |
$ aws s3 mb "s3://HOGE-lambda-deploy" --region ap-northeast-1 make_bucket failed: s3://HOGE-lambda-deploy An error occurred (InvalidBucketName) when calling the CreateBucket operation: The specified bucket is not valid. |
原因
「InvalidBucketName(無効なバケット名)」と表示されるくらいなので、バケット名に問題がありそうです。
そこで、公式サイトを当たってみると以下の命名規則がありました。
S3 バケットの命名には、次のルールが適用されます。
公式サイトより
* バケット名は 3~63 文字の長さにする必要があります。
* バケット名は、小文字、数字、ドット (.)、およびハイフン (-) のみで構成できます。
* バケット名は、文字または数字で開始および終了する必要があります。
* バケット名は IP アドレスの形式 (192.168.5.4 など) にはできません。
* バケット名はxn--
で始まることはできません (2020 年 2 月以降に作成されたバケットの場合)。
* バケット名は、パーティション内で一意にする必要があります。パーティションはリージョンのグループです。AWS には、現在aws
(標準リージョン)、aws-cn
(中国リージョン)、およびaws-us-gov
(AWS GovCloud [US] リージョン) の 3 つのパーティションがあります。
Amazon S3 Transfer Acceleration で使用されるバケットの名前にドット (.) を付けることはできません。Transfer Acceleration の詳細については、「Amazon S3 Transfer Acceleration」を参照してください。
この中の「バケット名は、小文字、数字、ドット (.)、およびハイフン (-) のみで構成できます。」に当てはまっていたようです。
解決
S3バケットに大文字を含めないようにしましょう。
1 2 3 4 5 |
# 誤り aws s3 mb "s3://HOGE-lambda-deploy" --region ap-northeast-1 # 正解(hogeは、小文字) aws s3 mb "s3://hoge-lambda-deploy" --region ap-northeast-1 |
これで、解決しました。
おわりに
大文字くらいでエラー?という感じですが、ルールはルールなので仕方ないです。
S3バケットの命名規約は細かく決められていますので、気をつけて作成しましょう!
それでは、また!
コメントを残す
コメントを投稿するにはログインしてください。