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á.
Você pode definir e referenciar parâmetros em seus arquivos de ambiente 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
Definir os parâmetros do ambiente
Você pode definir os parâmetros de entrada e saída para arquivos IaC do ambiente.
-
Parâmetros de entrada — Defina os parâmetros de entrada do ambiente em seu arquivo de esquema.
A lista a seguir inclui exemplos de parâmetros de entrada do ambiente para casos de uso típicos.
-
Valores CIDR de VPC
-
Configurações do load balancer
-
Configurações do banco de dados
-
Tempo limite de verificação de integridade
Como administrador, você pode fornecer valores para os parâmetros de entrada ao criar um ambiente:
-
Use o console para preencher um formulário baseado em esquema que AWS Proton fornece.
-
Use a CLI para fornecer uma especificação que inclua os valores.
-
-
Parâmetros de saída — Defina as saídas do ambiente nos arquivos IaC do seu ambiente. Você pode então consultar essas saídas em arquivos IaC de outros recursos.
Leia valores de parâmetros em arquivos IaC do ambiente
Você pode ler os parâmetros relacionados ao ambiente nos arquivos IaC do ambiente. Você lê um valor de parâmetro referindo o nome do parâmetro no namespace do parâmetro do AWS Proton .
-
Parâmetros de entrada — Leia um valor de entrada do ambiente fazendo referência a
environment.inputs.
.input-name
-
Parâmetros do AWS Proton recurso — Leia os parâmetros do recurso referenciando nomes como
environment.name
.
nota
Nenhum parâmetro de saída de outros recursos está disponível para os arquivos IaC do ambiente.
Exemplos de arquivos IaC de ambiente e serviço com parâmetros
O exemplo a seguir demonstra a definição e a referência de parâmetros em um arquivo IaC do ambiente. Em seguida, o exemplo mostra como os parâmetros de saída do ambiente definidos no arquivo IaC do ambiente podem ser referenciados em um arquivo IaC do serviço.
exemplo Arquivo de ambiente CloudFormation IaC
Neste exemplo, observe o seguinte:
-
O namespace
environment.inputs.
se refere aos parâmetros de entrada do ambiente. -
O parâmetro
StoreInputValue
do Amazon EC2 Systems Manager (SSM) concatena as entradas do ambiente. -
A saída
MyEnvParameterValue
expõe a mesma concatenação de parâmetros de entrada que um parâmetro de saída. Três parâmetros de saída adicionais também expõem os parâmetros de entrada individualmente. -
Seis parâmetros de saída adicionais expõem os recursos que o ambiente fornece.
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
exemplo Arquivo Service CloudFormation IaC
O namespace environment.outputs.
se refere às saídas do ambiente de um arquivo IaC do ambiente. Por exemplo, o nome environment.outputs.ClusterName
lê o valor do parâmetro de saída do 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'
[...]