Detalles y ejemplos de los parámetros del archivo CloudFormation IaC del componente - AWS Proton

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Detalles y ejemplos de los parámetros del archivo CloudFormation IaC del componente

Puede definir los parámetros de la infraestructura de componentes y hacer referencia a ellos como archivos de código (IaC). Para obtener una descripción detallada de AWS Proton los parámetros, los tipos de parámetros, el espacio de nombres de los parámetros y cómo utilizar los parámetros en los archivos de IaC, consulte. AWS Proton parámetros Para obtener más información sobre los componentes, consulte Componentes de AWS Proton.

Definición de los parámetros de salida de los componentes

Puede definir los parámetros de salida en los archivos iAc de sus componentes. A continuación, puede hacer referencia a estas salidas en los archivos IaC de servicio.

nota

No puede definir las entradas para los archivos IaC de los componentes. Los componentes conectados pueden obtener entradas de la instancia de servicio a la que están conectados. Los componentes separados no tienen entradas.

Lea los valores de los parámetros en los archivos IaC de los componentes

Puede leer los parámetros relacionados con el componente y con otros recursos en los archivos IaC del componente. Para leer el valor de un parámetro, haga referencia al nombre del parámetro en el espacio de nombres del AWS Proton parámetro.

  • Parámetros de entrada: lee el valor de entrada de una instancia de servicio adjunta haciendo referencia a él. service_instance.inputs.input-name

  • Parámetros de AWS Proton recursos: lea los parámetros de los recursos haciendo referencia a nombres comocomponent.name, service.nameservice_instance.name, y. environment.name

  • Parámetros de salida: lea las salidas del entorno mediante referenciasenvironment.outputs.output-name.

Ejemplos de archivos IaC de componentes y servicios con parámetros

En el siguiente ejemplo, se muestra un componente que aprovisiona un bucket de Amazon Simple Storage Service (Amazon S3) y una política de acceso relacionada, y expone los nombres de recurso de Amazon (ARN) de ambos recursos como salidas de componentes. Una plantilla de IaC de servicio añade las salidas de los componentes como variables de entorno de contenedor de una tarea de Amazon Elastic Container Service (Amazon ECS) para que las salidas estén disponibles para el código que se ejecute en el contenedor, y añade la política de acceso del bucket al rol de la tarea. El nombre del bucket se basa en los nombres del entorno, el servicio, la instancia de servicio y el componente, lo que significa que el bucket está asociado a una instancia específica de la plantilla del componente que amplía una instancia de servicio específica. Los desarrolladores pueden crear varios componentes personalizados en función de esta plantilla de componentes para aprovisionar buckets de Amazon S3 para distintas instancias de servicio y necesidades funcionales.

El ejemplo muestra cómo se utiliza la sintaxis {{ ... }} de Jinja para hacer referencia a los parámetros de los componentes y de otros recursos en el archivo de IaC del servicio. Puede utilizar instrucciones {% if ... %} para añadir bloques de instrucciones solo cuando un componente esté conectado a la instancia del servicio. Las palabras clave proton_cfn_* son filtros que se pueden utilizar para borrar y formatear los valores de los parámetros de salida. Para obtener más información acerca de los filtros, consulte Filtros de parámetros para archivos CloudFormation IaC.

Como administrador, usted crea el archivo de plantilla IaC del servicio.

ejemplo CloudFormation repare el archivo IaC mediante un 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 desarrollador, usted crea el archivo de plantilla IaC del componente.

ejemplo fichero CloudFormation IaC del 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

Al AWS Proton renderizar una AWS CloudFormation plantilla para la instancia de servicio y reemplazar todos los parámetros por valores reales, la plantilla podría tener un aspecto similar al siguiente archivo.

ejemplo la instancia de servicio CloudFormation renderizó un archivo iAC
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: # ...