

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Gestione di progetti con AWS CloudFormation
<a name="cloudformation-projects"></a>

Amazon Bedrock è integrato con AWS CloudFormation e ti consente di definire e gestire progetti come parte dei tuoi modelli di infrastruttura. Puoi effettuare il provisioning di progetti in modo coerente e ripetuto su più account e regioni AWS utilizzando modelli JSON o YAML.

## AWS::BedrockMantle::Project
<a name="cloudformation-projects-resource"></a>

Usa la `AWS::BedrockMantle::Project` risorsa per creare e gestire un progetto Bedrock in un modello. CloudFormation I progetti creati tramite CloudFormation supportano le stesse funzionalità di quelli creati tramite l'API, tra cui l'allegazione, l'etichettatura e l'osservabilità delle policy IAM.

### Sintassi
<a name="cloudformation-projects-syntax"></a>

Per dichiarare questa entità nel CloudFormation modello, utilizza la seguente sintassi:

**Example CloudFormation Sintassi**  

```
{
  "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
```

### Properties
<a name="cloudformation-projects-properties"></a>

Name  
Obbligatorio. Il nome del progetto. Deve essere unico all'interno del tuo account AWS.  
Tipo: String  
Minimo: 1  
Massimo: 64  
Modello: `^([0-9a-zA-Z][ _-]?)+$`  
Aggiornamento richiesto: sostituzione

Tag  
Una mappa di coppie chiave-valore da associare al progetto per l'allocazione dei costi e il controllo degli accessi.  
Tipo: Map di String  
L'aggiornamento richiede: nessuna interruzione

**Nota sugli aggiornamenti dei tag**  
CloudFormation gli aggiornamenti dei tag `AWS::BedrockMantle::Project` utilizzano operazioni di aggiunta e rimozione separate internamente. Non è prevista la sostituzione completa del tag atomico. Se un aggiornamento dello stack fallisce durante l'operazione, il set di tag del progetto potrebbe trovarsi in uno stato parzialmente aggiornato. Verifica sempre lo stato finale del tag dopo un aggiornamento dello stack che modifica i tag.

### Valori restituiti
<a name="cloudformation-projects-return-values"></a>

#### Ref
<a name="cloudformation-projects-ref"></a>

Quando si passa l'ID logico di questa risorsa alla `Ref` funzione intrinseca, `Ref` restituisce l'ID del progetto (ad esempio,). `proj_abc123`

#### Fn:: GetAtt
<a name="cloudformation-projects-getatt"></a>

ProjectId  
L'identificatore univoco del progetto (ad es.). `proj_abc123`

ProjectArn  
L'Amazon Resource Name (ARN) del progetto (ad es.). `arn:aws:bedrock-mantle:us-east-1:123456789012:project/proj_abc123`

Status  
Lo stato del progetto. `ACTIVE`indica che il progetto è pronto per l'uso. `ARCHIVED`significa che il progetto è stato archiviato e non può accettare nuove richieste di inferenza.

CreatedAt  
Il timestamp in cui è stato creato il progetto.

UpdatedAt  
Il timestamp in cui il progetto è stato aggiornato l'ultima volta.

## Esempi
<a name="cloudformation-projects-examples"></a>

### Crea un progetto di base
<a name="cloudformation-projects-basic"></a>

L'esempio seguente crea un progetto per un'applicazione chatbot di produzione:

**Example Progetto di 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"] }
    }
  }
}
```

### Crea più progetti per ambienti diversi
<a name="cloudformation-projects-multi-env"></a>

L'esempio seguente fornisce progetti separati per ambienti di sviluppo, staging e produzione in un unico stack:

```
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"
```

### Crea un progetto con IAM Role Access
<a name="cloudformation-projects-iam"></a>

L'esempio seguente crea un progetto e allega una policy IAM che concede a un ruolo specifico l'accesso ai modelli di invocazione:

```
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
```

## Utilizzo degli CloudFormation output con l'API Projects
<a name="cloudformation-projects-using-outputs"></a>

Dopo aver distribuito lo CloudFormation stack, puoi fare riferimento all'ARN e all'ID del progetto nel codice dell'applicazione utilizzando gli output dello stack:

```
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)
```

## Ulteriori informazioni
<a name="cloudformation-projects-learn-more"></a>

Per ulteriori informazioni sull'utilizzo CloudFormation con le risorse Amazon Bedrock, consulta:
+ [Crea risorse Amazon Bedrock con AWS CloudFormation](creating-resources-with-cloudformation.md)
+ [Guida per CloudFormation l'utente di AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [Riferimento al tipo di risorsa Amazon Bedrock](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/AWS_Bedrock.html)