Gerar uma chave de API do Amazon Bedrock - Amazon Bedrock

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerar uma chave de API do Amazon Bedrock

É possível gerar uma chave de API do Amazon Bedrock usando a API Console de gerenciamento da AWS ou AWS. Recomendamos que você use o Console de gerenciamento da AWS para gerar facilmente uma chave de API do Amazon Bedrock em apenas algumas etapas.

Atenção

É altamente recomendável restringir o uso das chaves de API do Amazon Bedrock à exploração do Amazon Bedrock. Quando estiver tudo pronto para incorporar o Amazon Bedrock em aplicações com maiores requisitos de segurança, você deve mudar para credenciais de curto prazo. Para ter mais informações, consulte Alternativas para chaves de acesso de longo prazo no “Guia do usuário do IAM”.

Gerar uma chave de API do Amazon Bedrock usando o console

Para gerar uma chave de API do Amazon Bedrock usando o console, faça o seguinte:

  1. Faça login no Console de gerenciamento da AWS com uma identidade do IAM que tenha permissões para usar o console do Amazon Bedrock. Em seguida, abra o console do Amazon Bedrock em https://console.aws.amazon.com/bedrock/.

  2. No painel de navegação à esquerda, selecione Chaves de API.

  3. Gere um dos seguintes tipos de chave:

    • Chave de API de curto prazo: na guia Chaves de API de curto prazo, escolha Gerar chaves de API de curto prazo. A chave expira quando a sessão do console expira (e no máximo em 12 horas) e permite que você faça chamadas para a Região da AWS onde você a gerou. É possível modificar a região diretamente na chave gerada.

    • Chave de API de longo prazo: na guia Chaves de API de longo prazo, escolha Gerar chaves de API de longo prazo.

      1. Na seção Expiração da chave de API, escolha um horário após o qual a chave expirará.

      2. (Opcional) Por padrão, a política AmazonBedrockLimitedAccess gerenciada pela AWS, que concede acesso às principais operações de API do Amazon Bedrock, é anexada ao usuário do IAM associado à chave. Para selecionar mais políticas para anexar ao usuário, expanda a seção Permissões avançadas e selecione as políticas que você deseja adicionar.

      3. Escolha Gerar.

      Atenção

      É altamente recomendável restringir o uso das chaves de API do Amazon Bedrock à exploração do Amazon Bedrock. Quando estiver tudo pronto para incorporar o Amazon Bedrock em aplicações com maiores requisitos de segurança, você deve mudar para credenciais de curto prazo. Para ter mais informações, consulte Alternativas para chaves de acesso de longo prazo no “Guia do usuário do IAM”.

Gerar uma chave de API de longo prazo do Amazon Bedrock usando a API do Amazon Bedrock

As etapas gerais para a criação de uma chave de API de longo prazo do Amazon Bedrock na API são as seguintes:

  1. Crie um usuário do IAM enviando uma solicitação CreateUser com um endpoint do IAM.

  2. Anexe a AmazonBedrockLimitedAccess ao usuário do IAM enviando uma solicitação AttachUserPolicy com um endpoint do IAM. É possível repetir essa etapa para anexar outras políticas gerenciadas ou personalizadas ao usuário, conforme necessário.

    nota

    Como prática recomendada de segurança, é altamente recomendável que você anexe políticas do IAM ao usuário do IAM para restringir o uso das chaves de API do Amazon Bedrock. Para ver exemplos de política de limite de tempo e restrição dos endereços IP que podem usar a chave, consulte Controle o uso de chaves de acesso anexando uma política em linha a um usuário do IAM.

  3. Gere a chave de API de longo prazo do Amazon Bedrock enviando uma solicitação CreateServiceSpecificCredential com um endpoint do IAM e especificando bedrock.amazonaws.com como ServiceName.

    • O ServiceApiKeyValue exibido na resposta é a chave de API de longo prazo do Amazon Bedrock.

    • O ServiceSpecificCredentialId exibido na resposta pode ser usado para realizar operações de API relacionadas à chave.

Para saber como gerar uma chave de API de longo prazo do Amazon Bedrock, escolha a guia do método de sua preferência e siga as etapas:

CLI

Para criar uma chave de API de longo prazo do Amazon Bedrock, use operações de API do AWS Identity and Access Management. Primeiro, é necessário atender aos pré-requisitos:

