Infraestrutura de componentes como arquivos de código - AWS Proton

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

Infraestrutura de componentes como arquivos de código

Os arquivos de infraestrutura como código (IaC) de componentes são semelhantes aos de outros recursos do AWS Proton. Conheça aqui alguns detalhes específicos dos componentes. Para obter informações completas sobre a criação de arquivos IaC para o AWS Proton, consulte Criação de modelos e criação de pacotes para AWS Proton.

Usando parâmetros com componentes

O namespace do parâmetro do AWS Proton inclui alguns parâmetros que um arquivo IaC de serviço pode referenciar para obter o nome e as saídas de um componente associado. O namespace também inclui parâmetros que um arquivo IaC do componente pode referenciar para obter entradas, saídas e valores de recursos do ambiente, serviço e instância de serviço aos quais o componente está associado.

Um componente não tem entradas próprias — ele obtém suas entradas da instância de serviço à qual está conectado. Um componente também pode ler as saídas do ambiente.

Para obter mais informações sobre o uso de parâmetros em arquivos IaC de componentes e serviços associados, consulte Detalhes e exemplos de parâmetros do arquivo do componente CloudFormation IaC. Para obter informações gerais sobre parâmetros do AWS Proton e uma referência completa do namespace do parâmetro, consulte AWS Proton parâmetros.

Criação de arquivos IaC robustos

Como administrador, ao criar uma versão do modelo de serviço, você pode decidir se deseja permitir que as instâncias de serviço criadas a partir da versão do modelo tenham componentes anexados. Consulte o parâmetro supportedComponentSources da ação da API CreateServiceTemplateVersion na Referência da API do AWS Proton. No entanto, para qualquer instância de serviço futura, a pessoa que cria a instância, decide se deseja ou não anexar um componente a ela e (no caso de componentes definidos diretamente) é a autora do componente IaC normalmente é uma pessoa diferente — um desenvolvedor usando seu modelo de serviço. Portanto, você não pode garantir que um componente seja anexado a uma instância de serviço. Você também não pode garantir a existência de nomes de saída de componentes específicos ou a validade e segurança dos valores dessas saídas.

O AWS Proton e a sintaxe do Jinja ajudam você a contornar esses problemas e criar modelos de serviço robustos que são renderizados sem falhas das seguintes maneiras:

  • Filtros de parâmetros do AWS Proton – Ao se referir às propriedades de saída do componente, você pode usar filtros de parâmetros — modificadores que validam, filtram e formatam valores de parâmetros. Para ter mais informações e exemplos, consulte Filtros de parâmetros para arquivos CloudFormation IaC.

  • Padrão de propriedade única — Ao se referir a um único recurso ou propriedade de saída de um componente, você pode garantir que a renderização do seu modelo de serviço não falhe usando o filtro do default, com ou sem um valor padrão. Se o componente ou um parâmetro de saída específico ao qual você está se referindo não existir, o valor padrão (ou uma string vazia, se você não tiver especificado um valor padrão) será renderizado e a renderização será bem-sucedida. Para obter mais informações, consulte Fornecer valores padrão para referências inexistentes.

    Exemplos:

    • {{ service_instance.components.default.name | default("") }}

    • {{ service_instance.components.default.outputs.my-output | default("17") }}

    nota

    Não confunda a parte .default do namespace, que designa componentes diretamente definidos, com o filtro default, que fornece um valor padrão quando a propriedade referenciada não existe.

  • Referência de objeto inteiro — Quando você se refere ao componente inteiro ou à coleção das saídas de um componente, o AWS Proton retorna um objeto vazio, {}, e, portanto, garante que a renderização do seu modelo de serviço não falhe. Você não precisa utilizar qualquer filtro Certifique-se de fazer a referência em um contexto que possa usar um objeto vazio ou use uma condição de {{ if .. }} para testar um objeto vazio.

    Exemplos:

    • {{ service_instance.components.default }}

    • {{ service_instance.components.default.outputs }}