

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando AWS Service Catalog restrições
<a name="constraints"></a>

Você aplica restrições para controlar as regras que serão aplicadas a um produto em um portfólio específico quando os usuários finais o iniciarem. Quando os usuários finais iniciarem o produto, verão as regras aplicadas usando as restrições. Você pode aplicar restrições a um produto após ele ser inserido em um portfólio. As restrições são ativadas logo após sua criação e são aplicadas a todas as versões atuais de um produto que ainda não foram lançadas.

**Topics**
+ [Restrições de lançamento](constraints-launch.md)
+ [Restrições de notificação](constraints-notification.md)
+ [Restrições de atualização de tags](constraints-resourceupdate.md)
+ [Restrições do conjunto de pilhas](constraints-stackset.md)
+ [Restrições de modelo](catalogs_constraints_template-constraints.md)

# AWS Service Catalog Restrições de lançamento
<a name="constraints-launch"></a>

Uma restrição de lançamento especifica a função AWS Identity and Access Management (IAM) que AWS Service Catalog assume quando um usuário final lança, atualiza ou encerra um produto. Uma função do IAM é uma coleção de permissões que um usuário ou AWS serviço pode assumir temporariamente para usar AWS os serviços. Como exemplo de apresentação, consulte:
+ CloudFormation tipo de produto: [Etapa 6: Adicionar uma restrição de lançamento para atribuir um perfil do IAM](getstarted-launchconstraint.md)
+ Tipo de produto Terraform Open Source ou Terraform Cloud: [Etapa 5: Criar funções de lançamento](getstarted-launchrole-Terraform.md)

As restrições de lançamento se aplicam aos produtos do portfólio (associação produto-portfólio). As restrições de lançamento não se aplicam ao nível do portfólio ou a um produto em todos os portfólios. Para associar uma restrição de lançamento a todos os produtos em um portfólio, aplique a restrição de lançamento a cada produto individualmente.

Sem uma restrição de lançamento, os usuários finais devem lançar e gerenciar produtos usando suas próprias credenciais do IAM. Para fazer isso, eles devem ter permissões para CloudFormation, AWS serviços que os produtos usam AWS Service Catalog e. Ao usar um perfil de lançamento, você pode limitar as permissões dos usuários finais ao mínimo de que eles precisam para esse produto. Para obter mais informações sobre as permissões dos usuários finais, consulte [Identity and Access Management em AWS Service Catalog](controlling_access.md).

Para criar e atribuir perfis do IAM, você deve ter as seguintes permissões administrativas do IAM:
+ `iam:CreateRole`
+ `iam:PutRolePolicy`
+ `iam:PassRole`
+ `iam:Get*`
+ `iam:List*`

## Configuração de uma função de lançamento
<a name="constraints-launch-role"></a>

O perfil do IAM que você atribui a um produto como restrição de lançamento deve ter permissões para usar o seguinte:

**Para produtos Cloudformation**
+ A política gerenciada `arn:aws:iam::aws:policy/AWSCloudFormationFullAccess` CloudFormation .
+ Serviços no AWS CloudFormation modelo do produto
+ Leia o acesso ao AWS CloudFormation modelo em um bucket Amazon S3 de propriedade do serviço. 

**Para produtos Terraform**
+ Os serviços usados no modelo do Amazon S3 para o produto
+ Leia o acesso ao modelo Amazon S3 em um bucket do Amazon S3 de propriedade do serviço. 
+ `resource-groups:Tag` para marcação em uma instância do Amazon EC2 (assumida pelo mecanismo de provisionamento do Terraform ao realizar operações de provisionamento)
+ `resource-groups:CreateGroup`para marcação de grupos de recursos (assumida por AWS Service Catalog criar grupos de recursos e atribuir tags) 

A política de confiança da função do IAM deve AWS Service Catalog permitir que você assuma a função. No procedimento abaixo, a política de confiança será definida automaticamente quando você selecionar AWS Service Catalog como tipo de função. Se você não estiver usando o console, consulte a seção *Criação de políticas de confiança para AWS serviços que assumem funções* em [Como usar políticas de confiança com funções do IAM](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/). 

