withcredentials profilecredentialsprovider example aws amazons3clientbuilder java amazon-web-services amazon-s3

amazons3clientbuilder - profilecredentialsprovider aws java example



AWS S3 Java SDK-Acceso denegado (3)

Estoy tratando de acceder a un grupo y todo su objeto utilizando AWS SDK, pero al ejecutar el código com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: X), S3 Extended Request ID: Y= un error como Excepción en el hilo "main" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: X), S3 Extended Request ID: Y=

Sugiera amablemente dónde me está faltando y por qué se está produciendo el error de acceso denegado, aunque he tomado todos los siguientes permisos en el depósito:

s3:GetObject s3:GetObjectVersion s3:GetObjectAcl s3:GetBucketAcl s3:GetBucketCORS s3:GetBucketLocation s3:GetBucketLogging s3:ListBucket s3:ListBucketVersions s3:ListBucketMultipartUploads s3:GetObjectTorrent s3:GetObjectVersionAcl

El código es el siguiente:

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTP); AmazonS3 conn = new AmazonS3Client(credentials, clientConfig); conn.setEndpoint(bucketName); Bucket bucket = conn.createBucket(bucketName); ObjectListing objects = conn.listObjects(bucket.getName()); do { for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) { System.out.println(objectSummary.getKey() + "/t" + objectSummary.getSize() + "/t" + StringUtils.fromDate(objectSummary.getLastModified())); } objects = conn.listNextBatchOfObjects(objects); } while (objects.isTruncated());


El problema ahora está resuelto. Hubo los siguientes problemas con el código:

  1. El punto final no era correcto, debería haber un punto final correcto.
  2. No se le dio suficiente permiso al cubo. Se debe tomar una lista de los permisos completos antes de usar el paquete en AWS SDK.

Abajo esta el codigo correcto

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTP); AmazonS3 conn = new AmazonS3Client(credentials, clientConfig); conn.setEndpoint("correct end point"); Bucket bucket = conn.createBucket(bucketName); ObjectListing objects = conn.listObjects(bucket.getName()); do { for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) { System.out.println(objectSummary.getKey() + "/t" + objectSummary.getSize() + "/t" + StringUtils.fromDate(objectSummary.getLastModified())); } objects = conn.listNextBatchOfObjects(objects); } while (objects.isTruncated());


En la pestaña de permisos del cubo, desmarco:

  • Gestionar listas de control de acceso público (ACL) para este grupo
  • Bloquee nuevas ACL públicas y suba objetos públicos (Recomendado)

y el problema se fue.


Vaya a IAM y verifique si el usuario [Clave de acceso y clave secreta] que se está utilizando para la API tiene los privilegios para usar la API basada en S3.

Política de S3 adjunta al usuario especificado: intente con S3 Full Access ; Puedes acceder al grano una vez que esto funcione. Para obtener más información, consulte este enlace [ Gestión de políticas de IAM ]