Detalhes e exemplos de parâmetros do arquivo do componente CloudFormation IaC - 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á.

Detalhes e exemplos de parâmetros do arquivo do componente CloudFormation IaC

Você pode definir e referenciar parâmetros em seus arquivos de componente de infraestrutura como código (IaC). Para obter uma descrição detalhada dos AWS Proton parâmetros, dos tipos de parâmetros, do namespace do parâmetro e de como usar os parâmetros em seus arquivos IaC, consulte. AWS Proton parâmetros Para obter mais informações sobre componentes, consulte Componentes do AWS Proton.

Defina os parâmetros de saída do componente

Você pode definir os parâmetros de saída nos arquivos IaC do componente. Você pode então consultar essas saídas em arquivos IaC de serviço.

nota

Você não pode definir entradas para arquivos IaC de componentes. Os componentes conectados podem obter entradas da instância de serviço à qual estão conectados. Os componentes separados não têm entradas.

Leia valores de parâmetros em arquivos IaC de componente

Você pode ler os parâmetros relacionados ao componente e a outros recursos nos arquivos do componente IaC. Você lê o valor de um parâmetro fazendo referência ao nome do parâmetro no namespace do AWS Proton parâmetro.

  • Parâmetros de entrada – Leia um valor anexo de instância de serviço fazendo referência a service_instance.inputs.input-name.

  • Parâmetros do AWS Proton recurso — Leia os parâmetros do recurso fazendo referência a nomes como component.nameservice.name,service_instance.name, e. environment.name

  • Parâmetros de saída – Leia as saídas do ambiente referindo environment.outputs.output-name.

Exemplos de arquivos IaC de componente e serviço com parâmetros

O exemplo a seguir mostra um componente que provisiona um bucket do Amazon Simple Storage Service (Amazon S3) e política de acesso relacionada e expõe os Amazon Resource Names (ARNs) de ambos os recursos como saídas de componentes. Um modelo de serviço IaC adiciona as saídas do componente como variáveis de ambiente de contêiner de uma tarefa do Amazon Elastic Container Service (Amazon ECS) para disponibilizar as saídas para o código executado no contêiner e adiciona a política de acesso ao bucket ao perfil da tarefa. O nome do bucket é baseado nos nomes do ambiente, serviço, instância de serviço e componente, o que significa que o bucket é acoplado a uma instância específica do modelo de componente que estende uma instância de serviço específica. Os desenvolvedores podem criar vários componentes personalizados com base nesse modelo de componente para provisionar buckets do Amazon S3 para diferentes instâncias de serviço e necessidades funcionais.

O exemplo mostra como você usa a sintaxe de {{ ... }} Jinja para se referir a componentes e outros parâmetros de recursos em seu arquivo IaC de serviço. Você pode usar instruções de {% if ... %} para adicionar blocos de instruções somente quando um componente é anexado à instância de serviço. As palavras-chave proton_cfn_* são filtros que você pode usar para limpar e formatar os valores dos parâmetros de saída. Para obter mais informações sobre os filtros, consulte Filtros de parâmetros para arquivos CloudFormation IaC.

Como administrador, você cria o arquivo de modelo do serviço IaC.

exemplo arquivo CloudFormation IaC de serviço usando um componente
# service/instance_infrastructure/cloudformation.yaml Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: TaskRoleArn: !Ref TaskRole ContainerDefinitions: - Name: '{{service_instance.name}}' # ... {% if service_instance.components.default.outputs | length > 0 %} Environment: {{ service_instance.components.default.outputs | proton_cfn_ecs_task_definition_formatted_env_vars }} {% endif %} # ... 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: # ...

Como desenvolvedor, você cria o arquivo de modelo do componente IaC.

exemplo arquivo CloudFormation IaC do componente
# cloudformation.yaml # A component that defines an S3 bucket and a policy for accessing the bucket. Resources: S3Bucket: Type: 'AWS::S3::Bucket' Properties: BucketName: '{{environment.name}}-{{service.name}}-{{service_instance.name}}-{{component.name}}' S3BucketAccessPolicy: Type: AWS::IAM::ManagedPolicy Properties: PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - 's3:Get*' - 's3:List*' - 's3:PutObject' Resource: !GetAtt S3Bucket.Arn Outputs: BucketName: Description: "Bucket to access" Value: !GetAtt S3Bucket.Arn BucketAccessPolicyArn: Value: !Ref S3BucketAccessPolicy

Quando AWS Proton renderiza um AWS CloudFormation modelo para sua instância de serviço e substitui todos os parâmetros por valores reais, o modelo pode ter a aparência do arquivo a seguir.

exemplo arquivo IaC CloudFormation renderizado por instância de serviço
Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: TaskRoleArn: !Ref TaskRole ContainerDefinitions: - Name: '{{service_instance.name}}' # ... Environment: - Name: BucketName Value: arn:aws:s3:us-east-1:123456789012:environment_name-service_name-service_instance_name-component_name - Name: BucketAccessPolicyArn Value: arn:aws:iam::123456789012:policy/cfn-generated-policy-name # ... TaskRole: Type: AWS::IAM::Role Properties: # ... ManagedPolicyArns: - !Ref BaseTaskRoleManagedPolicy - arn:aws:iam::123456789012:policy/cfn-generated-policy-name # Basic permissions for the task BaseTaskRoleManagedPolicy: Type: AWS::IAM::ManagedPolicy Properties: # ...