

# 汎用バケットの命名規則
<a name="bucketnamingrules"></a>

汎用バケットを作成するときは、バケット名の長さ、有効な文字、形式、一意性を考慮してください。以下のセクションでは、命名規則やベストプラクティスなどの汎用バケットの命名に関する情報を提供し、アカウントのリージョン名前空間でバケットを作成する方法の例と、グローバル一意識別子 (GUID) を含む名前を使用して汎用バケットを作成する例を示します。

オブジェクトキー名の詳細については、「[オブジェクトキー名の作成](https://docs.aws.amazon.com/en_us/AmazonS3/latest/userguide/object-keys.html)」を参照してください。

汎用バケットを作成する方法については、「[汎用バケットの作成](create-bucket-overview.md)」を参照してください。

**Topics**
+ [汎用バケットの命名規則](#general-purpose-bucket-names)
+ [アカウントのリージョン名前空間の命名規則](#account-regional-naming-rules)
+ [汎用バケット名の例](#bucket-names)
+ [ベストプラクティス](#automatically-created-buckets)
+ [バケット名で GUID を使用するバケットの作成](#create-bucket-name-guid)
+ [アカウントのリージョン名前空間にバケットを作成する](#create-account-regional-naming)

## 汎用バケットの命名規則
<a name="general-purpose-bucket-names"></a>

汎用バケットの命名については、次の命名規則が適用されます。
+ バケット名は 3 (最少)～63 (最大) 文字の長さにする必要があります。
+ バケット名は、小文字、数字、ピリオド (`.`)、およびハイフン (`-`) のみで構成できます。
+ バケット名は、文字または数字で開始および終了する必要があります。
+ バケット名には、連続する 2 つのピリオドを含めることはできません。
+ バケット名は IP アドレスの形式 (`192.168.5.4` など) にはできません。
+ バケット名のプレフィックスは `xn--` で始まってはいけません。
+ バケット名のプレフィックスは `sthree-` で始まってはいけません。
+ バケット名のプレフィックスは `amzn-s3-demo-` で始まってはいけません。
+ バケット名のサフィックスは `-s3alias` で終わってはいけません。このサフィックスは、アクセスポイントのエイリアス名用に予約されています。詳細については、「[アクセスポイントエイリアス](access-points-naming.md#access-points-alias)」を参照してください。
+ バケット名のサフィックスは `--ol-s3` で終わってはいけません。このサフィックスは、Object Lambda アクセスポイントのエイリアス名用に予約されています。詳細については、「[S3 バケット Object Lambda アクセスポイントでのバケット形式のエイリアスの使用方法](olap-use.md#ol-access-points-alias)」を参照してください。
+ バケット名のサフィックスは `.mrap` で終わってはいけません。このサフィックスは、マルチリージョンアクセスポイント名用に予約されています。詳細については、「[Amazon S3 マルチリージョンアクセスポイントの命名規則](multi-region-access-point-naming.md)」を参照してください。
+ バケット名のサフィックスは `--x-s3` で終わってはいけません。このサフィックスはディレクトリバケット用に予約されています。詳細については、「[ディレクトリバケットの命名規則](directory-bucket-naming-rules.md)」を参照してください。
+ バケット名のサフィックスは `--table-s3` で終わってはいけません。このサフィックスは S3 Tables バケット用に予約されています。詳細については、「[Amazon S3 テーブルバケット、テーブル、および名前空間の命名規則](s3-tables-buckets-naming.md)」を参照してください。
+ バケット名は、アカウントのリージョン名前空間でバケットを作成する場合にのみ、末尾のサフィックスを `-an` にすることができます。詳細については、「[汎用バケットの名前空間](gpbucketnamespaces.md)」を参照してください。
+ Amazon S3 Transfer Acceleration で使用されるバケットの名前にピリオド (`.`) を使用することはできません。Transfer Acceleration の詳細については、「[Amazon S3 Transfer Acceleration を使用した高速かつ安全なファイル転送の設定](transfer-acceleration.md)」を参照してください。

**重要**  
汎用バケットは名前空間に存在します。このため、各バケット名は、パーティション内のすべての AWS リージョンのすべての AWS アカウントにわたって一意である必要があります。パーティションは、リージョンのグループです。AWS には、現在、`aws` (標準リージョン)、`aws-cn` (中国リージョン)、`aws-us-gov` (AWS GovCloud (US))、`aws-eusc` (欧州ソブリンクラウド) の 4 つのパーティションがあります。共有グローバル名前空間に汎用バケットを作成すると、そのバケット名は、そのパーティション内では他のユーザーが作成できなくなります。バケット所有者がバケットを削除すると、バケット名はグローバル名前空間で再び使用可能になり、誰でも再作成できます。
バケットが削除されるまで、バケット名を同じパーティション内の別の AWS アカウントで使用することはできません。**共有グローバル名前空間のバケットを削除すると、同じパーティション内にある別の AWS アカウントが新しいバケットに同じバケット名を使用できるため、削除されたバケット宛てのリクエストを受け取る可能性があることに注意してください。**これを防ぐ場合、または同じバケット名を使い続ける場合は、バケットを削除しないでください。バケットを空にして保持し、代わりに必要に応じてバケットリクエストをブロックすることをお勧めします。バケットがアクティブに使用されなくなった場合は、バケット自体を保持しながらコストを最小限に抑えるために、すべてのオブジェクトのバケットを空にすることをお勧めします。
ご使用のアカウントのみがこれらのバケット名を所有できるように、アカウントのリージョン名前空間にバケットを作成することをお勧めします。
汎用バケットの作成時にバケットの名前と作成先の AWS リージョンを選択します。汎用バケットの作成後は、バケットの名前もリージョンも変更できません。
バケット名に機密情報を含めないでください。バケット名は、バケット内のオブジェクトを参照する URL に表示されます。

**注記**  
2018 年 3 月 1 日までは、米国東部 (バージニア北部) リージョンで作成したバケットの名前として最大 255 文字を使用し、大文字とアンダースコアを含めることができました。2018 年 3 月 1 日以降、米国東部 (バージニア北部) の新しいバケットは、他のすべてのリージョンに適用されている同じルールに準拠する必要があります。

## アカウントのリージョン名前空間の命名規則
<a name="account-regional-naming-rules"></a>

Amazon S3 汎用バケットは共有グローバル名前空間に存在しますが、オプションでアカウントのリージョン名前空間にバケットを作成できます。アカウントのリージョン名前空間は、アカウントのみが汎用バケットを作成できるグローバルバケット名前空間の予約済みサブディビジョンです。アカウントのリージョン名前空間で作成された新しい汎用バケットは、ご使用のアカウントに固有であり、別のアカウントで再作成することはできません。これらのバケットは、共有グローバル名前空間の汎用バケットが既にサポートしているすべての S3 機能と AWS のサービスをサポートしています。アプリケーションは、アカウントのリージョン名前空間のバケットとやり取りするために変更する必要はありません。

アカウントのリージョン名前空間の汎用バケットは、特定の命名規則に従う必要があります。バケット名は、作成するバケット名のプレフィックスと、12 桁の AWS アカウント ID、AWS リージョン コードを含むサフィックスで構成され、末尾は `-an` となります。

```
bucket-name-prefix-accountId-region-an
```

例えば、us-west-2 リージョンの AWS アカウント 111122223333 のアカウントのリージョン名前空間には、次の汎用バケットがあります。

```
amzn-s3-demo-bucket-111122223333-us-west-2-an
```

アカウントのリージョン名前空間にバケットを作成するには、`CreateBucket` リクエストを行い、値を `account-regional` に設定して `x-amz-bucket-namespace` リクエストヘッダーを指定し、アカウントのリージョン名前空間形式のバケット名 `customer-chosen-name-AWS-Account-ID-AWS-Region-an` を指定します。例えば、`amzn-s3-demo-bucket-111122223333-us-east-1-an` という名前でバケットを作成できます。アカウントリージョンのサフィックスは `-111122223333-us-east-1-an` です。アカウントのリージョン名前空間の詳細については、「[汎用バケットの名前空間](gpbucketnamespaces.md)」を参照してください。

## 汎用バケット名の例
<a name="bucket-names"></a>

次のバケット名は、汎用バケット名で許可される文字の例を示しています: a～z、0～9、およびハイフン (`-`)。`amzn-s3-demo-` 予約済みプレフィックスは、ここでは説明のためにのみ使用されます。予約済みプレフィックスであるため、`amzn-s3-demo-` で始まるバケット名を作成することはできません。
+ `amzn-s3-demo-bucket1-a1b2c3d4-5678-90ab-cdef-example11111`
+ `amzn-s3-demo-bucket`

次の例は、アカウントのリージョン名前空間のバケット名を示しています。これらのバケットは、特定のアカウントのリージョン名前空間命名規則 (`customer-chosen-name-AWS-Account-ID-AWS-Region-an`) に従う必要があります。
+ `amzn-s3-demo-bucket-111122223333-us-west-2-an`
+ `amzn-s3-demo-bucket-012345678910-ap-southeast-2-an`

次の例に示すバケット名は有効ですが、ピリオドを含んでいるため (`.`)、静的ウェブサイトホスティング以外の用途には推奨されません。
+ `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 アドレスの形式と一致する)

## ベストプラクティス
<a name="automatically-created-buckets"></a>

汎用バケットに名前を付けるときは、以下のバケット命名のベストプラクティスを考慮してください。

**アカウントのリージョン名前空間にバケットを作成する**  
ご使用のアカウントのみがこれらのバケット名を所有できるように、アカウントのリージョン名前空間にバケットを作成することをお勧めします。アカウントのリージョン名前空間を使用すると、他のアカウントが名前空間にバケット名を作成できないことが保証されるので、複数の AWS リージョンにまたがって予測可能なバケット名を作成できます。

**命名の競合を引き起こす可能性が低いバケット命名スキームを選択する**  
アプリケーションが自動的にバットを作成する場合は、命名の衝突が起きないようなバケット命名スキームを使用してください。特定のバケット名が既に使用されている場合は、異なるバケット名をアプリケーションロジックが選択するようにしてください。

**バケット名にグローバル一意識別子 (GUID) を追加する**  
予測不可能なバケット名を作成することをお勧めします。バケットを既に作成していない限り、選択したバケット名を使用できるものと見なしてコードを記述しないでください。予測不可能なバケット名を作成する方法の 1 つは、バケット名にグローバル一意識別子 (GUID) を追加することです (例: `amzn-s3-demo-bucket-a1b2c3d4-5678-90ab-cdef-example11111`)。詳細については、「[バケット名で GUID を使用するバケットの作成](#create-bucket-name-guid)」を参照してください。

**バケット名にピリオド (`.`) を使用しない**  
互換性を最も高くするには、静的ウェブサイトホスティング専用のバケットを除き、バケット名にピリオド (`.`) を使用しないことをお勧めします。バケット名にピリオドを含めると、証明書の検証を独自に実行しない限り、HTTPS 経由の仮想ホスト形式のアドレス指定は使用できません。バケット名にピリオドが含まれていると、バケットの仮想ホスティング用のセキュリティ証明書は機能しません。

静的ウェブサイトホスティングは HTTP 経由でのみ使用されるため、この制限は静的ウェブサイトホスティング用のバケットには影響しません。仮想ホスティング形式のアドレス指定の詳細については、「[汎用バケットの仮想ホスティング](VirtualHosting.md)」を参照してください。静的ウェブサイトホスティングの詳細については、「[Amazon S3 を使用して静的ウェブサイトをホスティングする](WebsiteHosting.md)」を参照してください。

**関連する名前を選択する**  
バケットに名前を付けるときは、ユーザーやユーザーのビジネスに関連する名前を選択します。他のユーザーに関連付けられている名前は使用しないでください。例えば、バケット名に `AWS` や `Amazon` を使用することを避けます。

**バケット名を再利用するためにバケットを削除しないでください。**  
バケットが空の場合は削除できます。バケットが削除されると、その名前は再利用できるようになります。ただし、すぐに名前を再利用できる保証がないか、あるいはまったくありません。共有グローバル名前空間のバケットを削除した後、その名前が再利用可能になるまでに、しばらく時間がかかる場合もあります。さらに、その名前を再利用できるようになる前に、別の AWS アカウントが同じ名前のバケットを作成する場合があります。

**共有グローバル名前空間の汎用バケットの削除後は、同じパーティション内の別の AWS アカウントが新しいバケットに同じ汎用バケット名を使用する場合があるため、削除した汎用バケットへのリクエストを受け取る可能性があることに注意してください。**これを防ぐ場合、または同じ汎用バケット名を使い続ける場合は、汎用バケットを削除しないでください。バケットを空にして保持し、代わりに必要に応じてバケットリクエストをブロックすることをお勧めします。

## バケット名で GUID を使用するバケットの作成
<a name="create-bucket-name-guid"></a>

以下の例は、バケット名の最後に GUID を使用する汎用バケットの作成方法を示しています。

### の使用AWS CLI
<a name="guid-cli-bucket-name"></a>

次の AWS CLI の例では、グローバル一意識別子 (GUID) を名前に使用した汎用バケットを米国西部 (北カリフォルニア) リージョン (`us-west-1`) に作成します。このコマンドの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
aws s3api create-bucket \
    --bucket amzn-s3-demo-bucket1$(uuidgen | tr -d - | tr '[:upper:]' '[:lower:]' ) \
    --region us-west-1 \
    --create-bucket-configuration LocationConstraint=us-west-1
```

### AWS SDK for Java の使用
<a name="guid-sdk-bucket-name"></a>

次の例は、AWS SDK for Java を使用して、米国東部 (バージニア北部) リージョン (`us-east-1`) で名前の末尾に GUID を追加したバケットを作成する方法を示しています。この例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。その他の AWS SDK については、「[AWS での構築ツール](https://aws.amazon.com/developer/tools/)」を参照してください。

```
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);
    }
}
```

## アカウントのリージョン名前空間にバケットを作成する
<a name="create-account-regional-naming"></a>

次の例は、アカウントのリージョン名前空間に汎用バケットを作成する方法を示しています。

### の使用AWS CLI
<a name="account-regional-cli-naming"></a>

次の AWS CLI の例では、米国西部 (北カリフォルニア) リージョン (`us-west-1`) の AWS アカウント 012345678910 のアカウントのリージョン名前空間に汎用バケットを作成します。このコマンド例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
aws s3api create-bucket \
    --bucket amzn-s3-demo-bucket-012345678910-us-west-1-an \
    --bucket-namespace account-regional
    --region us-west-1 \
    --create-bucket-configuration LocationConstraint=us-west-1
```