

# Ejemplos de políticas de claves de contexto con un solo valor
<a name="reference_policies_condition_examples-single-valued-context-keys"></a>

El siguiente conjunto de ejemplos de políticas muestra cómo crear condiciones de políticas con claves de contexto de valor único.

## Ejemplo: varios bloques de condiciones con claves de contexto de un solo valor
<a name="reference_policies_condition_examples-single-valued-context-keys-1"></a>

Cuando un bloque de condiciones tiene varias condiciones, cada una con una única clave de contexto, todas las claves de contexto deben resolverse como verdaderas para que se invoque el efecto `Allow` o `Deny` deseado. Cuando se utilizan operadores de condición con coincidencia negada, la lógica de evaluación del valor de la condición se invierte.

El siguiente ejemplo permite a los usuarios crear volúmenes de EC2 y aplicar etiquetas a los volúmenes durante la creación de estos. El contexto de la solicitud debe incluir un valor para la clave de contexto `aws:RequestTag/project`, y el valor de la clave de contexto `aws:ResourceTag/environment` puede ser cualquiera excepto el de producción.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/project": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

El contexto de la solicitud debe incluir un valor de etiqueta del proyecto y no se puede crear para que un recurso de producción invoque el efecto `Allow`. El siguiente volumen de EC2 se creó correctamente porque el nombre del proyecto es `Feature3` con una etiqueta de recurso `QA`.

```
aws ec2 create-volume \
    --availability-zone us-east-1a \
    --volume-type gp2 \
    --size 80 \
    --tag-specifications 'ResourceType=volume,Tags=[{Key=project,Value=Feature3},{Key=environment,Value=QA}]'
```

## Ejemplo: un bloque de condiciones con varias claves de contexto de un solo valor y varios valores
<a name="reference_policies_condition_examples-single-valued-context-keys-2"></a>

Cuando un bloque de condiciones contiene varias claves de contexto y cada clave de contexto tiene varios valores, cada clave de contexto debe resolverse como verdadera para que se invoque al menos un valor de clave para el efecto `Allow` o `Deny` deseado. Cuando se utilizan operadores de condición con coincidencia negada, la lógica de evaluación del valor de la clave de contexto se invierte.

El siguiente ejemplo permite a los usuarios iniciar y ejecutar tareas en los clústeres de Amazon Elastic Container Service.
+ El contexto de la solicitud debe incluir `production` **O** `prod-backup` para la clave de contexto `aws:RequestTag/environment` **AND**.
+ La clave de contexto `ecs:cluster` asegura que las tareas se ejecuten en cualquiera de los clústeres de ECS con ARN `default1` **O** `default2`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:RunTask",
        "ecs:StartTask"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/environment": [
            "production",
            "prod-backup"
          ]
        },
        "ArnEquals": {
          "ecs:cluster": [
            "arn:aws:ecs:us-east-1:111122223333:cluster/default1",
            "arn:aws:ecs:us-east-1:111122223333:cluster/default2"
          ]
        }
      }
    }
  ]
}
```

------

La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default1</pre>  | Match | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:prod-backup<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | Match | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: webserver:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | No match | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  |  No hay `aws:RequestTag` en el contexto de la solicitud. <pre>ecs:cluster<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | No match | 