

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
<a name="api-keys-generate"></a>

É 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys) no “Guia do usuário do IAM”.

**Topics**
+ [Gerar uma chave de API do Amazon Bedrock usando o console](#api-keys-generate-console)
+ [Gerar uma chave de API de longo prazo do Amazon Bedrock usando a API do Amazon Bedrock](#api-keys-generate-api-long-term)
+ [Gerar uma chave de API de curto prazo do Amazon Bedrock usando uma biblioteca de cliente](#api-keys-generate-short-term)
+ [Configurar a atualização automática de chaves de API de curto prazo do Amazon Bedrock](#api-keys-refresh-short-term)

## Gerar uma chave de API do Amazon Bedrock usando o console
<a name="api-keys-generate-console"></a>

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/](https://console.aws.amazon.com/bedrock).

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

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

     1. (Opcional) Por padrão, a política [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-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.

     1. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys) no “Guia do usuário do IAM”.



## Gerar uma chave de API de longo prazo do Amazon Bedrock usando a API do Amazon Bedrock
<a name="api-keys-generate-api-long-term"></a>

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](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html) com um [endpoint do IAM](https://docs.aws.amazon.com/general/latest/gr/iam-service.html).

1. Anexe a [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) ao usuário do IAM enviando uma solicitação [AttachUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachUserPolicy.html) com um [endpoint do IAM](https://docs.aws.amazon.com/general/latest/gr/iam-service.html). É 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-keys_inline-policy.html).

1. Gere a chave de API de longo prazo do Amazon Bedrock enviando uma solicitação [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html.html) com um [endpoint do IAM](https://docs.aws.amazon.com/general/latest/gr/iam-service.html) 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).

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

1. Anexe [AmazonBedRockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-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
   ```

1. Crie a chave de API de longo prazo do Amazon Bedrock, substituindo *\$1\$1NUMBER-OF-DAYS\$1* 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).

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
<a name="api-keys-generate-short-term"></a>

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](https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md) 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](#api-keys-refresh-short-term).

**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](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) gerenciada pela AWS à entidade principal. Você pode consultar [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 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](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html).
+ 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:
+ [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)

## Configurar a atualização automática de chaves de API de curto prazo do Amazon Bedrock
<a name="api-keys-refresh-short-term"></a>

É 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](#api-keys-generate-short-term). 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());
    }
}
```

------