La AWS SDK para Java versión 1.x entró en modo de mantenimiento el 31 de julio de 2024 y estará disponible el 31 de end-of-support
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Administración de permisos de Amazon S3 acceso para depósitos y objetos
Puede usar las listas de control de acceso (ACLs) para los Amazon S3 depósitos y los objetos para tener un control detallado de sus recursos. Amazon S3
nota
En estos ejemplos de código se parte del supuesto de que usted entiende el material de Using the AWS SDK para Java y que ha configurado AWS las credenciales predeterminadas utilizando la información de Configurar AWS credenciales y región para el desarrollo.
Obtener la lista de control de acceso de un bucket
Para obtener la ACL actual de un bucket, llame al método getBucketAcl
de AmazonS3, pasando el nombre de bucket que se desea consultar. Este método devuelve un AccessControlListobjeto. Para obtener cada concesión de acceso en la lista, llame a su método getGrantsAsList
, que devuelve una lista Java estándar de objetos Grant.
Importaciones
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.Grant;
Código
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { AccessControlList acl = s3.getBucketAcl(bucket_name); List<Grant> grants = acl.getGrantsAsList(); for (Grant grant : grants) { System.out.format(" %s: %s\n", grant.getGrantee().getIdentifier(), grant.getPermission().toString()); } } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Consulte el ejemplo completo
Establecer la lista de control de acceso de un bucket
Para añadir o modificar permisos de la ACL de un bucket, llame al método setBucketAcl
de AmazonS3. Se necesita un AccessControlListobjeto que contenga una lista de beneficiarios y niveles de acceso para configurarlo.
Importaciones
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.EmailAddressGrantee;
Código
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { // get the current ACL AccessControlList acl = s3.getBucketAcl(bucket_name); // set access for the grantee EmailAddressGrantee grantee = new EmailAddressGrantee(email); Permission permission = Permission.valueOf(access); acl.grantPermission(grantee, permission); s3.setBucketAcl(bucket_name, acl); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
nota
Puedes proporcionar el identificador único del concesionario directamente con la clase Grantee, o usar la EmailAddressGranteeclase para establecer el nombre del concesionario por correo electrónico, como hemos hecho aquí.
Consulta el ejemplo completo en.
Obtener la lista de control de acceso de un objeto
Para obtener la ACL actual de un objeto, llame al método getObjectAcl
de AmazonS3, pasando el nombre de bucket y el nombre de objeto que se desea consultar. Por ejemplogetBucketAcl
, este método devuelve un AccessControlListobjeto que puedes usar para examinar cada beca.
Importaciones
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.Grant;
Código
try { AccessControlList acl = s3.getObjectAcl(bucket_name, object_key); List<Grant> grants = acl.getGrantsAsList(); for (Grant grant : grants) { System.out.format(" %s: %s\n", grant.getGrantee().getIdentifier(), grant.getPermission().toString()); } } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Consulte el ejemplo completo
Establecer la lista de control de acceso de un objeto
Para añadir o modificar permisos para la ACL de un objeto, llame al método setObjectAcl
de AmazonS3. Se necesita un AccessControlListobjeto que contenga una lista de beneficiarios y niveles de acceso para configurarlo.
Importaciones
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.EmailAddressGrantee;
Código
try { // get the current ACL AccessControlList acl = s3.getObjectAcl(bucket_name, object_key); // set access for the grantee EmailAddressGrantee grantee = new EmailAddressGrantee(email); Permission permission = Permission.valueOf(access); acl.grantPermission(grantee, permission); s3.setObjectAcl(bucket_name, object_key, acl); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } }
nota
Puedes proporcionar el identificador único del concesionario directamente con la clase Grantee, o usar la EmailAddressGranteeclase para establecer el nombre del concesionario por correo electrónico, como hemos hecho aquí.
Consulta el ejemplo completo en.
Más información
-
OBTENGA Bucket acl en la referencia de la Amazon S3 API
-
PON Bucket acl en la referencia Amazon S3 de la API
-
GET Object acl en la referencia de la Amazon S3 API
-
PON Object acl en la referencia Amazon S3 de la API