create_s3_bucket
Create an S3 bucket for storing Amazon Bedrock Knowledge Base data with automatic public access blocking and configurable region selection.
Instructions
S3バケットを新規作成します。
バケット名は以下のルールに従う必要があります:
3文字以上63文字以下
小文字、数字、ハイフン(-)、ピリオド(.)のみ使用可能
先頭と末尾は小文字または数字である必要がある
連続するハイフンやピリオドは使用不可
IPアドレス形式(例: 192.168.1.1)は使用不可
バケット名はグローバルに一意である必要があります
注意: セキュリティ上の理由から、パブリックアクセスブロックは常に有効化されます。
Args: bucket_name: 作成するS3バケット名(必須) 例: "my-documents-bucket" region: バケットを作成するリージョン(デフォルト: "us-east-1") 例: "us-east-1", "ap-northeast-1" 注意: us-east-1リージョンの場合、LocationConstraintは指定しません
Returns: S3BucketCreateResponseDict: バケット作成結果 - bucket_name: 作成されたバケット名 - region: バケットが作成されたリージョン - arn: バケットのARN(arn:aws:s3:::bucket-name形式) - status: 作成ステータス("created")
Raises: ValueError: bucket_nameが空の場合、またはバケット名が無効な形式の場合 ClientError: AWS API呼び出しが失敗した場合 例: バケット名が既に使用されている、権限がないなど
Example: # 基本的なバケット作成(デフォルトリージョン、パブリックアクセスブロック有効) create_s3_bucket("my-documents-bucket")
# 特定のリージョンにバケットを作成
create_s3_bucket("my-documents-bucket", region="ap-northeast-1")Note: - バケットの作成には数秒かかる場合があります - バケット名が既に使用されている場合、BucketAlreadyOwnedByYouまたはBucketAlreadyExistsエラーが発生します - パブリックアクセスブロック設定は、バケット作成後に自動的に適用されます
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| bucket_name | Yes | ||
| region | No | us-east-1 |
Implementation Reference
- The MCP tool handler for 'create_s3_bucket'. It validates input and calls the bedrock_client implementation.
@mcp.tool() # MCPツールとして公開 @handle_errors # エラーハンドリングデコレータを適用 def create_s3_bucket( bucket_name: str, region: str = "us-east-1", ) -> S3BucketCreateResponseDict: """ S3バケットを新規作成します。 バケット名は以下のルールに従う必要があります: - 3文字以上63文字以下 - 小文字、数字、ハイフン(-)、ピリオド(.)のみ使用可能 - 先頭と末尾は小文字または数字である必要がある - 連続するハイフンやピリオドは使用不可 - IPアドレス形式(例: 192.168.1.1)は使用不可 - バケット名はグローバルに一意である必要があります 注意: セキュリティ上の理由から、パブリックアクセスブロックは常に有効化されます。 Args: bucket_name: 作成するS3バケット名(必須) 例: "my-documents-bucket" region: バケットを作成するリージョン(デフォルト: "us-east-1") 例: "us-east-1", "ap-northeast-1" 注意: us-east-1リージョンの場合、LocationConstraintは指定しません Returns: S3BucketCreateResponseDict: バケット作成結果 - bucket_name: 作成されたバケット名 - region: バケットが作成されたリージョン - arn: バケットのARN(arn:aws:s3:::bucket-name形式) - status: 作成ステータス("created") Raises: ValueError: bucket_nameが空の場合、またはバケット名が無効な形式の場合 ClientError: AWS API呼び出しが失敗した場合 例: バケット名が既に使用されている、権限がないなど Example: # 基本的なバケット作成(デフォルトリージョン、パブリックアクセスブロック有効) create_s3_bucket("my-documents-bucket") # 特定のリージョンにバケットを作成 create_s3_bucket("my-documents-bucket", region="ap-northeast-1") Note: - バケットの作成には数秒かかる場合があります - バケット名が既に使用されている場合、BucketAlreadyOwnedByYouまたはBucketAlreadyExistsエラーが発生します - パブリックアクセスブロック設定は、バケット作成後に自動的に適用されます """ # 入力値のバリデーション(共通関数を使用) bucket_name = validate_required_string(bucket_name, "bucket_name") # バケット名の基本的なバリデーション # AWS S3のバケット名ルールに従う必要があります if len(bucket_name) < 3 or len(bucket_name) > 63: raise ValueError("bucket_name must be between 3 and 63 characters") # バケット名は小文字、数字、ハイフン、ピリオドのみ使用可能 # ただし、IPアドレス形式は使用不可 import re if not re.match(r'^[a-z0-9][a-z0-9.-]*[a-z0-9]$', bucket_name): raise ValueError( "bucket_name must start and end with a lowercase letter or number, " "and contain only lowercase letters, numbers, hyphens, and periods" ) # 連続するハイフンやピリオドは使用不可 if '..' in bucket_name or '--' in bucket_name: raise ValueError("bucket_name cannot contain consecutive periods or hyphens") # IPアドレス形式のチェック(簡易版) # より厳密なチェックが必要な場合は、ipaddressモジュールを使用できます ip_pattern = r'^(\d{1,3}\.){3}\d{1,3}$' if re.match(ip_pattern, bucket_name): raise ValueError("bucket_name cannot be in IP address format") # リージョンを正規化(前後の空白を削除、空文字列の場合はus-east-1を使用) region_cleaned = region.strip() if region else "us-east-1" # BedrockクライアントからS3バケットを作成 result = bedrock_client.create_s3_bucket( bucket_name=bucket_name, # 前後の空白は既に削除済み region=region_cleaned, # 既定値はus-east-1 ) return result - The actual implementation of the S3 bucket creation logic in the bedrock_client module.
def create_s3_bucket( self, bucket_name: str, region: str = "us-east-1", ) -> S3BucketCreateResponseDict: """ S3バケットを新規作成します。 バケット名は以下のルールに従う必要があります: - 3文字以上63文字以下 - 小文字、数字、ハイフン(-)、ピリオド(.)のみ使用可能 - 先頭と末尾は小文字または数字である必要がある - 連続するハイフンやピリオドは使用不可 - IPアドレス形式(例: 192.168.1.1)は使用不可 注意: セキュリティ上の理由から、パブリックアクセスブロックは常に有効化されます。 Args: bucket_name: 作成するS3バケット名(必須) region: バケットを作成するリージョン(デフォルト: "us-east-1") 注意: us-east-1リージョンの場合、LocationConstraintは指定しません Returns: S3BucketCreateResponseDict: バケット作成結果 - bucket_name: 作成されたバケット名 - region: バケットが作成されたリージョン - arn: バケットのARN(arn:aws:s3:::bucket-name形式) - status: 作成ステータス("created") Raises: ClientError: AWS API呼び出しが失敗した場合 例: バケット名が既に使用されている、権限がない、バケット名が無効など Note: - バケット名はグローバルに一意である必要があります - バケットの作成には数秒かかる場合があります - パブリックアクセスブロック設定は、バケット作成後に自動的に適用されます """ try: # リージョンを使用(既定値はus-east-1) bucket_region = region # バケット作成パラメータを準備 create_bucket_params = {"Bucket": bucket_name} # us-east-1以外のリージョンの場合、LocationConstraintを指定 # us-east-1はデフォルトリージョンのため、LocationConstraintを指定するとエラーになります if bucket_region != "us-east-1": create_bucket_params["CreateBucketConfiguration"] = { "LocationConstraint": bucket_region }