Regras de restrições de modelo - AWS Service Catalog

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á.

Regras de restrições de modelo

As regras que definem restrições de modelo em um portfólio do AWS Service Catalog descrevem quando os usuários finais podem usar o modelo e os valores que eles podem especificar como parâmetros que são declarados no modelo do AWS CloudFormation 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 usaram tipos de instância m1.small para ambientes de teste. O AWS CloudFormation usa regras para validar valores de 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. Dessa forma, quando um usuário especificar uma VPC, o AWS CloudFormation avaliará a declaração para verificar se o valor do parâmetro de sub-rede está na VPC antes de criar ou atualizar a pilha. Se o valor do parâmetro for inválido, o AWS CloudFormation não criará ou atualizará a pilha. Se os usuários não especificarem uma VPC, o AWS CloudFormation não verificará o valor do parâmetro de sub-rede.

Sintaxe

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 daAWS no Guia do usuário AWS CloudFormation.

Exemplo: verificar um valor de parâmetro condicionalmente

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" } ] } }