Por que recebo um erro de acesso negado quando tento acessar o Amazon S3 usando um AWS SDK?

3 minuto de leitura
0

Posso acessar meus recursos do Amazon Simple Storage Service (Amazon S3) ao usar a AWS Command Line Interface (AWS CLI). Mas eu recebo um erro de acesso negado quando uso um SAWS SDK. Como posso corrigir isso?

Resolução

Observação: se você receber erros ao executar comandos da AWS CLI, verifique se você está usando a versão mais recente da AWS CLI.

Verifique sua AWS CLI e as credenciais do AWS SDK

Primeiro, verifique se a AWS CLI e o AWS SDK que você está usando estão configurados com as mesmas credenciais. Para fazer isso, siga estas etapas:

Para obter as credenciais configuradas na AWS CLI, execute este comando:

aws iam list-access-keys

Se você estiver usando um perfil do AWS Identity and Access Management (IAM) associado à AWS CLI, execute este comando para obter a função:

aws sts get-caller-identity

Para obter as credenciais configuradas no AWS SDK que você está usando, execute uma chamada GetCallerIdentity usando seu cliente do AWS Security Token Service (AWS STS). Por exemplo, se você estiver usando o AWS SDK para Python (Boto3), execute get_caller_identity.

Se a AWS CLI e o AWS SDK usarem credenciais diferentes, use o AWS SDK com as credenciais armazenadas na AWS CLI.

Solucionar problemas de solicitações da AWS CLI e do SDK para o Amazon S3

Se as credenciais usadas pela CLI e pelo AWS SDK forem as mesmas, continue solucionando problemas fazendo estas perguntas:

  • As solicitações da CLI e do SDK para o S3 vêm da mesma fonte? Ou seja, verifique se as solicitações são da mesma instância do Amazon Elastic Compute Cloud (Amazon EC2).
  • Se as solicitações vêm da mesma fonte, o SDK está usando as credenciais pretendidas? Por exemplo, se você usa o AWS SDK para Python (Boto3), o SDK permite que você configure credenciais usando vários métodos. Isso significa que o Boto3 procura credenciais em vários locais em uma ordem específica. Se alguma credencial incorreta for especificada logo no início, essas credenciais serão usadas. Para obter mais informações sobre a ordem que o Boto3 segue ao procurar credenciais, consulte Credenciais no site do SDK do Boto3.

Verificar se seus endpoints da VPC permitem solicitações para o S3

Se as solicitações forem enviadas de fontes diferentes, verifique se a fonte que usa o SDK está enviando solicitações por meio de um endpoint da VPC. Em seguida, verifique se o endpoint da VPC permite a solicitação que você está tentando enviar para o Amazon S3.

A política de endpoint da VPC neste exemplo permite permissões de download e upload para DOC-EXAMPLE-BUCKET. Se você estiver usando esse endpoint da VPC, o acesso a qualquer outro bucket será negado.

{
  "Statement": [
    {
      "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

Se você não encontrar nenhum problema em suas credenciais ou na fonte, analise alguns dos motivos pelos quais um erro de acesso negado pode ser retornado pelo S3. Para obter mais informações, consulte Como soluciono os erros 403 de acesso negado do Amazon S3?


Informações relacionadas

Gerenciamento de identidade e acesso no Amazon S3

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos