AWS CloudFormation を使用したプロジェクトの管理 - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS CloudFormation を使用したプロジェクトの管理

Amazon Bedrock は AWS CloudFormation と統合されているため、インフラストラクチャテンプレートの一部としてプロジェクトを定義および管理できます。JSON または YAML テンプレートを使用して、複数の AWS アカウントとリージョン間でプロジェクトを一貫して繰り返しプロビジョニングできます。

AWS::BedrockMantle::Project

AWS::BedrockMantle::Project リソースを使用して、CloudFormation テンプレートで Bedrock プロジェクトを作成および管理します。CloudFormation で作成されたプロジェクトは、IAM ポリシーのアタッチ、タグ付け、オブザーバビリティなど、API で作成されたものと同じ機能をサポートします。

構文

CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

例 CloudFormation 構文
{ "Type": "AWS::BedrockMantle::Project", "Properties": { "Name": String, "Tags": [ { "Key": String, "Value": String }, { "Key": String, "Value": String }, { "Key": String, "Value": String }, { "Key": String, "Value": String } ] } }
Type: AWS::BedrockMantle::Project Properties: Name: String Tags: Key: Value

プロパティ

名前

必須。プロジェクトの名前。AWS アカウント内で一意である必要があります。

タイプ: 文字列

最小: 1

最大: 64

パターン: ^([0-9a-zA-Z][ _-]?)+$

更新に伴う要件: 置換

タグ

コスト配分とアクセスコントロールのためにプロジェクトに関連付けるキーと値のペアのマップ。

タイプ: 文字列のマップ

アップデートに関する要件: 中断はありません

タグの更新に関する注意

での CloudFormation タグの更新では、内部で個別の追加および削除オペレーションAWS::BedrockMantle::Projectを使用します。アトミック完全タグ置換はありません。スタックの更新がオペレーション中に失敗した場合、プロジェクトのタグセットが部分的に更新された状態になる可能性があります。タグを変更するスタックの更新後は、常に最終的なタグの状態を確認してください。

戻り値

参照番号

このリソースの論理 ID を組み込み Ref関数に渡すと、 はプロジェクト ID (例: proj_abc123) Refを返します。

Fn::GetAtt

ProjectId

プロジェクトの一意の識別子 (例: proj_abc123)。

ProjectArn

プロジェクトの Amazon リソースネーム (ARN) (例: arn:aws:bedrock-mantle:us-east-1:123456789012:project/proj_abc123)。

ステータス

プロジェクトのステータス。 は、プロジェクトが使用できる状態であるACTIVEことを意味します。 は、プロジェクトがアーカイブされ、新しい推論リクエストを受け入れることができないARCHIVEDことを意味します。

CreatedAt

プロジェクトが作成されたタイムスタンプ。

UpdatedAt

プロジェクトが最後に更新されたタイムスタンプ。

基本プロジェクトを作成する

次の例では、本稼働チャットボットアプリケーションのプロジェクトを作成します。

例基本 プロジェクト
AWSTemplateFormatVersion: '2010-09-09' Description: Amazon Bedrock Project for Production Chatbot Resources: CustomerChatbotProject: Type: AWS::BedrockMantle::Project Properties: Name: CustomerChatbot-Production Tags: - Key: Project Value: CustomerChatbot - Key: Environment Value: Production - Key: Owner Value: TeamAlpha - Key: CostCenter Value: "21524" Outputs: ProjectId: Description: The ID of the created project Value: !Ref CustomerChatbotProject ProjectArn: Description: The ARN of the created project Value: !GetAtt CustomerChatbotProject.ProjectArn
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "CustomerChatbotProject": { "Type": "AWS::BedrockMantle::Project", "Properties": { "Name": "CustomerChatbot-Production", "Tags": [ { "Key": "Project", "Value": "CustomerChatbot" }, { "Key": "Environment", "Value": "Production" }, { "Key": "Owner", "Value": "TeamAlpha" }, { "Key": "CostCenter", "Value": "21524" } ] } } }, "Outputs": { "ProjectId": { "Description": "The ID of the created project", "Value": { "Ref": "CustomerChatbotProject" } }, "ProjectArn": { "Description": "The ARN of the created project", "Value": { "Fn::GetAtt": ["CustomerChatbotProject", "ProjectArn"] } } } }