**nota**  
As permissões `servicecatalog:ProvisionProduct`, `servicecatalog:TerminateProvisionedProduct` e `servicecatalog:UpdateProvisionedProduct` não podem ser atribuídas na função de lançamento. Você deve usar perfis do IAM, como mostrado nas etapas da política em linha na seção [Ceder permissões para Usuários finais do AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-iamenduser.html).

**nota**  
Para visualizar os produtos e recursos provisionados do Cloudformation no AWS Service Catalog console, os usuários finais precisam de acesso de leitura. CloudFormation A visualização de produtos e recursos provisionados no console **não** usa o perfil de lançamento.

**Para criar uma função de lançamento**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   Os produtos Terraform exigem configurações adicionais de perfil de lançamento. Para obter mais informações, consulte a [Etapa 5: Criar perfis de lançamento](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-launchrole-Terraform) em *Conceitos básicos de um produto Terraform Open Source*. 

1. Escolha **Perfis**.

1. Escolha **Criar nova função**.

1. Insira um nome de função e escolha **Next Step**.

1. Em **Perfis de serviço da AWS ** próximo a **AWS Service Catalog**, escolha **Selecionar**.

1. Na página **Attach Policy (Anexar política)**, escolha **Next Step (Próxima etapa)**.

1. Para criar a função, escolha **Create Role (Criar função)**. 

**Para anexar uma política à nova função**

1. Escolha a função que você criou para visualizar a página de detalhes da função.

1. Escolha a guia **Permissions (Permissões)** e expanda a seção **Inline Policies**. Em seguida, escolha **click here (clique aqui)**.

1. Escolha **Custom Policy** e depois **Select**. 

1. Insira um nome para a política, depois cole o seguinte no editor **Policy Document (Documento da política)**: 

   ```
     
             "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:GetObject"
            ],
            "Resource":"*",
            "Condition":{
               "StringEquals":{
                  "s3:ExistingObjectTag/servicecatalog:provisioning":"true"
               }
            }
      ]
   }
   ```
**nota**  
Ao configurar um perfil de lançamento para uma restrição de lançamento, você deve usar esta string: `"s3:ExistingObjectTag/servicecatalog:provisioning":"true"`. 

1. Adicione uma linha à política para cada serviço adicional que o produto usa. Por exemplo, para adicionar a permissão para o Amazon Relational Database Service (Amazon RDS), digite uma vírgula no final da última linha, na lista `Action` e adicione a seguinte linha: 

   ```
   "rds:*"
   ```

1. Selecione **Aplicar política**.

## Aplicação de uma restrição de lançamento
<a name="constraints-launch-constraint"></a>

Depois de configurar o perfil de lançamento, atribua o perfil ao produto como uma restrição de lançamento. Essa ação diz AWS Service Catalog para assumir a função quando um usuário final lança o produto. 

**Para atribuir a função a um produto**

1. Abra o console do Service Catalog em [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/).

1. Escolha o portfólio que contenha o produto.

1. Escolha a guia **Constraints (Restrições)** e **Create constraint (Criar restrição)**.

1. Escolha o produto em **Product (Produto)** e selecione **Launch (Iniciar)** em **Constraint type (Tipo de restrição)**. Escolha **Continuar**.

1. Na seção **Restrição de lançamento**, é possível selecionar um perfil do IAM em sua conta, inserir um ARN de perfil do IAM ou inserir o nome do perfil.

   Se você especificar o nome do perfil, quando uma conta usar a restrição de lançamento, é esse perfil do IAM que a conta usará. Essa abordagem permite que as restrições de perfil de lançamento sejam independentes da conta para que seja possível criar menos recursos por conta compartilhada. 
**nota**  
O nome do perfil fornecido deve existir na conta que criou a restrição de lançamento e a conta do usuário que executa um produto com essa restrição de lançamento. 

1. Depois de especificar a função do IAM, escolha **Create (Criar)**.

## Adicionar Confused Deputy à restrição de lançamento
<a name="constraint-confused-deputy"></a>

