Elementos de uma assinatura de solicitação de API da AWS - AWS Identity and Access Management

Elementos de uma assinatura de solicitação de API da AWS

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.

Especificação de endpoint

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 na Referência geral da AWS.

Ação

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.

Parâmetros de ação

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

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

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: use AWS4-HMAC-SHA256 para especificar o Signature Version 4 com o algoritmo de hash HMAC-SHA256.

  • Credencial: uma string que consiste no ID da chave de acesso, na data no formato AAAAMMDD, no código da região, no código do serviço e na string de término aws4_request, 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
  • 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.

  • Assinatura: uma string codificada em hexadecimal que representa a assinatura calculada. Você deve calcular a assinatura com o algoritmo especificado no parâmetro Algorithm.