Gestion de projets avec AWS CloudFormation - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion de projets avec AWS CloudFormation

Amazon Bedrock est intégré à AWS CloudFormation, ce qui vous permet de définir et de gérer des projets dans le cadre de vos modèles d'infrastructure. Vous pouvez provisionner des projets de manière cohérente et répétée sur plusieurs comptes et régions AWS à l'aide de modèles JSON ou YAML.

AWS::BedrockMantle::Project

Utilisez cette AWS::BedrockMantle::Project ressource pour créer et gérer un projet Bedrock dans un CloudFormation modèle. Les projets créés via l'API prennent en CloudFormation charge les mêmes fonctionnalités que ceux créés via l'API, notamment l'attachement aux politiques IAM, le balisage et l'observabilité.

Syntaxe

Pour déclarer cette entité dans votre CloudFormation modèle, utilisez la syntaxe suivante :

Exemple CloudFormation Syntaxe
{ "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

Propriétés

Nom

Obligatoire. Nom du projet. Doit être unique au sein de votre compte AWS.

Type : Chaîne

Minimum : 1

Maximum : 64

Modèle : ^([0-9a-zA-Z][ _-]?)+$

Requis pour la mise à jour : un remplacement

Étiquettes

Carte des paires clé-valeur à associer au projet pour la répartition des coûts et le contrôle d'accès.

Type : mappage de chaînes

Requis pour la mise à jour : aucune interruption

Remarque sur les mises à jour des balises

CloudFormation mises à jour des balises lors de AWS::BedrockMantle::Project l'utilisation d'opérations d'ajout et de suppression distinctes en interne. Il n'y a pas de remplacement complet de l'étiquette atomique. Si une mise à jour de la pile échoue en cours d'opération, le jeu de balises du projet est peut-être partiellement mis à jour. Vérifiez toujours l'état final des balises après une mise à jour de la pile qui modifie les balises.

Valeurs renvoyées

Réf

Lorsque vous transmettez l'identifiant logique de cette ressource à la Ref fonction intrinsèque, Ref renvoie l'identifiant du projet (par exemple,proj_abc123).

Ventilateur : GetAtt

ProjectId

L'identifiant unique du projet (par exemple,proj_abc123).

ProjectArn

Le nom de ressource Amazon (ARN) du projet (par exemple,arn:aws:bedrock-mantle:us-east-1:123456789012:project/proj_abc123).

Statut

État du projet. ACTIVEsignifie que le projet est prêt à être utilisé. ARCHIVEDsignifie que le projet a été archivé et ne peut pas accepter de nouvelles demandes d'inférence.

CreatedAt

Horodatage auquel le projet a été créé.

UpdatedAt

Horodatage auquel le projet a été mis à jour pour la dernière fois.

Exemples

Création d'un projet de base

L'exemple suivant crée un projet pour une application de chatbot de production :

Exemple Projet de base
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"] } } } }

Créez plusieurs projets pour différents environnements

L'exemple suivant fournit des projets distincts pour les environnements de développement, de préparation et de production dans une seule pile :

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"

Création d'un projet avec accès aux rôles IAM

L'exemple suivant crée un projet et y joint une politique IAM accordant un accès à un rôle spécifique pour appeler des modèles :

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

Utilisation CloudFormation des sorties avec l'API Projects

Après avoir déployé votre CloudFormation pile, vous pouvez référencer l'ARN et l'ID du projet dans le code de votre application à l'aide des sorties de la pile :

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)

En savoir plus

Pour plus d'informations sur l'utilisation CloudFormation des ressources Amazon Bedrock, consultez :