AWS Service Catalog suporta a proteção [Confused Deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) para aqueles APIs que são executados com uma solicitação Assume Role. Ao adicionar uma restrição de lançamento, você pode restringir o acesso ao perfil de lançamento usando as condições `sourceAccount` e `sourceArn` da política de confiança do perfil de lançamento. Isso garante que o perfil de lançamento seja chamado por uma fonte confiável.

No exemplo a seguir, o AWS Service Catalog usuário final pertence à conta 111111111111. Quando o administrador AWS Service Catalog cria um `LaunchConstraint` para um produto, o usuário final pode especificar as seguintes condições na política de confiança do perfil de lançamento para restringir Assumir Perfil à conta 111111111111.

```
"Condition":{
   "ArnLike":{
      "aws:SourceArn":"arn:aws:servicecatalog:us-east-1:111111111111:*"
   },
   "StringEquals":{
      "aws:SourceAccount":"111111111111"
   }
  
}
```

Um usuário que provisiona um produto com o `LaunchConstraint` deve ter o mesmo `AccountId` (111111111111). Caso contrário, a operação falhará com um erro `AccessDenied`, impedindo o uso indevido do perfil de lançamento.

Os itens a seguir AWS Service Catalog APIs estão protegidos para a proteção do Confused Deputy:
+ `LaunchConstraint`
+ `ProvisionProduct`
+ `UpdateProvisionedProduct`
+ `TerminateProvisionedProduct`
+ `ExecuteProvisionedProductServiceAction`
+ `CreateProvisionedProductPlan`
+ `ExecuteProvisionedProductPlan`

A `sourceArn ` proteção AWS Service Catalog somente suporta modelos ARNs, como "`arn:<aws-partition>:servicecatalog:<region>:<accountId>:`" Ela não oferece suporte a recursos ARNs específicos.

## Verificar a restrição de lançamento
<a name="constraints-launch-test"></a>

Para verificar se AWS Service Catalog usa a função para lançar o produto e provisionar o produto com sucesso, inicie o produto a partir do AWS Service Catalog console. Para testar uma restrição antes de liberá-lo aos usuários, crie um portfólio de teste que contenha os mesmos produtos e teste as restrições com esse portfólio.

**Para iniciar um produto**

1. No menu do AWS Service Catalog console, escolha **Service Catalog**, **End user**.

1. Escolha o produto para abrir a página **Detalhes do produto**. Na tabela **Opções de lançamento**, verifique se o nome do recurso da Amazon (ARN) do perfil é exibido.

1. Escolha **Lançar produto**.

1. Siga as etapas de lançamento, preenchendo todas as informações necessárias.

1. Verifique se o produto inicia corretamente.

# AWS Service Catalog Restrições de notificação
<a name="constraints-notification"></a>

**nota**  
AWS Service Catalog não suporta restrições de notificação para produtos Terraform Open Source ou Terraform Cloud. 

A restrição de notificação especifica um tópico do Amazon SNS para receber notificações sobre eventos de pilha. 

Use o procedimento a seguir para criar um tópico do SNS e inscreva-se nele.

**Para criar um tópico do SNS e uma inscrição**

