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.
Sie können Parameter in Ihren IaC-Dateien (Environment Infrastructure as Code) definieren und referenzieren. Eine detaillierte 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 von Umgebungsparametern
Sie können sowohl Eingabe- als auch Ausgabeparameter für Umgebungs-IaC-Dateien definieren.
-
Eingabeparameter – Definieren Sie Umgebungseingabeparameter in Ihrer Schemadatei .
Die folgende Liste enthält Beispiele für Umgebungseingabeparameter für typische Anwendungsfälle.
-
VPC-CIDR-Werte
-
Load Balancer-Einstellungen
-
Datenbankeinstellungen
-
Ein Timeout für die Zustandsprü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 bereitstellt.
-
Verwenden Sie die CLI, um eine Spezifikation bereitzustellen, die die Werte enthält.
-
-
Ausgabeparameter – Definieren Sie Umgebungsausgaben in Ihren IaC-Dateien der Umgebung. Sie können dann in IaC-Dateien anderer Ressourcen auf diese Ausgaben verweisen.
Lesen von Parameterwerten in Umgebungs-IaC-Dateien
Sie können Parameter im Zusammenhang mit der Umgebung in IaC-Dateien der Umgebung lesen. Sie lesen einen Parameterwert, indem Sie auf den Namen des Parameters im AWS Proton Parameter-Namespace verweisen.
-
Eingabeparameter – Lesen Sie einen Umgebungseingabewert, indem Sie auf verweisen
environment.inputs.
.input-name
-
Ressourcenparameter – Lesen Sie AWS Proton Ressourcenparameter, indem Sie auf Namen wie verweisen
environment.name
.
Anmerkung
Für Umgebungs-IaC-Dateien sind keine Ausgabeparameter anderer Ressourcen verfügbar.
Beispiel für Umgebungs- und ServiceIaC-Dateien mit Parametern
Das folgende Beispiel zeigt die Parameterdefinition und -referenz in einer IaC-Datei. Das Beispiel zeigt dann, wie in der IaC-Umgebungsdatei definierte Umgebungsausgabeparameter in einer Service-IaC-Datei referenziert werden können.
Beispiel Umgebungs- CloudFormation IaC-Datei
Beachten Sie in diesem Beispiel Folgendes:
-
Der
environment.inputs.
Namespace bezieht sich auf Umgebungseingabeparameter. -
Der Amazon EC2 Systems Manager (SSM)-Parameter
StoreInputValue
verkettet die Umgebungseingaben. -
Die
MyEnvParameterValue
Ausgabe stellt dieselbe Eingabeparameterverkettung wie ein Ausgabeparameter bereit. Drei zusätzliche Ausgabeparameter stellen die Eingabeparameter auch einzeln bereit. -
Sechs zusätzliche Ausgabeparameter stellen Ressourcen bereit, die die Umgebung 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 Service CloudFormation IaC-Datei
Der environment.outputs.
Namespace bezieht sich auf Umgebungsausgaben aus einer IaC-Datei. Der Name environment.outputs.ClusterName
liest beispielsweise 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'
[...]