Tentei acessar um bucket do Amazon Simple Storage Service (Amazon S3) em uma região diferente da AWS e recebi o erro “IllegalLocationConstraintException”.
Breve descrição
Não é possível acessar um bucket do Amazon S3 de uma região diferente da região do bucket. Para acessar o bucket do S3, você deve atualizar sua API ou AWS SDK para estar na mesma região do bucket. Para mais informações sobre o erro IllegalLocationConstraintException, consulte a Lista de códigos de erro.
Resolução
Use as etapas de solução de problemas a seguir para obter a região do bucket e atualizar seus endpoints do Amazon S3 para a região correta.
Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Confirmar a região do bucket do Amazon S3
Para confirmar a região do bucket do S3, é possível usar o console do Amazon S3 ou a AWS CLI.
Console Amazon S3
Conclua as etapas a seguir:
- Abra o console do Amazon S3 e, em seguida, navegue até seu bucket do S3.
- Escolha o guia Propriedades.
- Em Visão geral do bucket, anote a região da AWS do seu bucket.
AWS CLI
Execute o seguinte comando get-bucket-location:
aws s3api get-bucket-location --bucket BUCKET_NAME
Observação: substitua BUCKET_NAME pelo nome do bucket do S3.
Exemplo de saída:
{
"LocationConstraint": "us-west-2"
}
Observação: se o parâmetro de solicitação LocationConstraint for nulo ou vazio, o bucket estará na região us-east-1.
Atualizar a configuração de região da API ou AWS SDK
Conclua as etapas a seguir para atualizar sua configuração da API ou AWS SDK para a região correta.
AWS CLI
Execute o seguinte comando ls e adicione o parâmetro --region:
aws s3 ls s3://BUCKET_NAME --region YOUR_REGION
Observação: substitua BUCKET_NAME pelo nome do bucket do S3 e YOUR_REGION pela sua região.
AWS SDK
Se você usa o AWS SDK, atualize sua configuração para especificar a região correta.
Exemplo de configuração do AWS SDK para Python (Boto3):
import boto3
s3 = boto3.client('s3', region_name='YOUR-REGION')
response = s3.list_objects_v2(Bucket='BUCKET_NAME')
print(response)
Observação: substitua YOUR_REGION pela sua região e BUCKET_NAME pelo nome do seu bucket.IllegallocationConstraintException