

# Exemplos de políticas de chave de contexto de valor único
<a name="reference_policies_condition_examples-single-valued-context-keys"></a>

O conjunto de exemplos de políticas a seguir demonstra como criar condições de política com chaves de contexto de valor único.

## Exemplo: múltiplos blocos de condição com chaves de contexto de valor único
<a name="reference_policies_condition_examples-single-valued-context-keys-1"></a>

Quando um bloco de condição tem várias condições, cada uma com uma única chave de contexto, todas as chaves de contexto devem ser resolvidas como verdadeiras para o efeito desejado `Allow` ou `Deny` a ser invocado. Quando você usa operadores de condição de correspondência negados, inverte-se a lógica de avaliação do valor da condição.

O exemplo a seguir permite que os usuários criem volumes do EC2 e apliquem qualquer etiqueta aos volumes durante a criação do volume. O contexto da solicitação deve incluir um valor para a chave de contexto `aws:RequestTag/project`, e o valor da chave de contexto `aws:ResourceTag/environment` pode ser qualquer coisa, exceto produção.

------
#### [ 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"
        }
      }
    }
  ]
}
```

------

O contexto da solicitação deve incluir o par etiqueta-valor do projeto e não pode ser criado para que um recurso de produção invoque o efeito `Allow`. O volume do EC2 a seguir foi criado com êxito porque o nome do projeto é `Feature3` com uma 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}]'
```

## Exemplo: um bloco de condição com múltiplos valores e chaves de contexto de valor único
<a name="reference_policies_condition_examples-single-valued-context-keys-2"></a>

Quando um bloco de condição contém múltiplas chaves de contexto e cada chave de contexto tem múltiplos valores, cada chave de contexto deve ser resolvida como verdadeiro para pelo menos um valor de chave para o efeito desejado `Allow` ou `Deny` a ser invocado. Quando você usa operadores de condição de correspondência negados, inverte-se a lógica de avaliação do valor da chave de contexto.

Com o exemplo a seguir, os usuários podem iniciar e executar tarefas nos clusters do Amazon Elastic Container Service.
+ O contexto da solicitação deve incluir `production` **OR** `prod-backup` para a chave de contexto `aws:RequestTag/environment` **AND**.
+ A chave de contexto `ecs:cluster` garante que as tarefas sejam executadas em qualquer um dos clusters ARN `default1` **OR** `default2` do ECS.

------
#### [ 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"
          ]
        }
      }
    }
  ]
}
```

------

A tabela a seguir mostra como a AWS avalia essa política com base nos valores de chave de condição da solicitação.


| Condição da política | Contexto da solicitação | 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>  | correspondência | 
| <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>  | correspondência | 
| <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>  | Nenhuma correspondência | 
| <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>  |  Nenhum `aws:RequestTag` no contexto da solicitação. <pre>ecs:cluster<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | Nenhuma correspondência | 