

# Elementos de uma assinatura de solicitação de API da AWS
<a name="reference_sigv-signing-elements"></a>

**Importante**  
A menos que você esteja usando AWS SDKs ou a CLI, é necessário escrever código para calcular assinaturas que forneçam informações de autenticação em suas solicitações. O cálculo da assinatura no AWS Signature Versão 4 pode ser uma tarefa complexa, então é recomendável usar os AWS SDKs ou a CLI sempre que possível.

Cada solicitação HTTP/HTTPS que usa a assinatura do Signature Version 4 deve conter esses elementos.

**Topics**
+ [Especificação de endpoint](#endpoint-specification)
+ [Ação](#action)
+ [Parâmetros de ação](#parameters)
+ [Data](#date)
+ [Informações de autenticação](#authentication)

## Especificação de endpoint
<a name="endpoint-specification"></a>

Especifica o nome DNS do endpoint ao qual você envia a solicitação. Esse nome geralmente contém o código do serviço e a região. Por exemplo, o nome do endpoint para o Amazon DynamoDB na região `us-east-1` é `dynamodb.us-east-1.amazonaws.com`.

Para solicitações de HTTP/1.1, é necessário incluir o cabeçalho `Host`. Para solicitações HTTP/2, você pode incluir o cabeçalho `:authority` ou o cabeçalho `Host`. Use apenas o cabeçalho `:authority` em conformidade com a especificação HTTP/2. Nem todos os serviços oferecem suporte a solicitações HTTP/2.

Para obter os endpoints compatíveis com cada serviço, consulte [Endpoints e cotas de serviço](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) na *Referência geral da AWS*.

## Ação
<a name="action"></a>

Especifica uma ação de API para o serviço. Por exemplo, a ação `CreateTable` do DynamoDB ou a ação `DescribeInstances` do Amazon EC2.

Para ver as ações compatíveis com cada serviço, consulte a [Referência de autorização do serviço](https://docs.aws.amazon.com//service-authorization/latest/reference/reference.html).

## Parâmetros de ação
<a name="parameters"></a>

Especifica os parâmetros da ação especificada na solicitação. Cada ação de API da AWS tem um conjunto de parâmetros obrigatórios e opcionais. A versão da API geralmente é um parâmetro obrigatório.

Para ver os parâmetros compatíveis com uma ação de API, consulte a Referência de API do serviço.

## Data
<a name="date"></a>

Especifica a data e a hora da solicitação. Incluir a data e a hora na solicitação ajuda a evitar que terceiros interceptem sua solicitação e a enviem novamente mais tarde. A data especificada no escopo de credenciais deve corresponder à data da solicitação.

O carimbo de data e hora deve estar em UTC e usar o seguinte formato: ISO 8601 *AAAAMMDD*T*HHMMSS*Z. Por exemplo, `20220830T123600Z`. Não inclua milissegundos na marca de tempo.

Você pode usar um cabeçalho `date` ou `x-amz-date` ou incluir `x-amz-date` como um parâmetro de consulta. Se não conseguirmos encontrar um cabeçalho `x-amz-date`, procuraremos um cabeçalho `date`.

## Informações de autenticação
<a name="authentication"></a>

Cada solicitação enviada deve incluir as informações a seguir. A AWS usa essas informações para garantir a validade e a autenticidade da solicitação.
+ Algoritmo: o algoritmo que você está usando como parte do processo de assinatura. 
  + SigV4: use `AWS4-HMAC-SHA256` para especificar o Signature Version 4 com o algoritmo de hash `HMAC-SHA256`. 
  + SigV4a: use `AWS4-ECDSA-P256-SHA256` para especificar o algoritmo de hash `ECDSA-P256-SHA-256`.
+ Credencial: uma string que é formada concatenando o ID da chave de acesso e os componentes do escopo de credencial.
  + SigV4: o escopo da credencial inclui o ID da chave de acesso, a data no formato *AAAAMMDD*, o código da região, o código do serviço e a string `aws4_request` de término separados por barras (/). O código da região, o código do serviço e a string de término devem usar caracteres minúsculos.

    ```
    AKIAIOSFODNN7EXAMPLE/YYYYMMDD/region/service/aws4_request
    ```
  + SigV4a: o escopo da credencial inclui a data no formato AAAAMMDD, o nome do serviço e a string `aws4_request` de término separados por barras (/). Observe que o escopo da credencial não inclui a região, pois ela é englobada em um cabeçalho `X-Amz-Region-Set` separado.

    ```
    AKIAIOSFODNN7EXAMPLE/YYYYMMDD/service/aws4_request
    ```
+ Cabeçalhos assinados: os cabeçalhos HTTP a serem incluídos na assinatura, separados por ponto e vírgula (;). Por exemplo, `host;x-amz-date`.

  Para SigV4a, você deve incluir um cabeçalho de conjunto de regiões que especifique o conjunto de regiões em que a solicitação será válida. O cabeçalho `X-Amz-Region-Set` é especificado como uma lista de valores separados por vírgula. O exemplo a seguir mostra um cabeçalho de região que permite fazer uma solicitação nas regiões us-east-1 e us-west-1.

  ```
  X-Amz-Region-Set=us-east-1,us-west-1
  ```

  Você pode usar curingas (\$1) em regiões para especificar várias regiões. No exemplo a seguir, o cabeçalho permite que uma solicitação seja feita tanto na região us-west-1 quanto na us-west-2.

  ```
  X-Amz-Region-Set=us-west-*
  ```
+ Assinatura: uma string codificada em hexadecimal que representa a assinatura calculada. Você deve calcular a assinatura com o algoritmo especificado no parâmetro `Algorithm`. 

Para obter mais informações, consulte [Métodos de autenticação](reference_sigv-authentication-methods.md)