Amazon Web Services ブログ

Amazon S3 汎用バケットのアカウントリージョナル名前空間の紹介

2026 年 3 月 12 日、Amazon Simple Storage Service (Amazon S3) の新機能を発表しました。この機能を使用すると、独自のアカウントのリージョン名前空間に汎用バケットを作成でき、データストレージの規模や用途の拡大に伴うバケットの作成および管理を簡素化できます。複数の AWS リージョンにまたがる汎用のバケット名を作成すると、希望するバケット名をいつでも使用できることが保証されます。

この機能を使用すると、リクエストしたバケット名にアカウント固有のサフィックスを追加することで、自分のアカウントのリージョナル名前空間に予測どおりの名前を付けて汎用バケットを作成できます。たとえば、アカウントのリージョナル名前空間にバケット mybucket-123456789012-us-east-1-an を作成できます。mybucket は指定したバケット名のプレフィックスです。次に、リクエストされたバケット名にアカウントのリージョナルサフィックス -123456789012-us-east-1-an を追加します。別のアカウントが私のアカウントのサフィックスを使用してバケットを作成しようとすると、そのアカウントのリクエストは自動的に拒否されます。

セキュリティチームは、AWS Identity and Access Management (AWS IAM) ポリシーと AWS Organizations サービスコントロールポリシーを使用して、従業員が新しい s3: x-amz-bucket-namespace 条件キーを使用してアカウントのリージョナル名前空間にのみバケットを作成するように強制できます。これにより、チームが組織全体でアカウントのリージョナル名前空間を採用しやすくなります。

アカウントのリージョナル名前空間を実際に使って S3 バケットを作成する
開始するには、 Amazon S3 コンソール[バケットを作成] を選択します。アカウントのリージョナル名前空間にバケットを作成するには、[アカウントのリージョナル名前空間] を選択します。このオプションを選択すると、アカウントとリージョンに固有の任意の名前でバケットを作成できます。

この設定は、グローバル名前空間の汎用バケットと同じ機能をすべてサポートします。唯一の違いは、アカウントのサフィックスが付いたバケット名を使用できるのはそのアカウントのみであるという点です。バケット名のプレフィックスとアカウントのリージョナルサフィックスを合わせた長さは、3~63 文字以内にする必要があります。

AWS コマンドラインインターフェイス (AWS CLI) を使用して、x-amz-bucket-namespace: account-regional リクエストヘッダーを指定し、互換性のあるバケット名を指定することで、アカウントのリージョナル名前空間のバケットを作成できます。

$ aws s3api create-bucket --bucket mybucket-123456789012-us-east-1-an \
   --bucket-namespace account-regional \
   --region us-east-1

AWS SDK for Python (Boto3) を使用すると、CreateBucket API リクエストを使用してアカウントのリージョナル名前空間を持つバケットを作成できます。

import boto3

class AccountRegionalBucketCreator:
    """アカウントリージョナル名前空間機能を使用して S3 バケットを作成します。"""
    
    ACCOUNT_REGIONAL_SUFFIX = "-an"
    
    def __init__(self, s3_client, sts_client):
        self.s3_client = s3_client
        self.sts_client = sts_client
    
    def create_account_regional_bucket(self, prefix):
        """
        指定されたプレフィックスを持つアカウントリージョナルの S3 バケットを作成します。
        STS GetCallerIdentity API を使用して発信者の AWS アカウント ID を取得します。
        フォーマット: ---an
        """
        account_id = self.sts_client.get_caller_identity()['Account']
        region = self.s3_client.meta.region_name
        bucket_name = self._generate_account_regional_bucket_name(
            prefix, account_id, region
        )
        
        params = {
            "Bucket": bucket_name,
            "BucketNamespace": "account-regional"
        }
        if region != "us-east-1":
            params["CreateBucketConfiguration"] = {
                "LocationConstraint": region
            }
        
        return self.s3_client.create_bucket(**params)
    
    def _generate_account_regional_bucket_name(self, prefix, account_id, region):
        return f"{prefix}-{account_id}-{region}{self.ACCOUNT_REGIONAL_SUFFIX}"


if __name__ == '__main__':
    s3_client = boto3.client('s3')
    sts_client = boto3.client('sts')
    
    creator = AccountRegionalBucketCreator(s3_client, sts_client)
    response = creator.create_account_regional_bucket('test-python-sdk')
    
    print(f"Bucket created: {response}")

AWS CloudFormation などの Infrastructure as Code (IaC) ツールを更新すると、アカウントのリージョナル名前空間にバケットを簡単に作成できます。AWS CloudFormation には AWS:: AccountIdAWS::Region という疑似パラメータが用意されているため、アカウントのリージョナル名前空間バケットを作成する CloudFormation テンプレートを簡単に構築できます。

次の例は、既存の CloudFormation テンプレートを更新して、アカウントのリージョナル名前空間にバケットの作成を開始する方法を示しています。

BucketName: !Sub "amzn-s3-demo-bucket-${AWS::AccountId}-${AWS::Region}-an"
BucketNamespace: "account-regional"

または、BucketNamePrefix プロパティを使用して CloudFormation テンプレートを更新することもできます。BucketNamePrefix を使用すると、バケット名の顧客定義部分のみを指定でき、リクエスト元の AWS アカウントと指定されたリージョンに基づいて、アカウントのリージョナル名前空間サフィックスが自動的に追加されます。

BucketNamePrefix: 'amzn-s3-demo-bucket'
BucketNamespace: "account-regional"

これらのオプションを使用すると、カスタム CloudFormation テンプレートを構築して、アカウントのリージョナル名前空間に汎用バケットを簡単に作成できます。

知っておくべきこと
既存のグローバルバケットの名前をアカウントのリージョナル名前空間のバケット名に変更することはできませんが、アカウントのリージョナル名前空間に新しい汎用バケットを作成することはできます。また、アカウントのリージョナル名前空間は汎用バケットでのみサポートされています。S3 テーブルバケットとベクトルバケットはアカウントレベルの名前空間にすでに存在し、S3 ディレクトリバケットはゾーン名前空間に存在します。

詳細については、Amazon S3 ユーザーガイドの「汎用バケット用の名前空間」を参照してください。

今すぐご利用いただけます
Amazon S3 のアカウントのリージョナル名前空間に汎用バケットを作成できるようになりました。これは、AWS 中国、AWS GovCloud (米国) リージョンを含む 37 の AWS リージョンで利用可能です。アカウントの リージョナル名前空間に汎用バケットを追加費用なしで作成できます。

Amazon S3 コンソールで 今すぐお試しいただき、AWS re:Post for Amazon S3 宛てに、または通常の AWS サポート担当者を通じて、フィードバックをぜひお寄せください。

Channy

原文はこちらです。