汎用バケットの作成時にバケットの名前と作成先の AWS リージョンを選択します。汎用バケットの作成後は、バケットの名前もリージョンも変更できません。以下のセクションでは、命名規則やベストプラクティスなどの汎用バケットの命名に関する情報を提供し、グローバル一意識別子 (GUID) を含む名前を使用して汎用バケットを作成する例を示します。
ディレクトリバケットの命名規則については、「ディレクトリバケットの命名規則」を参照してください。
オブジェクトキー名の詳細については、「オブジェクトキー名の作成」を参照してください。
汎用バケットの命名規則
汎用バケットの命名については、次の命名規則が適用されます。
-
バケット名は 3 (最少)~63 (最大) 文字の長さにする必要があります。
-
バケット名は、小文字、数字、ピリオド (
.
)、およびハイフン (-
) のみで構成できます。 -
バケット名は、文字または数字で開始および終了する必要があります。
-
バケット名には、連続する 2 つのピリオドを含めることはできません。
-
バケット名は IP アドレスの形式 (
192.168.5.4
など) にはできません。 -
バケット名のプレフィックスは
xn--
で始まってはいけません。 -
バケット名のプレフィックスは
sthree-
で始まってはいけません。 -
バケット名のプレフィックスは
amzn-s3-demo-
で始まってはいけません。 -
バケット名のサフィックスは
-s3alias
で終わってはいけません。このサフィックスは、アクセスポイントのエイリアス名用に予約されています。詳細については、「アクセスポイントエイリアス」を参照してください。 -
バケット名のサフィックスは
--ol-s3
で終わってはいけません。このサフィックスは、Object Lambda アクセスポイントのエイリアス名用に予約されています。詳細については、「S3 バケット Object Lambda アクセスポイントでのバケット形式のエイリアスの使用方法」を参照してください。 -
バケット名のサフィックスは
.mrap
で終わってはいけません。このサフィックスは、マルチリージョンアクセスポイント名用に予約されています。詳細については、「Amazon S3 マルチリージョンアクセスポイントの命名規則」を参照してください。 -
バケット名のサフィックスは
--x-s3
で終わってはいけません。このサフィックスはディレクトリバケット用に予約されています。詳細については、「ディレクトリバケットの命名規則」を参照してください。 -
Amazon S3 Transfer Acceleration で使用されるバケットの名前にピリオド (
.
) を使用することはできません。Transfer Acceleration の詳細については、「Amazon S3 Transfer Acceleration を使用した高速かつ安全なファイル転送の設定」を参照してください。
重要
-
バケット名は、パーティション内のすべての AWS リージョンのすべての AWS アカウントにわたって一意である必要があります。パーティションは、リージョンのグループです。AWS には、現在
aws
(商用リージョン)、aws-cn
(中国リージョン)、およびaws-us-gov
(AWS GovCloud (US) リージョン) の 3 つのパーティションがあります。 -
バケットが削除されるまで、バケット名を同じパーティション内の別の AWS アカウントで使用することはできません。バケットを削除した後、同じパーティション内にある別の AWS アカウントが新しいバケットに同じバケット名を使用できるため、削除されたバケット宛てのリクエストを受け取る可能性があることに注意してください。これを防ぐ場合、または同じバケット名を使い続ける場合は、バケットを削除しないでください。バケットを空にして保持し、代わりに必要に応じてバケットリクエストをブロックすることをお勧めします。
注記
2018 年 3 月 1 日までは、米国東部 (バージニア北部) リージョンで作成したバケットの名前として最大 255 文字を使用し、大文字とアンダースコアを含めることができました。2018 年 3 月 1 日以降、米国東部 (バージニア北部) の新しいバケットは、他のすべてのリージョンに適用されている同じルールに準拠する必要があります。
汎用バケット名の例
次のバケット名は、汎用バケット名で許可される文字の例を示しています: a~z、0~9、およびハイフン (-
)。amzn-s3-demo-
予約済みプレフィックスは、ここでは説明のためにのみ使用されます。予約済みプレフィックスであるため、amzn-s3-demo-
で始まるバケット名を作成することはできません。
-
amzn-s3-demo-bucket1-a1b2c3d4-5678-90ab-cdef-example11111
-
amzn-s3-demo-bucket
次の例に示すバケット名は有効ですが、ピリオドを含んでいるため (.
)、静的ウェブサイトホスティング以外の用途には推奨されません。
-
example.com
-
www.example.com
-
my.example.s3.bucket
次の例に示すバケット名は無効です。
-
amzn_s3_demo_bucket
(アンダースコアが含まれている) -
AmznS3DemoBucket
(大文字が含まれている) -
amzn-s3-demo-bucket-
(amzn-s3-demo-
プレフィックスで始まり、ハイフンで終わる) -
example..com
(2 つのピリオドが連続して含まれる) -
192.168.5.4
(IP アドレスの形式と一致する)
ベストプラクティス
バケットに名前を付けるときは、以下のバケット命名のベストプラクティスを考慮してください。
命名の競合を引き起こす可能性が低いバケット命名スキームを選択する
アプリケーションが自動的にバットを作成する場合は、命名の衝突が起きないようなバケット命名スキームを使用してください。特定のバケット名が既に使用されている場合は、異なるバケット名をアプリケーションロジックが選択するようにしてください。
バケット名にグローバル一意識別子 (GUID) を追加する
予測不可能なバケット名を作成することをお勧めします。バケットを既に作成していない限り、選択したバケット名を使用できるものと見なしてコードを記述しないでください。予測不可能なバケット名を作成する方法の 1 つは、バケット名にグローバル一意識別子 (GUID) を追加することです (例: amzn-s3-demo-bucket-a1b2c3d4-5678-90ab-cdef-example11111
)。詳細については、「バケット名で GUID を使用するバケットの作成」を参照してください。
バケット名にピリオド (.
) を使用しない
互換性を最も高くするには、静的ウェブサイトホスティング専用のバケットを除き、バケット名にピリオド (.
) を使用しないことをお勧めします。バケット名にピリオドを含めると、証明書の検証を独自に実行しない限り、HTTPS 経由の仮想ホスト形式のアドレス指定は使用できません。バケット名にピリオドが含まれていると、バケットの仮想ホスティング用のセキュリティ証明書は機能しません。
静的ウェブサイトホスティングは HTTP 経由でのみ使用されるため、この制限は静的ウェブサイトホスティング用のバケットには影響しません。仮想ホスティング形式のアドレス指定の詳細については、「バケットの仮想ホスティング」を参照してください。静的ウェブサイトホスティングの詳細については、「Amazon S3 を使用して静的ウェブサイトをホスティングする」を参照してください。
関連する名前を選択する
バケットに名前を付けるときは、ユーザーやユーザーのビジネスに関連する名前を選択します。他のユーザーに関連付けられている名前は使用しないでください。例えば、バケット名に AWS
や Amazon
を使用することを避けます。
バケット名を再利用するためにバケットを削除しないでください。
バケットが空の場合は削除できます。バケットが削除されると、その名前は再利用できるようになります。ただし、すぐに名前を再利用できる保証がないか、あるいはまったくありません。バケットを削除した後、その名前が再利用可能になるまでに、しばらく時間がかかる場合もあります。さらに、その名前を再利用できるようになる前に、別の AWS アカウントが同じ名前のバケットを作成する場合があります。
バケットを削除した後、同じパーティション内にある別の AWS アカウントが新しいバケットに同じバケット名を使用できるため、削除されたバケット宛てのリクエストを受け取る可能性があることに注意してください。これを防ぐ場合、または同じバケット名を使い続ける場合は、バケットを削除しないでください。バケットを空にして保持し、代わりに必要に応じてバケットリクエストをブロックすることをお勧めします。
バケット名で GUID を使用するバケットの作成
以下の例は、バケット名の最後に GUID を使用する汎用バケットの作成方法を示しています。
次の AWS CLI の例では、グローバル一意識別子 (GUID) を使用するバケット名の例を使用して、米国西部 (北カリフォルニア) リージョン (us-west-1
) にバケットを作成しています。このコマンドの例を実行するには、
をユーザー自身の情報に置き換えます。user input placeholders
aws s3api create-bucket \ --bucket
amzn-s3-demo-bucket1
$(uuidgen | tr -d - | tr '[:upper:]' '[:lower:]' ) \ --regionus-west-1
\ --create-bucket-configuration LocationConstraint=us-west-1
次の例では、AWS SDK for Java を使用して、米国東部 (バージニア北部) リージョン (us-east-1
) でバケット名の末尾に GUID を追加してバケットを作成する方法を示しています。この例を実行するには、
をユーザー自身の情報に置き換えます。その他の AWS SDK については、「AWS での構築ツールuser input placeholders
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.CreateBucketRequest;
import java.util.List;
import java.util.UUID;
public class CreateBucketWithUUID {
public static void main(String[] args) {
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1
).build();
String bucketName = "amzn-s3-demo-bucket
" + UUID.randomUUID().toString().replace("-", "");
CreateBucketRequest createRequest = new CreateBucketRequest(bucketName);
System.out.println(bucketName);
s3.createBucket(createRequest);
}
}