異なる環境に複数のプロジェクトを作成する

次の の例では、開発環境、ステージング環境、本番環境用に個別のプロジェクトを 1 つのスタックにプロビジョニングします。

AWSTemplateFormatVersion: '2010-09-09' Description: Amazon Bedrock Projects for Multi-Environment Deployment Parameters: ApplicationName: Type: String Default: InternalSearch Description: Name of the application CostCenter: Type: String Description: Cost center for billing allocation Resources: DevelopmentProject: Type: AWS::BedrockMantle::Project Properties: Name: !Sub "${ApplicationName}-Development" Tags: - Key: Project Value: !Ref ApplicationName - Key: Environment Value: Development - Key: CostCenter Value: !Ref CostCenter StagingProject: Type: AWS::BedrockMantle::Project Properties: Name: !Sub "${ApplicationName}-Staging" Tags: - Key: Project Value: !Ref ApplicationName - Key: Environment Value: Staging - Key: CostCenter Value: !Ref CostCenter ProductionProject: Type: AWS::BedrockMantle::Project Properties: Name: !Sub "${ApplicationName}-Production" Tags: - Key: Project Value: !Ref ApplicationName - Key: Environment Value: Production - Key: CostCenter Value: !Ref CostCenter Outputs: DevelopmentProjectArn: Value: !GetAtt DevelopmentProject.ProjectArn Export: Name: !Sub "${ApplicationName}-Dev-ProjectArn" StagingProjectArn: Value: !GetAtt StagingProject.ProjectArn Export: Name: !Sub "${ApplicationName}-Staging-ProjectArn" ProductionProjectArn: Value: !GetAtt ProductionProject.ProjectArn Export: Name: !Sub "${ApplicationName}-Prod-ProjectArn"

IAM ロールアクセスを使用してプロジェクトを作成する

次の例では、プロジェクトを作成し、特定のロールにモデルを呼び出すためのアクセス許可を付与する IAM ポリシーをアタッチします。

AWSTemplateFormatVersion: '2010-09-09' Description: Amazon Bedrock Project with IAM Access Control Resources: ProductionProject: Type: AWS::BedrockMantle::Project Properties: Name: CustomerChatbot-Production Tags: - Key: Environment Value: Production - Key: CostCenter Value: "21524" ProductionAppRole: Type: AWS::IAM::Role Properties: RoleName: BedrockProjectProductionRole AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: BedrockProjectInvokeAccess PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - bedrock-mantle:CreateInference - bedrock-mantle:GetProject Resource: !GetAtt ProductionProject.ProjectArn Outputs: ProjectArn: Value: !GetAtt ProductionProject.ProjectArn RoleArn: Value: !GetAtt ProductionAppRole.Arn

プロジェクト API での CloudFormation 出力の使用

CloudFormation スタックをデプロイした後、スタック出力を使用して、アプリケーションコード内のプロジェクト ARN と ID を参照できます。

import boto3 from openai import OpenAI # Retrieve project details from CloudFormation stack outputs cfn = boto3.client('cloudformation', region_name='us-east-1') response = cfn.describe_stacks(StackName='my-bedrock-projects-stack') outputs = {o['OutputKey']: o['OutputValue'] for o in response['Stacks'][0]['Outputs']} production_project_arn = outputs['ProductionProjectArn'] # Extract project ID from ARN # ARN format: arn:aws:bedrock-mantle:us-east-1:123456789012:project/proj_abc123 project_id = production_project_arn.split('/')[-1] print(f"Using project: {project_id}") # Use the project for inference client = OpenAI(project=project_id) response = client.responses.create( model="openai.gpt-oss-120b", input="Hello from a CloudFormation-managed project!" ) print(response)

詳細はこちら

Amazon Bedrock リソースでの CloudFormation の使用の詳細については、以下を参照してください。