

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à.

# Generare una chiave API Amazon Bedrock
<a name="api-keys-generate"></a>

Per generare una chiave API Amazon Bedrock, utilizzare la Console di gestione AWS o l’API AWS. Si consiglia di utilizzare la Console di gestione AWS per generare facilmente una chiave API Amazon Bedrock in pochi passaggi.

**avvertimento**  
Si consiglia di limitare l’uso delle chiavi API Amazon Bedrock per l’esplorazione di Amazon Bedrock. Quando è possibile integrare Amazon Bedrock in applicazioni con requisiti di sicurezza più elevati, è opportuno passare a credenziali a breve termine. Per ulteriori informazioni, consulta [Alternative alle chiavi di accesso a lungo termine](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys) nella Guida per l’utente di IAM.

**Topics**
+ [Generare una chiave API Amazon Bedrock con la console](#api-keys-generate-console)
+ [Generare una chiave API Amazon Bedrock a lungo termine utilizzando l’API](#api-keys-generate-api-long-term)
+ [Generare una chiave API Amazon Bedrock a breve termine utilizzando una libreria client](#api-keys-generate-short-term)
+ [Configurare l’aggiornamento automatico delle chiavi API Amazon Bedrock a breve termine](#api-keys-refresh-short-term)

## Generare una chiave API Amazon Bedrock con la console
<a name="api-keys-generate-console"></a>

Per generare una chiave API Amazon Bedrock con la console, esegui queste operazioni:

1. Accedi alla Console di gestione AWS con un’identità IAM che disponga delle autorizzazioni per utilizzare la console Amazon Bedrock. Quindi, apri la console Amazon Bedrock all’indirizzo [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock).

1. Nel riquadro di navigazione a sinistra, seleziona **Chiavi API**.

1. Genera uno dei seguenti tipi di chiave:
   + **Chiave API a breve termine**: nella scheda **Chiavi API a breve termine**, scegli **Genera chiavi API a breve termine**. La chiave scade alla scadenza della sessione della console (e non dura più di 12 ore) e consente di effettuare chiamate alla Regione AWS da cui è stata generata. È possibile modificare la Regione direttamente nella chiave generata.
   + **Chiave API a lungo termine**: nella scheda **Chiavi API a breve termine**, scegli **Genera chiavi API a lungo termine**.

     1. Nella sezione **Scadenza della chiave API**, scegli l’ora di scadenza della chiave.

     1. (Facoltativo) Per impostazione predefinita, la policy [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) gestita da AWS, che consente l’accesso alle operazioni principali dell’API Amazon Bedrock, è collegata all’utente IAM associato alla chiave. Per selezionare altre policy da collegare all’utente, espandi la sezione **Autorizzazioni avanzate** e seleziona le policy da aggiungere.

     1. Scegliere **Generate (Genera)**.
**avvertimento**  
Si consiglia di limitare l’uso delle chiavi API Amazon Bedrock per l’esplorazione di Amazon Bedrock. Quando è possibile integrare Amazon Bedrock in applicazioni con requisiti di sicurezza più elevati, è opportuno passare a credenziali a breve termine. Per ulteriori informazioni, consulta [Alternative alle chiavi di accesso a lungo termine](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys) nella Guida per l’utente di IAM.



## Generare una chiave API Amazon Bedrock a lungo termine utilizzando l’API
<a name="api-keys-generate-api-long-term"></a>

I passaggi generali per la creazione di una chiave API Amazon Bedrock a lungo termine nell’API sono i seguenti:

1. Crea un utente IAM inviando una richiesta [CreateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html) con un [endpoint IAM](https://docs.aws.amazon.com/general/latest/gr/iam-service.html).

1. Collega [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) all’utente IAM inviando una richiesta [AttachUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachUserPolicy.html) con un [endpoint IAM](https://docs.aws.amazon.com/general/latest/gr/iam-service.html). È possibile ripetere questo passaggio per collegare all’utente altre policy gestite o personalizzate in base alle esigenze.
**Nota**  
Come best practice di sicurezza, consigliamo di collegare le policy IAM all’utente IAM per limitare l’uso delle chiavi API Amazon Bedrock. Per esempi di policy di limitazione temporale e di limitazione degli indirizzi IP che possono utilizzare la chiave, consulta [Controllare l’uso delle chiavi di accesso collegando una policy in linea a un utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-keys_inline-policy.html).

1. Genera la chiave API Amazon Bedrock a lungo termine inviando una richiesta [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html.html) con un [endpoint IAM](https://docs.aws.amazon.com/general/latest/gr/iam-service.html) e specificando `bedrock.amazonaws.com` come `ServiceName`.
   + La risposta `ServiceApiKeyValue` restituita è la chiave API Amazon Bedrock a lungo termine.
   + Il valore `ServiceSpecificCredentialId` restituito nella risposta può essere utilizzato per eseguire operazioni API relative alla chiave.

Per informazioni su come generare una chiave API Amazon Bedrock, scegli la scheda relativa al metodo che preferisci, quindi segui la procedura:

------
#### [ CLI ]

Per creare una chiave API Amazon Bedrock a lungo termine, si utilizzano le operazioni dell’API AWS Identity and Access Management. Verifica innanzitutto di soddisfare il prerequisito:

**Prerequisito**  
Verifica che la configurazione consenta alla AWS CLI di riconoscere automaticamente le credenziali AWS. Per ulteriori informazioni, consulta [Configurazione delle impostazioni per la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).

Aprire una finestra del terminale ed eseguire i comandi seguenti:

1. Creare un utente IAM. Puoi sostituire il nome con uno a tua scelta:

   ```
   aws iam create-user --user-name bedrock-api-user
   ```

1. Collega [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) all’utente. Puoi ripetere questo passaggio con gli ARN di qualsiasi altra policy gestita da AWS o personalizzata che desideri aggiungere alla chiave API:

   ```
   aws iam attach-user-policy --user-name bedrock-api-user --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
   ```

1. Crea la chiave API Amazon Bedrock a lungo termine, sostituendo *\$1\$1NUMBER-OF-DAYS\$1* con il numero di giorni di durata della chiave:

   ```
   aws iam create-service-specific-credential \
       --user-name bedrock-api-user \
       --service-name bedrock.amazonaws.com \
       --credential-age-days ${NUMBER-OF-DAYS}
   ```

------
#### [ Python ]

Per creare una chiave API Amazon Bedrock a lungo termine, si utilizzano le operazioni dell’API AWS Identity and Access Management. Verifica innanzitutto di soddisfare il prerequisito:

**Prerequisito**  
Verifica che la configurazione consenta a Python di riconoscere automaticamente le credenziali AWS. Per ulteriori informazioni, consulta [Configurazione delle impostazioni per la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).

Esegui lo script seguente per creare un utente IAM, collegare le autorizzazioni per eseguire azioni Amazon Bedrock e generare una chiave API Amazon Bedrock a lungo termine da associare all’utente:

```
import boto3
from datetime import datetime, timedelta

# Replace with name for your IAM user
username = "bedrock-api-user"
# Add any AWS-managed or custom policies that you want to the user
bedrock_policies = [
    "arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess",        # Limited access
#    "arn:aws:iam::aws:policy/AmazonBedrockMarketplaceAccess",   # Optional: Access to Amazon Bedrock Marketplace actions
]
# Set the key expiration time to a number of your choice
expiration_time_in_days = 30

iam_client = boto3.client("iam")
    
# Create IAM user
user = iam_client.create_iam_user(username)

# Attach policies to user
for policy_arn in bedrock_policies:
    iam_client.attach_managed_policy(username, policy_arn)

# Create long-term Amazon Bedrock API key and return it
service_credentials = iam_client.create_service_specific_credential(
    user_name=username, 
    service_name="bedrock",
    credential_age_days=expiration_time_in_days
) 
api_key = service_credentials["ServiceApiKeyValue"]
print(api_key)
```

------

## Generare una chiave API Amazon Bedrock a breve termine utilizzando una libreria client
<a name="api-keys-generate-short-term"></a>

Le chiavi a breve termine hanno le proprietà indicate di seguito.
+ Validità per il minore dei seguenti valori:
  + 12 ore
  + Durata della sessione generata dal principale IAM utilizzato per generare la chiave.
+ Eredita le autorizzazioni collegate al principale utilizzato per generare la chiave.
+ Può essere utilizzata solo nella Regione AWS da cui è stata generata.

Per le applicazioni di lunga durata, la libreria client [aws-bedrock-token-generator](https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md) può creare nuove chiavi API Amazon Bedrock a breve termine, se necessario, quando le credenziali vengono aggiornate. Per ulteriori informazioni, consulta [Configurare l’aggiornamento automatico delle chiavi API Amazon Bedrock a breve termine](#api-keys-refresh-short-term).

**Prerequisiti**
+ Verifica che il principale IAM utilizzato per generare la chiave sia configurato con le autorizzazioni appropriate per utilizzare Amazon Bedrock. Per provare, collega la policy [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) gestita da AWS al principale. Per proteggere le credenziali, consulta [Best practice per la sicurezza in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).
+ Verifica che la configurazione consenta a Python di riconoscere automaticamente le credenziali AWS. Il metodo predefinito con cui vengono recuperate le credenziali segue una gerarchia definita. Per visualizzare la gerarchia per uno specifico SDK o strumento consulta [Provider di credenziali di SDK AWS standardizzati e strumenti](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html).
+ Installa il generatore di token Amazon Bedrock. Scegli la scheda relativa al metodo che preferisci, quindi segui la procedura:

------
#### [ Python ]

Apri un terminale ed esegui questo comando:

```
pip install aws-bedrock-token-generator
```

------
#### [ Javascript ]

Apri un terminale ed esegui questo comando:

```
npm install @aws/bedrock-token-generator
```

------
#### [ Java ]

Se utilizzi Maven, aggiungi la dipendenza seguente a `pom.xml`:

```
<dependency>
    <groupId>software.amazon.bedrock</groupId>
    <artifactId>aws-bedrock-token-generator</artifactId>
    <version>1.1.0</version>
</dependency>
```

Se usi Gradle, aggiungi quanto segue a `build.gradle`:

```
implementation 'software.amazon.bedrock:aws-bedrock-token-generator:1.1.0'
```

------

**Esempi**  
Per esempi di utilizzo del generatore di token per generare una chiave API Amazon Bedrock a breve termine con le credenziali predefinite in diverse lingue, scegli la scheda relativa al metodo che preferisci, quindi segui la procedura:

------
#### [ Python ]

```
from aws_bedrock_token_generator import provide_token

token = provide_token()
print(f"Token: {token}")
```

------
#### [ Javascript ]

```
import { getTokenProvider } from "@aws/bedrock-token-generator";

// Create a token provider that uses default credentials and region providers.
// You can configure it to use other credential providers.
const provideToken = getTokenProvider();

async function example() {
    
  const token = await provideToken();

  // Use the token for API calls. The token has a default expiration of 12 hour.
  // If the expiresInSeconds parameter is specified during token creation, the 
  // expiration can be configured up to a maximum of 12 hours. However, the actual 
  // token validity period will always be the minimum of the requested expiration 
  // time and the AWS credentials' expiry time
  console.log(`Bearer Token: ${token}`);
}
```

------
#### [ Java ]

```
import software.amazon.bedrock.token.BedrockTokenGenerator;

// Credentials and region will be picked up from the default provider chain
BedrockTokenGenerator tokenGenerator = BedrockTokenGenerator.builder().build();
tokenGenerator.getToken();
```

------

Per altri esempi di diversi casi d’uso per la generazione di token, consulta i seguenti link:
+ [Python](https://github.com/aws/aws-bedrock-token-generator-python/blob/main/README.md)
+ [Javascript](https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md)
+ [Java](https://github.com/aws/aws-bedrock-token-generator-java/blob/main/README.md)

## Configurare l’aggiornamento automatico delle chiavi API Amazon Bedrock a breve termine
<a name="api-keys-refresh-short-term"></a>

È possibile creare uno script con l’aiuto del pacchetto `aws-bedrock-token-generator` per rigenerare a livello di codice una nuova chiave a breve termine ogni volta che quella attuale è scaduta. Verifica innanzitutto di soddisfare il prerequisito in [Generare una chiave API Amazon Bedrock a breve termine utilizzando una libreria client](#api-keys-generate-short-term). Per esempi di script che recuperano un token ed effettuano una richiesta Converse, scegli la scheda relativa al metodo che preferisci, quindi segui la procedura:

------
#### [ Python ]

```
from aws_bedrock_token_generator import provide_token
import requests

def get_new_token():
    url = "https://bedrock-runtime.us-west-2.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse"
    payload = {
        "messages": [
            {
                "role": "user",
                "content": [{"text": "Hello"}]
            }
        ]
    }

    # Create a token provider that uses default credentials and region providers.
    # You can configure it to use other credential providers.
    # https://github.com/aws/aws-bedrock-token-generator-python/blob/main/README.md
    # It can be used for each API call as it is inexpensive.
    token = provide_token()

    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {token}"
    }

    response = requests.post(url, headers=headers, json=payload)
    print(response.json())

if __name__ == "__main__":
    get_new_token()
```

------
#### [ Javascript ]

```
import { getTokenProvider } from "@aws/bedrock-token-generator";

// Create a token provider that uses default credentials and region providers.
// You can configure it to use other credential providers.
// https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md
// This can be created just once. Use await provideToken() to fetch the token
const provideToken = getTokenProvider();

async function example() {
    const url = "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse";
    const payload = {
        messages: [
            {
                role: "user",
                content: [{ text: "Hello" }]
            }
        ]
    };
    const headers = {
        "Content-Type": "application/json",
        // provideToken retrieves a valid token. It can be used for each API call as it is inexpensive.
        "Authorization": `Bearer ${await provideToken()}`
    };
    await fetch(url, {
        method: 'POST',
        headers: headers,
        body: JSON.stringify(payload)
    })
}
```

------
#### [ Java ]

```
package com.amazon.bedrocktoken;

import software.amazon.bedrock.token.BedrockTokenGenerator;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class GetNewToken {
    public static void main(String[] args) throws Exception {
        // Use default credentials and region from environment/profile chain
        // Create a token generator that uses default credentials and region providers.
        // You can configure it to use other credential providers.
        // https://github.com/aws/aws-bedrock-token-generator-java/blob/main/README.md
        BedrockTokenGenerator tokenGenerator = BedrockTokenGenerator.builder().build();

        // getToken() retrieves a valid token. It can be used for each API call as it is inexpensive.
        String token = tokenGenerator.getToken();

        String url = "https://bedrock-runtime.us-west-2.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse";
        String payload = "{\n" +
                "    \"messages\": [\n" +
                "        {\n" +
                "            \"role\": \"user\",\n" +
                "            \"content\": [{ \"text\": \"Hello\" }]\n" +
                "        }\n" +
                "    ]\n" +
                "}";

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .header("Content-Type", "application/json")
            .header("Authorization", "Bearer " + token)
            .POST(HttpRequest.BodyPublishers.ofString(payload))
            .build();

        HttpClient client = HttpClient.newHttpClient();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
```

------