Dettagli ed esempi dei parametri del file Environment CloudFormation 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à.

Dettagli ed esempi dei parametri del file Environment CloudFormation IAc

È possibile definire e fare riferimento ai parametri nell'infrastruttura ambientale come file di codice (IaC). Per una descrizione dettagliata dei AWS Proton parametri, dei tipi di parametri, dello spazio dei nomi dei parametri e di come utilizzare i parametri nei file IAc, vedere. AWS Proton parametri

Definire i parametri dell'ambiente

È possibile definire i parametri di input e output per i file IAc di ambiente.

  • Parametri di input: definisci i parametri di input dell'ambiente nel tuo file di schema.

    L'elenco seguente include esempi di parametri di input ambientali per casi d'uso tipici.

    • Valori CIDR VPC

    • Impostazioni del bilanciamento del carico

    • Impostazioni del database

    • Un timeout per il controllo dello stato di salute

    In qualità di amministratore, puoi fornire valori per i parametri di input quando crei un ambiente:

    • Utilizza la console per compilare un modulo basato su schemi che AWS Proton fornisce.

    • Utilizza la CLI per fornire una specifica che includa i valori.

  • Parametri di output: definisci gli output dell'ambiente nei file IAc del tuo ambiente. È quindi possibile fare riferimento a questi output nei file IAc di altre risorse.

Leggi i valori dei parametri nei file IAc di ambiente

È possibile leggere i parametri relativi all'ambiente nei file IAc di ambiente. Si legge il valore di un parametro facendo riferimento al nome del parametro nello spazio dei nomi del AWS Proton parametro.

  • Parametri di input: legge un valore di input di ambiente facendo riferimento. environment.inputs.input-name

  • Parametri delle AWS Proton risorse: leggi i parametri delle risorse facendo riferimento a nomi come. environment.name

Nota

Nessun parametro di output di altre risorse è disponibile per i file IAc di ambiente.

File IAc di ambiente e servizio di esempio con parametri

L'esempio seguente mostra la definizione e il riferimento dei parametri in un file IAc di ambiente. L'esempio mostra quindi come è possibile fare riferimento ai parametri di output dell'ambiente definiti nel file IAc di ambiente in un file IAc di servizio.

Esempio File di ambiente IAc CloudFormation

Nota quanto segue in questo esempio:

  • Lo spazio dei environment.inputs. nomi si riferisce ai parametri di input dell'ambiente.

  • Il StoreInputValue parametro Amazon EC2 Systems Manager (SSM) concatena gli input dell'ambiente.

  • L'MyEnvParameterValueoutput espone la stessa concatenazione di parametri di input di un parametro di output. Tre parametri di output aggiuntivi espongono inoltre i parametri di input singolarmente.

  • Sei parametri di output aggiuntivi espongono le risorse fornite dall'ambiente.

Resources: StoreInputValue: Type: AWS::SSM::Parameter Properties: Type: String Value: "{{ environment.inputs.my_sample_input }} {{ environment.inputs.my_other_sample_input}} {{ environment.inputs.another_optional_input }}" # input parameter references # These output values are available to service infrastructure as code files as outputs, when given the # the 'environment.outputs' namespace, for example, service_instance.environment.outputs.ClusterName. Outputs: MyEnvParameterValue: # output definition Value: !GetAtt StoreInputValue.Value MySampleInputValue: # output definition Value: "{{ environment.inputs.my_sample_input }}" # input parameter reference MyOtherSampleInputValue: # output definition Value: "{{ environment.inputs.my_other_sample_input }}" # input parameter reference AnotherOptionalInputValue: # output definition Value: "{{ environment.inputs.another_optional_input }}" # input parameter reference ClusterName: # output definition Description: The name of the ECS cluster Value: !Ref 'ECSCluster' # provisioned resource ECSTaskExecutionRole: # output definition Description: The ARN of the ECS role Value: !GetAtt 'ECSTaskExecutionRole.Arn' # provisioned resource VpcId: # output definition Description: The ID of the VPC that this stack is deployed in Value: !Ref 'VPC' # provisioned resource PublicSubnetOne: # output definition Description: Public subnet one Value: !Ref 'PublicSubnetOne' # provisioned resource PublicSubnetTwo: # output definition Description: Public subnet two Value: !Ref 'PublicSubnetTwo' # provisioned resource ContainerSecurityGroup: # output definition Description: A security group used to allow Fargate containers to receive traffic Value: !Ref 'ContainerSecurityGroup' # provisioned resource
Esempio File CloudFormation IAc di servizio

Il environment.outputs. namespace si riferisce agli output di ambiente di un file IAc di ambiente. Ad esempio, il nome environment.outputs.ClusterName legge il valore del parametro di output dell'ambiente. ClusterName

AWSTemplateFormatVersion: '2010-09-09' Description: Deploy a service on AWS Fargate, hosted in a public subnet, and accessible via a public load balancer. Mappings: TaskSize: x-small: cpu: 256 memory: 512 small: cpu: 512 memory: 1024 medium: cpu: 1024 memory: 2048 large: cpu: 2048 memory: 4096 x-large: cpu: 4096 memory: 8192 Resources: # A log group for storing the stdout logs from this service's containers LogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: '{{service_instance.name}}' # resource parameter # The task definition. This is a simple metadata description of what # container to run, and what resource requirements it has. TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: Family: '{{service_instance.name}}' # resource parameter Cpu: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, cpu] # input parameter Memory: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, memory] NetworkMode: awsvpc RequiresCompatibilities: - FARGATE ExecutionRoleArn: '{{environment.outputs.ECSTaskExecutionRole}}' # output reference to an environment infrastructure code file TaskRoleArn: !Ref "AWS::NoValue" ContainerDefinitions: - Name: '{{service_instance.name}}' # resource parameter Cpu: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, cpu] Memory: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, memory] Image: '{{service_instance.inputs.image}}' PortMappings: - ContainerPort: '{{service_instance.inputs.port}}' # input parameter LogConfiguration: LogDriver: 'awslogs' Options: awslogs-group: '{{service_instance.name}}' # resource parameter awslogs-region: !Ref 'AWS::Region' awslogs-stream-prefix: '{{service_instance.name}}' # resource parameter # The service_instance. The service is a resource which allows you to run multiple # copies of a type of task, and gather up their logs and metrics, as well # as monitor the number of running tasks and replace any that have crashed Service: Type: AWS::ECS::Service DependsOn: LoadBalancerRule Properties: ServiceName: '{{service_instance.name}}' # resource parameter Cluster: '{{environment.outputs.ClusterName}}' # output reference to an environment infrastructure as code file LaunchType: FARGATE DeploymentConfiguration: MaximumPercent: 200 MinimumHealthyPercent: 75 DesiredCount: '{{service_instance.inputs.desired_count}}'# input parameter NetworkConfiguration: AwsvpcConfiguration: AssignPublicIp: ENABLED SecurityGroups: - '{{environment.outputs.ContainerSecurityGroup}}' # output reference to an environment infrastructure as code file Subnets: - '{{environment.outputs.PublicSubnetOne}}' # output reference to an environment infrastructure as code file - '{{environment.outputs.PublicSubnetTwo}}' # output reference to an environment infrastructure as code file TaskDefinition: !Ref 'TaskDefinition' LoadBalancers: - ContainerName: '{{service_instance.name}}' # resource parameter ContainerPort: '{{service_instance.inputs.port}}' # input parameter TargetGroupArn: !Ref 'TargetGroup' [...]