Generare una chiave API Amazon Bedrock - Amazon Bedrock

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

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 nella Guida per l’utente di IAM.

Generare una chiave API Amazon Bedrock con la console

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.

  2. Nel riquadro di navigazione a sinistra, seleziona Chiavi API.

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

      2. (Facoltativo) Per impostazione predefinita, la policy 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.

      3. 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 nella Guida per l’utente di IAM.

Generare una chiave API Amazon Bedrock a lungo termine utilizzando l’API

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 con un endpoint IAM.

  2. Collega AmazonBedrockLimitedAccess all’utente IAM inviando una richiesta AttachUserPolicy con un endpoint IAM. È 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.

  3. Genera la chiave API Amazon Bedrock a lungo termine inviando una richiesta CreateServiceSpecificCredential con un endpoint IAM 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.

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
  2. Collega 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
  3. Crea la chiave API Amazon Bedrock a lungo termine, sostituendo ${NUMBER-OF-DAYS} 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.

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

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

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 gestita da AWS al principale. Per proteggere le credenziali, consulta Best practice per la sicurezza in IAM.

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

  • 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:

Configurare l’aggiornamento automatico delle chiavi API Amazon Bedrock a breve termine

È 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. 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()); } }