filtri parametrici per CloudFormation file IAc - AWS Proton

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

filtri parametrici per CloudFormation file IAc

Quando si fanno riferimenti ai AWS Proton parametri nei file AWS CloudFormation IAc, è possibile utilizzare i modificatori Jinja noti come filtri per convalidare, filtrare e formattare i valori dei parametri prima che vengano inseriti nel modello renderizzato. Le convalide dei filtri sono particolarmente utili quando si fa riferimento ai parametri di output dei componenti, poiché la creazione e il collegamento dei componenti vengono eseguiti dagli sviluppatori e un amministratore che utilizza gli output dei componenti in un modello di istanza di servizio potrebbe volerne verificare l'esistenza e la validità. Tuttavia, puoi utilizzare i filtri in qualsiasi file Jinja IAc.

Le sezioni seguenti descrivono e definiscono i filtri parametrici disponibili e forniscono esempi. AWS Proton definisce la maggior parte di questi filtri. Il default filtro è un filtro integrato Jinja.

Proprietà dell'ambiente di formattazione per le attività di Amazon ECS

Dichiarazione

dict → proton_cfn_ecs_task_definition_formatted_env_vars (raw: boolean = True) → YAML list of dicts

Descrizione

Questo filtro formatta un elenco di output da utilizzare in una proprietà Environment nella ContainerDefinition sezione di una definizione di attività Amazon Elastic Container Service (Amazon ECS) Elastic Container Service (Amazon ECS).

Imposta su raw per False convalidare anche il valore del parametro. In questo caso, è necessario che il valore corrisponda all'espressione ^[a-zA-Z0-9_-]*$ regolare. Se il valore non supera questa convalida, il rendering del modello fallisce.

Con il seguente modello di componente personalizzato:

Resources: # ... Outputs: Output1: Description: "Example component output 1" Value: hello Output2: Description: "Example component output 2" Value: world

E il seguente modello di servizio:

Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: # ... ContainerDefinitions: - Name: MyServiceName # ... Environment: {{ service_instance.components.default.outputs | proton_cfn_ecs_task_definition_formatted_env_vars }}

Il modello di servizio reso è il seguente:

Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: # ... ContainerDefinitions: - Name: MyServiceName # ... Environment: - Name: Output1 Value: hello - Name: Output2 Value: world

Proprietà di ambiente di formattazione per le funzioni Lambda

Dichiarazione

dict → proton_cfn_lambda_function_formatted_env_vars (raw: boolean = True) → YAML dict

Descrizione

Questo filtro formatta un elenco di output da utilizzare in una proprietà Environment nella Properties sezione di una definizione di AWS Lambda funzione.

Imposta su raw False per convalidare anche il valore del parametro. In questo caso, è necessario che il valore corrisponda all'espressione ^[a-zA-Z0-9_-]*$ regolare. Se il valore non supera questa convalida, il rendering del modello fallisce.

Con il seguente modello di componente personalizzato:

Resources: # ... Outputs: Output1: Description: "Example component output 1" Value: hello Output2: Description: "Example component output 2" Value: world

E il seguente modello di servizio:

Resources: Lambda: Type: AWS::Lambda::Function Properties: Environment: Variables: {{ service_instance.components.default.outputs | proton_cfn_lambda_function_formatted_env_vars }}

Il modello di servizio reso è il seguente:

Resources: Lambda: Type: AWS::Lambda::Function Properties: Environment: Variables: Output1: hello Output2: world

Estrai gli ARN delle policy IAM da includere nei ruoli IAM

Dichiarazione

dict → proton_cfn_iam_policy_arns → YAML list

Descrizione

Questo filtro formatta un elenco di output da utilizzare in una ManagedPolicyArns proprietà nella Properties sezione di una definizione di ruolo AWS Identity and Access Management (IAM). Il filtro utilizza l'espressione regolare ^arn:[a-zA-Z-]+:iam::\d{12}:policy/ per estrarre gli ARN validi delle policy IAM dall'elenco dei parametri di output. È possibile utilizzare questo filtro per aggiungere le politiche nei valori dei parametri di output a una definizione di ruolo IAM in un modello di servizio.

Con il seguente modello di componente personalizzato:

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 il seguente modello di servizio:

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: # ...

Il modello di servizio reso è il seguente:

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: # ...

Disinfetta i valori delle proprietà

Dichiarazione

string → proton_cfn_sanitize → string

Descrizione

Si tratta di un filtro generico. Utilizzatelo per convalidare la sicurezza del valore di un parametro. Il filtro verifica che il valore corrisponda all'espressione regolare ^[a-zA-Z0-9_-]*$ o sia un Amazon Resource Name (ARN) valido. Se il valore non supera questa convalida, il rendering del modello non riesce.

Con il seguente modello di componente personalizzato:

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
  • Il seguente riferimento in un modello di servizio:

    # ... {{ service_instance.components.default.outputs.Output1 | proton_cfn_sanitize }}

    Viene visualizzato come segue:

    # ... This-is_valid_37
  • Il seguente riferimento in un modello di servizio:

    # ... {{ service_instance.components.default.outputs.Output2 | proton_cfn_sanitize }}

    Risultati con il seguente errore di rendering:

    Illegal character(s) detected in "this::is::incorrect". Must match regex ^[a-zA-Z0-9_-]*$ or be a valid ARN
  • Il seguente riferimento in un modello di servizio:

    # ... {{ service_instance.components.default.outputs.SomeArn | proton_cfn_sanitize }}

    Viene visualizzato come segue:

    # ... arn:aws:some-service::123456789012:some-resource/resource-name

Fornite valori predefiniti per riferimenti inesistenti

Descrizione

Il default filtro fornisce un valore predefinito quando non esiste un riferimento allo spazio dei nomi. Utilizzatelo per scrivere modelli robusti in grado di eseguire il rendering senza errori anche quando manca il parametro a cui fate riferimento.

Il riferimento seguente in un modello di servizio fa sì che il rendering del modello non riesca se all'istanza del servizio non è associato un componente definito direttamente (predefinito) o se il componente allegato non ha un output denominatotest.

# ... {{ service_instance.components.default.outputs.test }}

Per evitare questo problema, aggiungete il default filtro.

# ... {{ service_instance.components.default.outputs.test | default("[optional-value]") }}