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.
Cambios en la API del creador de políticas de IAM de la versión 1 a la 2
En este tema se detallan los cambios en la API del creador de políticas de IAM de la versión 1 (v1) a la versión 2 (v2).
Cambios de alto nivel
| Cambio | v1 | v2 |
|---|---|---|
|
dependencias Maven |
|
|
| Package name | com.amazonaws.auth.policy |
software.amazon.awssdk.policybuilder.iam |
| Nombres de clase |
1 Última versión
Cambios en la API
| Ajuste | v1 | v2 |
|---|---|---|
Crear una instancia de una política |
|
|
|
Establecer ID |
|
|
|
Establecer versión |
N/A: usa la versión predeterminada de 2012-10-17 |
|
|
Crear instrucción |
|
|
|
Establecer instrucción |
|
|
Diferencias en la creación de una instrucción
Acciones
v1
El SDK v1 tiene tipos de enum para acciones de servicio que representan elementos de Action de una instrucción de política. A continuación, se muestran ejemplos de tipos de enum.
En el siguiente ejemplo se muestra la constante de SendMessage para SQSActions.
Action action = SQSActions.SendMessage;
No puede especificar un elemento NotAction en una instrucción en v1.
v2
En v2, la interfaz IamActioncreate, como se muestra en el código siguiente.
IamAction action = IamAction.create("sqs:SendMessage");
Puede especificar un NotAction para una instrucción con v2 tal como se muestra en el siguiente código.
IamAction action = IamAction.create("sqs:SendMessage"); IamStatement.builder().addNotAction(action);
Condiciones
v1
Para representar las condiciones la instrucción, el SDK v1 usa subclases de Condition.
Cada subclase Condition define un tipo de comparación enum para ayudar a definir la condición. Por ejemplo, a continuación se muestra una cadena de comparación no como para una condición.
Condition condition = new StringCondition(StringComparisonType.StringNotLike, "key", "value");
v2
En v2 se crea una condición para una instrucción de política utilizando IamCondition y proporcionando un IamConditionOperator, que contiene enums para todos los tipos.
IamCondition condition = IamCondition.create(IamConditionOperator.STRING_NOT_LIKE, "key", "value");
Recursos
v1
El elemento Resource de una instrucción de política se representa mediante la clase Resource del SDK. El ARN se proporciona como cadena en el constructor. Las siguientes subclases proporcionan constructores de conveniencia.
En v1 puede especificar un elemento NotResource para un Resource llamando al método withIsNotType, como se muestra en la siguiente instrucción.
Resource resource = new Resource("arn:aws:s3:::amzn-s3-demo-bucket").withIsNotType(true);
v2
En v2 se crea un elemento Resource pasando un ARN al método IamResource.create.
IamResource resource = IamResource.create("arn:aws:s3:::amzn-s3-demo-bucket");
Se puede establecer un IamResource como elemento NotResource, como se muestra en el siguiente fragmento de código.
IamResource resource = IamResource.create("arn:aws:s3:::amzn-s3-demo-bucket"); IamStatement.builder().addNotResource(resource);
IamResource.ALL representa todos los recursos.
Entidades principales
v1
El SDK v1 ofrece las siguientes clases Principal para representar los tipos de entidades principales que incluyen a todos los miembros:
-
AllUsers -
AllServices -
AllWebProviders -
All
No se puede añadir un elemento NotPrincipal a una instrucción.
v2
En v2, IamPrincipal.ALL representa todas las entidades principales:
Para representar a todos los miembros de otros tipos de entidades principales, utilice las clases IamPrincipalType al crear un IamPrincipal.
-
IamPrincipal.create(IamPrincipalType.AWS,"*")para todos los usuarios. -
IamPrincipal.create(IamPrincipalType.SERVICE,"*")para todos los servicios. -
IamPrincipal.create(IamPrincipalType.FEDERATED,"*")para todos los proveedores web. -
IamPrincipal.create(IamPrincipalType.CANONICAL_USER,"*")para todos los usuarios canónicos.
Puede utilizar el método addNotPrincipal para representar un elemento NotPrincipal al crear una instrucción de política, como se muestra en la siguiente instrucción.
IamPrincipal principal = IamPrincipal.create(IamPrincipalType.AWS, "arn:aws:iam::444455556666:root"); IamStatement.builder().addNotPrincipal(principal);