Tengo la siguiente estructura s3:
nombre del depósito: depósito de prueba
archivo: prueba.json
Y tengo la siguiente política de aws:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Action": "s3:GetObject", "Action": "s3:DeleteObject", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::test-bucket" } ] }Y esta póliza se adjunta a un usuario con clave de acceso 123.
Cuando trato de poner u obtener el test.json en el cubo de prueba usando el sdk como este:
BasicAWSCredentials awsCreds = new BasicAWSCredentials("123", "secretKeyId"); s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) .withRegion("US-EAST-1") .build(); s3Client.putObject(new PutObjectRequest("test-bucket", "test.json", file));Esto dará el problema de denegación de acceso.
Si cambio el recurso de la política a
"Resource": "*"entonces funcionará. Solo quiero asegurarme de que el recurso que puse esté en el formato correcto. ¿Qué salió mal?
Debe informar a Amazon que, además de su depósito, también desea acceder al contenido de su depósito.
Así que cambie el recurso de:
"Resource": "arn:aws:s3:::test-bucket"A algo como:
"Resource": [ "arn:aws:s3:::test-bucket", "arn:aws:s3:::test-bucket/*" ]