Pré-requisito

Sua configuração deve permitir que a AWS CLI reconheça automaticamente suas credenciais da AWS. Para saber mais, consulte Como definir as configurações da AWS CLI.

Abra um terminal e execute os seguintes comandos:

  1. Criar um usuário do IAM. Você pode substituir o nome por um de sua preferência:

    aws iam create-user --user-name bedrock-api-user
  2. Anexe AmazonBedRockLimitedAccess ao usuário. É possível repetir esta etapa com os ARNs de qualquer outra política gerenciada pela AWS ou personalizada que queira adicionar à chave de API:

    aws iam attach-user-policy --user-name bedrock-api-user --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
  3. Crie a chave de API de longo prazo do Amazon Bedrock, substituindo ${NUMBER-OF-DAYS} pelo número de dias durante os quais você deseja que a chave seja mantida:

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

Para criar uma chave de API de longo prazo do Amazon Bedrock, use operações de API do AWS Identity and Access Management. Primeiro, é necessário atender aos pré-requisitos:

Pré-requisito

Sua configuração deve permitir que o Python reconheça automaticamente suas credenciais da AWS. Para saber mais, consulte Como definir as configurações da AWS CLI.

Execute o seguinte script para criar um usuário do IAM, anexar permissões para realizar ações do Amazon Bedrock e gerar uma chave de API de longo prazo do Amazon Bedrock para associá-la ao usuário:

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)

Gerar uma chave de API de curto prazo do Amazon Bedrock usando uma biblioteca de cliente

As chaves de curto prazo têm as seguintes propriedades:

  • São válidas para valores mais curtos do que os seguintes valores:

    • 12 horas

    • A duração da sessão gerada pela entidade principal do IAM usada para gerar a chave.

  • Herdam as permissões associadas à entidade principal usada para gerar a chave.

  • Só podem ser usadas na região da AWS na qual você as gerou.

Para aplicações de longa execução, a biblioteca cliente aws-bedrock-token-generator pode criar chaves de API de curto prazo do Amazon Bedrock, conforme necessário, quando as credenciais são atualizadas. Para obter mais informações, consulte Configurar a atualização automática de chaves de API de curto prazo do Amazon Bedrock.

Pré-requisitos
  • A entidade principal do IAM que você usa para gerar a chave deve estar configurada com as permissões adequadas para usar o Amazon Bedrock. Para experimentação, você pode anexar a política de acesso limitado AmazonBedrockLimitedAccess gerenciada pela AWS à entidade principal. Você pode consultar Práticas recomendadas de segurança no IAM para proteger suas credenciais.

  • Sua configuração deve permitir que o Python reconheça automaticamente suas credenciais da AWS. O método padrão pelo qual as credenciais são recuperadas segue uma hierarquia definida. Você pode ver a hierarquia de um SDK ou ferramenta específica nos provedores de credenciais em Provedores de credenciais padronizadas de SDKs e ferramentas da AWS.

  • Instale o gerador de tokens do Amazon Bedrock. Escolha a guia correspondente ao método de sua preferência e siga as etapas:

Python

Abra um terminal e execute o seguinte comando:

pip install aws-bedrock-token-generator
Javascript

Abra um terminal e execute o seguinte comando:

npm install @aws/bedrock-token-generator
Java

Se você usa o Maven, adicione a seguinte dependência ao pom.xml:

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

Se você usa o Gradle, adicione o seguinte ao seu arquivo build.gradle:

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

Para ver exemplos sobre como usar o gerador de tokens para gerar uma chave de API de curto prazo do Amazon Bedrock com suas credenciais padrão em diferentes linguagens, escolha a guia correspondente ao método de sua preferência e siga as etapas:

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();

Para ver mais exemplos de diferentes casos de uso ao gerar tokens, consulte os seguintes links:

Configurar a atualização automática de chaves de API de curto prazo do Amazon Bedrock

É possível criar um script com a ajuda do pacote aws-bedrock-token-generator para regenerar programaticamente uma nova chave de curto prazo sempre que a atual expirar. Primeiro, é necessário atender aos pré-requisitos em Gerar uma chave de API de curto prazo do Amazon Bedrock usando uma biblioteca de cliente. Para ver exemplos de scripts que recuperam um token e fazem uma solicitação Converse, escolha a guia correspondente ao método de sua preferência e siga as etapas:

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