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á.
Filtros de parâmetros para arquivos CloudFormation IaC
Ao fazer referências a AWS Proton parâmetros em seus arquivos AWS CloudFormation IaC, você pode usar modificadores Jinja conhecidos como filtros para validar, filtrar e formatar valores de parâmetros antes de serem inseridos no modelo renderizado. As validações de filtro são particularmente úteis quando se referem aos parâmetros de saída do componente, porque a criação e a anexação do componente são feitas pelos desenvolvedores, e um administrador que usa as saídas do componente em um modelo de instância de serviço pode querer verificar sua existência e validade. No entanto, você pode usar filtros em qualquer arquivo do Jinja IaC.
As seções a seguir descrevem e definem os filtros de parâmetros disponíveis e fornecem exemplos. AWS Proton define a maioria desses filtros. O filtro default
é um filtro Jinja embutido.
Propriedades do ambiente de formato para tarefas do Amazon ECS
Declaração
dict → proton_cfn_ecs_task_definition_formatted_env_vars (raw: boolean = True) → YAML list of dicts
Descrição
Esse filtro formata uma lista de saídas a serem usadas em uma propriedade de ambiente na seção ContainerDefinition
de definição de tarefa do Amazon Elastic Container Service (Amazon ECS).
Defina raw
como False
para também validar o valor do parâmetro. Nesse caso, o valor é necessário para corresponder à expressão regular ^[a-zA-Z0-9_-]*$
. Se o valor falhar nessa validação, a renderização do modelo falhará.
Com o seguinte modelo de componente personalizado:
Resources:
# ...
Outputs:
Output1:
Description: "Example component output 1"
Value: hello
Output2:
Description: "Example component output 2"
Value: world
E o seguinte modelo de serviço:
Resources:
TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
# ...
ContainerDefinitions:
- Name: MyServiceName
# ...
Environment:
{{ service_instance.components.default.outputs
| proton_cfn_ecs_task_definition_formatted_env_vars }}
O modelo de serviço renderizado é o seguinte:
Resources:
TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
# ...
ContainerDefinitions:
- Name: MyServiceName
# ...
Environment:
- Name: Output1
Value: hello
- Name: Output2
Value: world
Formatar propriedades do ambiente para funções do Lambda
Declaração
dict → proton_cfn_lambda_function_formatted_env_vars (raw: boolean = True) → YAML dict
Descrição
Esse filtro formata uma lista de saídas a serem usadas em uma propriedade Environment na Properties
seção de uma definição de AWS Lambda função.
Defina raw
como False
para também validar o valor do parâmetro. Nesse caso, o valor é necessário para corresponder à expressão regular ^[a-zA-Z0-9_-]*$
. Se o valor falhar nessa validação, a renderização do modelo falhará.
Com o seguinte modelo de componente personalizado:
Resources:
# ...
Outputs:
Output1:
Description: "Example component output 1"
Value: hello
Output2:
Description: "Example component output 2"
Value: world
E o seguinte modelo de serviço:
Resources:
Lambda:
Type: AWS::Lambda::Function
Properties:
Environment:
Variables:
{{ service_instance.components.default.outputs
| proton_cfn_lambda_function_formatted_env_vars }}
O modelo de serviço renderizado é o seguinte:
Resources:
Lambda:
Type: AWS::Lambda::Function
Properties:
Environment:
Variables:
Output1: hello
Output2: world
Extrair ARNs da política do IAM para incluir os perfis do IAM
Declaração
dict → proton_cfn_iam_policy_arns → YAML list
Descrição
Esse filtro formata uma lista de saídas a serem usadas em uma ManagedPolicyArns propriedade na Properties
seção de uma definição de função AWS Identity and Access Management (IAM). O filtro usa a expressão regular ^arn:[a-zA-Z-]+:iam::\d{12}:policy/
para extrair ARNs válidos da política do IAM da lista de parâmetros de saída. Você pode usar esse filtro para acrescentar políticas nos valores dos parâmetros de saída a uma definição de perfil do IAM em um modelo de serviço.
Com o seguinte modelo de componente personalizado:
Resources:
# ...
ExamplePolicy1:
Type: AWS::IAM::ManagedPolicy
Properties:
# ...
ExamplePolicy2:
Type: AWS::IAM::ManagedPolicy
Properties:
# ...
# ...
Outputs:
Output1:
Description: "Example component output 1"
Value: hello
Output2:
Description: "Example component output 2"
Value: world
PolicyArn1:
Description: "ARN of policy 1"
Value: !Ref ExamplePolicy1
PolicyArn2:
Description: "ARN of policy 2"
Value: !Ref ExamplePolicy2
E o seguinte modelo de serviço:
Resources:
# ...
TaskRole:
Type: AWS::IAM::Role
Properties:
# ...
ManagedPolicyArns:
- !Ref BaseTaskRoleManagedPolicy
{{ service_instance.components.default.outputs
| proton_cfn_iam_policy_arns }}
# Basic permissions for the task
BaseTaskRoleManagedPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
# ...
O modelo de serviço renderizado é o seguinte:
Resources:
# ...
TaskRole:
Type: AWS::IAM::Role
Properties:
# ...
ManagedPolicyArns:
- !Ref BaseTaskRoleManagedPolicy
- arn:aws:iam::123456789012:policy/cfn-generated-policy-name-1
- arn:aws:iam::123456789012:policy/cfn-generated-policy-name-2
# Basic permissions for the task
BaseTaskRoleManagedPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
# ...
Higienize os valores das propriedades
Declaração
string → proton_cfn_sanitize → string
Descrição
Esse é um filtro de uso geral. Use-o para validar a segurança do valor de um parâmetro. O filtro valida se o valor corresponde à expressão regular ^[a-zA-Z0-9_-]*$
ou se é um nome do recurso da Amazon (ARN) válido. Se o valor falhar nessa validação, a renderização do modelo falhará.
Com o seguinte modelo de componente personalizado:
Resources:
# ...
Outputs:
Output1:
Description: "Example of valid output"
Value: "This-is_valid_37"
Output2:
Description: "Example incorrect output"
Value: "this::is::incorrect"
SomeArn:
Description: "Example ARN"
Value: arn:aws:some-service
::123456789012:some-resource
/resource-name
-
A seguinte referência em um modelo de serviço:
# ... {{ service_instance.components.default.outputs.Output1 | proton_cfn_sanitize }}
Renderiza da seguinte forma:
# ... This-is_valid_37
-
A seguinte referência em um modelo de serviço:
# ... {{ service_instance.components.default.outputs.Output2 | proton_cfn_sanitize }}
Resultados com o seguinte erro de renderização:
Illegal character(s) detected in "this::is::incorrect". Must match regex ^[a-zA-Z0-9_-]*$ or be a valid ARN
-
A seguinte referência em um modelo de serviço:
# ... {{ service_instance.components.default.outputs.SomeArn | proton_cfn_sanitize }}
Renderiza da seguinte forma:
# ... arn:aws:
some-service
::123456789012:some-resource
/resource-name
Fornecer valores padrão para referências inexistentes
Descrição
O filtro default
fornece um valor padrão quando não existe uma referência de namespace. Use-o para escrever modelos robustos que possam ser renderizados sem falhas, mesmo quando o parâmetro ao qual você se refere estiver ausente.
A referência a seguir em um modelo de serviço faz com que a renderização do modelo falhe se a instância de serviço não tiver um componente anexado diretamente definido (padrão) ou se o componente anexado não tiver uma saída chamada test
.
# ...
{{ service_instance.components.default.outputs.test }}
Para evitar esse problema, adicione o filtro default
.
# ...
{{ service_instance.components.default.outputs.test | default("[optional-value]
") }}