View a markdown version of this page

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][ _-]?)+$

업데이트 필요 조건: 대체

Tags

비용 할당 및 액세스 제어를 위해 프로젝트와 연결할 키-값 페어의 맵입니다.

유형: String의 맵

업데이트 필요 조건: 무중단

태그 업데이트에 대한 참고 사항

의 CloudFormation 태그 업데이트는 내부적으로 별도의 추가 및 제거 작업을 AWS::BedrockMantle::Project 사용합니다. 원자성 전체 태그 교체는 없습니다. 작업 중 스택 업데이트에 실패하면 프로젝트의 태그 세트가 부분적으로 업데이트된 상태일 수 있습니다. 태그를 수정하는 스택 업데이트 후에는 항상 최종 태그 상태를 확인합니다.

반환 값

Ref

이 리소스의 논리적 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).

Status

프로젝트의 상태입니다.는 프로젝트를 사용할 준비가 되었음을 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"] } } } }

다양한 환경에 대해 여러 프로젝트 생성

다음 예제에서는 단일 스택에서 개발, 스테이징 및 프로덕션 환경을 위한 별도의 프로젝트를 프로비저닝합니다.

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을 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요.