Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Details und Beispiele zu den Parametern der CloudFormation IaC-Datei in der Umgebung
Sie können Parameter in Ihrer Umgebungsinfrastruktur als Codedateien (IaC) definieren und referenzieren. Eine ausführliche Beschreibung der AWS Proton Parameter, Parametertypen, des Parameter-Namespace und der Verwendung von Parametern in Ihren IaC-Dateien finden Sie unter. AWS Proton Parameter
Definieren Sie Umgebungsparameter
Sie können sowohl Eingabe- als auch Ausgabeparameter für IaC-Umgebungsdateien definieren.
-
Eingabeparameter — Definieren Sie Eingabeparameter für die Umgebung in Ihrer Schemadatei.
Die folgende Liste enthält Beispiele für Umgebungseingabeparameter für typische Anwendungsfälle.
-
VPC CIDR-Werte
-
Load Balancer-Einstellungen
-
Datenbank-Einstellungen
-
Ein Timeout bei der Integritätsprüfung
Als Administrator können Sie Werte für Eingabeparameter angeben, wenn Sie eine Umgebung erstellen:
-
Verwenden Sie die Konsole, um ein schemabasiertes Formular auszufüllen, das AWS Proton Folgendes bietet:
-
Verwenden Sie die CLI, um eine Spezifikation bereitzustellen, die die Werte enthält.
-
-
Ausgabeparameter — Definieren Sie die Umgebungsausgaben in den IaC-Dateien Ihrer Umgebung. Sie können dann in IaC-Dateien anderer Ressourcen auf diese Ausgaben verweisen.
Lesen Sie Parameterwerte in IaC-Umgebungsdateien
Sie können Parameter, die sich auf die Umgebung beziehen, in IaC-Umgebungsdateien lesen. Sie lesen einen Parameterwert, indem Sie im Parameter-Namespace auf den Namen des AWS Proton Parameters verweisen.
-
Eingabeparameter — Lesen Sie einen Umgebungseingabewert, indem Sie ihn referenzieren.
environment.inputs.
input-name
-
Ressourcenparameter — Lesen Sie AWS Proton Ressourcenparameter, indem Sie auf Namen wie verweisen.
environment.name
Anmerkung
Für IaC-Umgebungsdateien sind keine Ausgabeparameter anderer Ressourcen verfügbar.
IaC-Beispieldateien für Umgebungen und Dienste mit Parametern
Das folgende Beispiel zeigt die Parameterdefinition und Referenz in einer IaC-Umgebungsdatei. Das Beispiel zeigt dann, wie in der IaC-Umgebungsdatei definierte Umgebungsausgabeparameter in einer Service-IaC-Datei referenziert werden können.
Beispiel IaC-Datei für die Umgebung CloudFormation
Beachten Sie in diesem Beispiel Folgendes:
-
Der
environment.inputs.
Namespace bezieht sich auf Eingabeparameter der Umgebung. -
Der Amazon EC2 Systems Manager (SSM) -Parameter
StoreInputValue
verkettet die Umgebungseingaben. -
Die
MyEnvParameterValue
Ausgabe stellt dieselbe Verkettung von Eingabeparametern wie ein Ausgabeparameter bereit. Drei zusätzliche Ausgabeparameter machen die Eingabeparameter ebenfalls einzeln verfügbar. -
Sechs zusätzliche Ausgabeparameter machen Ressourcen verfügbar, die die Umwelt bereitstellt.
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
Beispiel CloudFormation IaC-Datei für den Dienst
Der environment.outputs.
Namespace bezieht sich auf Umgebungsausgaben aus einer IaC-Umgebungsdatei. Beispielsweise environment.outputs.ClusterName
liest der Name den Wert des ClusterName
Umgebungsausgabeparameters.
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' [...]