Administración de proyectos con AWS CloudFormation - Amazon Bedrock

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Administración de proyectos con AWS CloudFormation

Amazon Bedrock está integrado con AWS CloudFormation, lo que le permite definir y gestionar proyectos como parte de sus plantillas de infraestructura. Puede aprovisionar proyectos de forma coherente y repetida en varias cuentas y regiones de AWS mediante plantillas JSON o YAML.

AWS::BedrockMantle::Project

Utilice el AWS::BedrockMantle::Project recurso para crear y gestionar un proyecto de Bedrock en una CloudFormation plantilla. Los proyectos creados a través de la API CloudFormation admiten las mismas capacidades que los creados a través de la API, incluidas la vinculación, el etiquetado y la observabilidad de las políticas de IAM.

Sintaxis

Para declarar esta entidad en tu CloudFormation plantilla, usa la siguiente sintaxis:

ejemplo CloudFormation Sintaxis
{ "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

Propiedades

Name

Obligatorio. El nombre del proyecto. Debe ser único en su cuenta de AWS.

Tipo: cadena

Mínimo: 1

Máximo: 64

Patrón: ^([0-9a-zA-Z][ _-]?)+$

Requisitos de actualización: reemplazo

Tags

Un mapa de pares clave-valor para asociarlos al proyecto para la asignación de costos y el control de acceso.

Tipo: Map de String

Requisitos de actualización: sin interrupción

Nota sobre las actualizaciones de etiquetas

CloudFormation etiquete las actualizaciones cuando se AWS::BedrockMantle::Project utilizan separe internamente las operaciones de añadir y eliminar. No existe un reemplazo total de etiquetas atómicas. Si una actualización de la pila falla en mitad de la operación, es posible que el conjunto de etiquetas del proyecto esté parcialmente actualizado. Compruebe siempre el estado final de las etiquetas después de una actualización de la pila que modifique las etiquetas.

valores devueltos

Ref.

Al pasar el ID lógico de este recurso a la Ref función intrínseca, Ref devuelve el ID del proyecto (por ejemplo,proj_abc123).

Fn:: GetAtt

ProjectId

El identificador único del proyecto (por ejemplo,proj_abc123).

ProjectArn

El nombre del recurso de Amazon (ARN) del proyecto (por ejemplo,arn:aws:bedrock-mantle:us-east-1:123456789012:project/proj_abc123).

Status

El estado del proyecto. ACTIVEsignifica que el proyecto está listo para usarse. ARCHIVEDsignifica que el proyecto se ha archivado y no puede aceptar nuevas solicitudes de inferencia.

CreatedAt

La marca temporal en la que se creó el proyecto.

UpdatedAt

La marca de tiempo en la que se actualizó el proyecto por última vez.

Ejemplos

Crea un proyecto básico

El siguiente ejemplo crea un proyecto para una aplicación de chatbot de producción:

ejemplo Proyecto básico de
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"] } } } }

Cree varios proyectos para diferentes entornos

El siguiente ejemplo proporciona proyectos separados para los entornos de desarrollo, puesta en escena y producción en una sola pila:

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"

Cree un proyecto con IAM Role Access

En el siguiente ejemplo, se crea un proyecto y se adjunta una política de IAM que concede a un rol específico el acceso a los modelos de invocación:

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

Uso de CloudFormation resultados con la API de proyectos

Tras implementar la CloudFormation pila, puedes hacer referencia al ARN y al ID del proyecto en el código de tu aplicación mediante los resultados de la pila:

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)

Más información

Para obtener más información sobre el uso de CloudFormation los recursos de Amazon Bedrock, consulte: