Tentei acessar objetos do Amazon Simple Storage Service (Amazon S3) que são criptografados com o AWS Key Management Service (AWS KMS). Recebi o seguinte erro: "Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4".
Resolução
Os seguintes motivos podem causar a mensagem de erro "Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4":
- Suas solicitações não estão assinadas com o AWS Signature Version 4.
- Você fez uma solicitação anônima.
Suas solicitações não estão assinadas com o AWS Signature Version 4
Ao usar o Signature Version 2 com um objeto criptografado pelo AWS KMS, é possível receber uma mensagem de erro. Alguns endpoints da API REST e regiões AWS do S3 ainda oferecem suporte a solicitações assinadas usando o Signature Version 2. No entanto, é uma prática recomendada usar o Signature Version 4 para fazer login. Para obter mais informações, consulte AWS Signature Version 2 turned off (deprecated) for Amazon S3 (AWS Signature Version 2 desativada (obsoleta) para o Amazon S3).
É possível fazer solicitações assinadas com o Signature Version 2 para buckets em regiões que oferecem suporte ao Signature Version 2. No entanto, o AWS KMS exige que suas solicitações sejam assinadas com o Signature Version 4.
Para identificar a versão da assinatura que você usou para solicitações de objetos em seu bucket, execute as seguintes ações:
Observação: Para solicitações que especificam chaves gerenciadas do AWS KMS, você deve usar SSL ou TLS. Se você não usar SSL ou TLS e fizer a solicitação por meio de uma conexão não segura, receberá o seguinte erro:
"An error occurred (InvalidArgument) when calling the operation_performed operation: Requests specifying Server Side Encryption with AWS KMS managed keys must be made over a secure connection.""Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4"
Você fez uma solicitação anônima
Uma solicitação anônima é uma solicitação que não está assinada com as credenciais da AWS. Por exemplo, você usa a URL do objeto no seu navegador ou um cliente HTTP para baixar um objeto do S3.
Um exemplo de uma URL de objeto é https://bucketname.s3.region.amazonaws.com/folder/file.txt.
Veja a seguir um exemplo de um comando curl que você executa para fazer uma solicitação anônima:
curl -vo ./local/path/file.txt https://bucketname.s3.region.amazonaws.com/folder/file.txt
Para evitar a mensagem de erro, certifique-se de que sua solicitação esteja assinada com as credenciais da AWS.