1. [Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/ v3/home.](https://console.aws.amazon.com/sns/v3/home)

1. Escolha **Criar tópico**.

1. Digite o nome de um tópico e escolha **Create topic (Criar tópico)**.

1. Selecione **Criar assinatura**.

1. Em **Protocol (Protocolo)**, selecione **Email**. Em **Endpoint**, digite um endereço de e-mail que você pode usar para receber as notificações. Selecione **Create subscription**.

1. Você receberá um e-mail de confirmação com a linha de assunto `AWS Notification - Subscription Confirmation`. Abra o e-mail e siga as instruções para concluir a sua assinatura.

Use o procedimento a seguir para aplicar uma restrição de notificação usando o tópico do SNS que você criou usando o procedimento anterior.

**Para aplicar uma restrição de notificação a um produto**

1. Abra o console do Service Catalog em [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/).

1. Escolha o portfólio que contenha o produto.

1. Expanda **Constraints (Restrições)** e escolha **Add constraints (Adicionar restrições)**.

1. Escolha o produto em **Produto** e defina **Tipo de restrição** como **Notificação**. Escolha **Continuar**.

1. Escolha **Choose a topic from your account (Escolher um tópico da sua conta)** e selecione o tópico do SNS que você criou em **Topic Name (Nome do tópico)**.

1. Selecione **Enviar**.

# AWS Service Catalog Restrições de atualização de tags
<a name="constraints-resourceupdate"></a>

**nota**  
AWS Service Catalog não suporta restrições de atualização de tags para produtos Terraform Open Source.

Com as restrições de atualização de tags, os AWS Service Catalog administradores podem permitir ou proibir que os usuários finais atualizem tags em recursos associados a um produto provisionado. Se a atualização de tags for permitida, as novas tags associadas ao produto ou portfólio serão aplicadas aos recursos provisionados durante uma atualização de produto provisionado. 

**Para habilitar as atualizações de tags a um produto**

1. Abra o console do Service Catalog em [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/).

1. Escolha o portfólio que contém o produto que deseja atualizar.

1. Escolha a guia **Restrições** e **Adicionar restrições**.

1. Em **Constraint type (Tipo de restrição)** e selecione **Tag Update (Atualização de tag)**.

1. Escolha o produto em **Product (Produto)** e selecione **Continue (Continuar)**.

1. Na **Tag Updates page (Página de atualizações de tag)**, selecione **Enable Tag Updates (Habilitar atualizações de tag)**.

1. Selecione **Enviar**.

# AWS Service Catalog Restrições do conjunto de pilhas
<a name="constraints-stackset"></a>

**nota**  
AWS Service Catalog não suporta restrições de conjunto de pilhas para produtos Terraform Open Source.
AutoTags atualmente não são compatíveis com CloudFormation StackSets. 

Uma restrição de conjunto de pilhas permite que você configure as opções de implantação do produto usando o. CloudFormation StackSets Você pode especificar várias contas e regiões para o lançamento do produto. Os usuários finais podem gerenciar essas contas e determinar onde os produtos são implantados e a ordem de implantação.

**Para aplicar uma restrição do conjunto de pilhas a um produto**

1. Abra o console do Service Catalog em [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/).

1. Escolha o portfólio com o produto que você deseja.

1. Escolha a guia **Restrições** e **Criar restrições**.

1. Em **Produto**, escolha o produto. Em **Tipo de restrição**, escolha **Conjunto de pilhas**. 

1. Configure as contas, regiões e permissões para as restrições do seu conjunto de pilhas.
   + Nas **Configurações da conta**, identifique as contas nas quais você deseja criar produtos.
   + Nas **Configurações de região**, escolha as regiões geográficas para implantar produtos e a ordem em que você deseja que esses produtos sejam implantados nessas regiões.
   + Em **Permissões**, escolha uma função de StackSet administrador do IAM para gerenciar suas contas de destino. Se você não escolher uma função, StackSets usa o ARN padrão. [Saiba mais sobre a configuração de permissões do conjunto de pilhas.](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html)

1. Escolha **Criar**.

# AWS Service Catalog Restrições do modelo
<a name="catalogs_constraints_template-constraints"></a>

**nota**  
AWS Service Catalog não oferece suporte a restrições de modelo para produtos Terraform Open Source ou Terraform Cloud. 

Para limitar as opções disponíveis para os usuários finais quando lançam um produto, você aplica restrições de modelo. Aplique restrições de modelo para garantir que os usuários finais possam usar produtos sem violar os requisitos de conformidade da sua organização. Você aplica restrições de modelo a um produto em um AWS Service Catalog portfólio. Um portfólio deve conter um ou mais produtos para que você possa definir restrições de modelo.

Uma restrição de modelo consiste em uma ou mais regras que restringem os valores permitidos para parâmetros definidos no modelo subjacente CloudFormation do produto. Os parâmetros em um modelo do CloudFormation definem o conjunto de valores que os usuários podem especificar ao criar uma pilha. Por exemplo, um parâmetro pode definir os vários tipos de instância que os usuários podem escolher ao iniciar uma pilha que inclui EC2 instâncias.

Se os valores do conjunto de parâmetros em um modelo forem muito amplos para o público-alvo de seu portfólio, você poderá definir restrições de modelo para limitar os valores que os usuários podem escolher ao lançar um produto. Por exemplo, se os parâmetros do modelo incluírem tipos de EC2 instância muito grandes para usuários que devem usar somente tipos de instância pequenos (como `t2.micro` ou`t2.small`), você poderá adicionar uma restrição de modelo para limitar os tipos de instância que os usuários finais podem escolher. Para obter mais informações sobre os parâmetros do CloudFormation modelo, consulte [Parâmetros](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html) no *Guia CloudFormation do usuário*.

As restrições de modelo estão vinculadas em um portfólio. Se você aplicar restrições de modelo a um produto em um portfólio e incluir o produto em outro portfólio, as restrições não se aplicarão ao produto no segundo portfólio.

Se você aplicar uma restrição de modelo a um produto que já foi compartilhado com usuários, a restrição ficará ativa imediatamente para todos os lançamentos de produtos subsequentes e para todas as versões do produto no portfólio.

Você define as regras de restrição do modelo usando um editor de regras ou escrevendo as regras como texto JSON no console do AWS Service Catalog administrador. Para obter mais informações sobre regras, incluindo sintaxe e exemplos, consulte [Regras de restrições de modelo](reference-template_constraint_rules.md).

Para testar uma restrição antes de liberá-lo aos usuários, crie um portfólio de teste que contenha os mesmos produtos e teste as restrições com esse portfólio.

**Para aplicar restrições de modelo a um produto**

1. Abra o console do Service Catalog em [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/).

1. Na página **Portfólios**, escolha o portfólio que contém o produto ao qual você deseja aplicar uma restrição de modelo. 

1. Expanda a seção **Restrições** e escolha **Adicionar restrições**.

1. Na janela **Selecionar produto e tipo**, para **Produto** escolha o produto para o qual você deseja definir as restrições de modelo. Em seguida, para **Tipo de restrição**, escolha **Modelo**. Escolha **Continuar**.

1. Na página **Criador de restrição de modelo**, edite as regras de restrição usando o editor JSON ou a interface do criador de regras.
   + Para editar o código JSON da regra, escolha a guia **Editor de texto da restrição**. Nessa guia, são fornecidos vários exemplos para ajudá-lo a começar.

     Para criar as regras usando a interface de um construtor de regras, escolha a guia **Criador de regra**. Nessa guia, você pode escolher qualquer parâmetro especificado no modelo para o produto, e pode especificar os valores permitidos para esse parâmetro. Dependendo do tipo de parâmetro, você especificará os valores permitidos escolhendo itens em uma lista de verificação, especificando um número ou especificando um conjunto de valores em uma lista separada por vírgulas.

     Quando acabar de reorganizar as regras, escolha **Adicionar regra**. A regra aparecerá na tabela na guia **Criador de regra**. Para revisar e editar a saída do JSON, escolha a guia **Editor de texto de restrição**.

1. Quando concluir a edição das regras de sua restrição, escolha **Enviar**. Para ver a restrição, vá para a página de detalhes do portfólio e expanda **Restrições**.

# Regras de restrições de modelo
<a name="reference-template_constraint_rules"></a>

As regras que definem as restrições do modelo em um AWS Service Catalog portfólio descrevem quando os usuários finais podem usar o modelo e quais valores eles podem especificar para os parâmetros declarados no CloudFormation modelo usado para criar o produto que estão tentando usar. As regras são úteis para evitar que os usuários finais especifiquem inadvertidamente um valor incorreto. Por exemplo, você pode adicionar uma regra para verificar se os usuários finais especificaram uma sub-rede válida em uma determinada VPC ou `m1.small` usaram tipos de instância para ambientes de teste. CloudFormation usa regras para validar os valores dos parâmetros antes de criar os recursos para o produto.

Cada regra consiste em duas propriedades: uma condição de regra (opcional) e declarações (obrigatório). A condição da regra determina quando uma regra entra em vigor. As declarações descrevem os valores que os usuários podem especificar para um determinado parâmetro. Se você não definir uma condição de regra, as declarações da regra sempre entram em vigor. Para definir uma condição e declarações de regra, você usa *funções intrínsecas específicas à regra*, que são funções que podem ser usadas apenas na seção `Rules` de um modelo. Você pode aninhar funções, mas o resultado final de uma condição de regra ou declaração deve ser verdadeiro ou falso.

Como exemplo, suponha que você declarou um parâmetro de VPC e de sub-rede na seção `Parameters`. Você pode criar uma regra que valide que uma determinada sub-rede está em uma determinada VPC. Portanto, quando um usuário especifica uma VPC CloudFormation , avalia a afirmação para verificar se o valor do parâmetro da sub-rede está nessa VPC antes de criar ou atualizar a pilha. Se o valor do parâmetro for inválido, falhe CloudFormation imediatamente na criação ou atualização da pilha. Se os usuários não especificarem uma VPC, CloudFormation não verificará o valor do parâmetro da sub-rede.

## Sintaxe
<a name="template-constraint-rules-syntax"></a>

A seção `Rules` de um modelo consiste no nome da chave `Rules`, seguido por dois-pontos. As chaves incluem todas as declarações da regra. Se você declarar várias regras, elas serão separadas por vírgulas. Para cada regra, você declara um nome lógico entre aspas seguido por uma vírgula e chaves que incluem a condição da regra e as declarações.

Uma regra pode incluir uma propriedade `RuleCondition` e deve incluir uma propriedade `Assertions`. Para cada regra, você pode definir apenas uma condição de regra. Você pode definir uma ou mais declarações, dentro da propriedade `Assertions`. Você define uma condição e declarações de regra usando funções intrínsecas específicas, conforme mostrado no seguinte pseudomodelo:

```
"Rules":{
   "Rule01":{
      "RuleCondition":{
         "Rule-specific intrinsic function"
      },
      "Assertions":[
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         },
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         }
      ]
   },
   "Rule02":{
      "Assertions":[
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         }
      ]
   }
}
```

O pseudomodelo mostra uma seção `Rules` que contém duas regras chamadas `Rule01` e `Rule02`. A `Rule01` inclui uma condição de regra e duas declarações. Se a função na condição da regra for verdadeira, as duas funções em cada declaração serão avaliadas e aplicadas. Se a condição da regra for falsa, a regra não entrará em vigor. A `Rule02` sempre entra em vigor porque não é uma condição de regra, o que significa que a declaração é sempre avaliada e aplicada.

Para obter informações sobre funções intrínsecas específicas de regra para definir condições de regra e declarações, consulte [Funções de regra da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-rules.html) no *Guia do usuário AWS CloudFormation *.

## Exemplo: verificar um valor de parâmetro condicionalmente
<a name="template-constraint-rules-example"></a>

As duas regras a seguir verificam o valor do parâmetro `InstanceType`. Dependendo do valor do parâmetro Environment (`test` ou `prod`), o usuário deve especificar `m1.small` ou `m1.large` para o parâmetro `InstanceType`. Os parâmetros `InstanceType` e `Environment` já devem estar declarados na seção `Parameters` do mesmo modelo.

```
"Rules" : {
  "testInstanceType" : {
    "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "test"]},
    "Assertions" : [
      {
        "Assert" :  { "Fn::Contains" : [ ["m1.small"], {"Ref" : "InstanceType"} ] },
        "AssertDescription" : "For the test environment, the instance type must be m1.small"
      }
    ]
  },
  "prodInstanceType" : {
    "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "prod"]},
    "Assertions" : [
      {
        "Assert" :  { "Fn::Contains" : [ ["m1.large"], {"Ref" : "InstanceType"} ] },
        "AssertDescription" : "For the prod environment, the instance type must be m1.large"
      }
    ]
  }
}
```