Variáveis de sistema de automação - AWS Systems Manager

Variáveis de sistema de automação

Os runbooks do AWS Systems Manager Automation usam as variáveis a seguir. Para obter um exemplo de como essas variáveis são usadas, visualize a origem JSON do runbook AWS-UpdateWindowsAmi.

Para visualizar a origem JSON do runbook AWS-UpdateWindowsAmi
  1. Abra o console AWS Systems Manager em https://console.aws.amazon.com/systems-manager/.

  2. No painel de navegação, escolha Documents.

  3. Na lista de documentos, use a barra de pesquisa ou os números à direita da barra de pesquisa para escolher o runbook AWS-UpdateWindowsAmi.

  4. Escolha a guia Conteúdo.

Variáveis do sistema

Runbooks do Automation oferecem suporte para as seguintes variáveis de sistema:

Variável Detalhes

global:ACCOUNT_ID

O ID da Conta da AWS do usuário ou do perfil no qual o Automation é executado.

global:DATE

A data (no runtime), no formato aaaa-MM-dd.

global:DATE_TIME

A data e a hora (no runtime), no formato aaaa-MM-dd_HH.mm.ss.

global:AWS_PARTITION

A partição na qual o recurso está. Para Regiões da AWS padrão, a partição é aws. Para obter recursos em outras partições, a partição é aws-partitionname. Por exemplo, a partição para recursos na região da AWS GovCloud (Oeste dos EUA) é aws-us-gov.

global:REGION

A região em que o runbook é executado. Por exemplo, us-east-2.

Variáveis de automação

Runbooks do Automation oferecem suporte para as seguintes variáveis de automação:

Variável Detalhes

automation:EXECUTION_ID

O identificador exclusivo atribuído à automação atual. Por exemplo, .1a2b3c-1a2b3c-1a2b3c-1a2b3c1a2b3c1a2b3c

Terminologia

Os termos a seguir descrevem como as variáveis e os parâmetros são resolvidos.

Prazo Definição Exemplo

ARN constante

Um nome do recurso da Amazon (ARN) válido sem variáveis.

arn:aws:iam::123456789012:role/roleName

Parâmetro do runbook

Um parâmetro definido no nível do runbook (por exemplo, instanceId). O parâmetro é usado em uma substituição de string básica. Seu valor é fornecido na ocasião de início da execução.

{ "description": "Create Image Demo", "version": "0.3", "assumeRole": "Your_Automation_Assume_Role_ARN", "parameters":{ "instanceId": { "type": "String", "description": "Instance to create image from" } }

Variável de sistema

Uma variável geral substituída no runbook quando uma parte dele é avaliada.

"activities": [ { "id": "copyImage", "activityType": "AWS-CopyImage", "maxAttempts": 1, "onFailure": "Continue", "inputs": { "ImageName": "{{imageName}}", "SourceImageId": "{{sourceImageId}}", "SourceRegion": "{{sourceRegion}}", "Encrypted": true, "ImageDescription": "Test CopyImage Description created on {{global:DATE}}" } } ]

Variável de automação

Uma variável relativa à execução de automação substituída no runbook quando uma parte dele for avaliada.

{ "name": "runFixedCmds", "action": "aws:runCommand", "maxAttempts": 1, "onFailure": "Continue", "inputs": { "DocumentName": "AWS-RunPowerShellScript", "InstanceIds": [ "{{LaunchInstance.InstanceIds}}" ], "Parameters": { "commands": [ "dir", "date", "“{{outputFormat}}” -f “left”,”right”,”{{global:DATE}}”,”{{automation:EXECUTION_ID}}” ] } } }

Parâmetro do Systems Manager

Uma variável definida no AWS Systems Manager Parameter Store. Ele não pode ser referenciado diretamente na entrada da etapa. Podem ser necessárias permissões para acessar o parâmetro.

description: Launch new Windows test instance schemaVersion: '0.3' assumeRole: '{{AutomationAssumeRole}}' parameters: AutomationAssumeRole: type: String default: '' description: >- (Required) The ARN of the role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to run this runbook. LatestAmi: type: String default: >- {{ssm:/aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base}} description: The latest Windows Server 2016 AMI queried from the public parameter. mainSteps: - name: launchInstance action: 'aws:runInstances' maxAttempts: 3 timeoutSeconds: 1200 onFailure: Abort inputs: ImageId: '{{LatestAmi}}' ...

Cenários compatíveis

Cenário Comentários Exemplo

assumeRole de ARN constante na criação.

Uma verificação de autorização é realizada para verificar se o usuário de chamada tem permissão para transmitir a assumeRole especificada.

{ "description": "Test all Automation resolvable parameters", "schemaVersion": "0.3", "assumeRole": "arn:aws:iam::123456789012:role/roleName", "parameters": { ...

Parâmetro do runbook fornecido para o AssumeRole quando a automação é iniciada.

Devem ser definidos na lista de parâmetros do runbook.

{ "description": "Test all Automation resolvable parameters", "schemaVersion": "0.3", "assumeRole": "{{dynamicARN}}", "parameters": { ...

Valor fornecido para o parâmetro do runbook no início.

O cliente fornece o valor a ser usado para um parâmetro. Quaisquer entradas fornecidas na inicialização precisam ser definidas na lista de parâmetros do runbook.

... "parameters": { "amiId": { "type": "String", "default": "ami-12345678", "description": "list of commands to run as part of first step" }, ...

As entradas para iniciar a execução da automação incluem: {"amiId" : ["ami-12345678"] }

Parâmetro do Systems Manager referenciado no conteúdo do runbook.

A variável existe na conta do cliente ou é um parâmetro acessível publicamente, e o AssumeRole do runbook tem acesso à variável. Uma verificação é realizada na ocasião da criação para confirmar se AssumeRole tem acesso. O parâmetro não pode ser referenciado diretamente na entrada da etapa.

... parameters: LatestAmi: type: String default: >- {{ssm:/aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base}} description: The latest Windows Server 2016 AMI queried from the public parameter. mainSteps: - name: launchInstance action: 'aws:runInstances' maxAttempts: 3 timeoutSeconds: 1200 onFailure: Abort inputs: ImageId: '{{LatestAmi}}' ...

Variável de sistema referenciada na definição de etapa

Uma variável de sistema é substituída no runbook quando a automação é iniciada. O valor injetado no runbook é relativo a quando ocorre a substituição. Ou seja, o valor de uma variável de tempo injetado na etapa 1 é diferente do valor injetado na etapa 3 devido ao tempo necessário para executar as etapas intermediárias. As variáveis do sistema não precisam ser definidas na lista de parâmetros do runbook.

... "mainSteps": [ { "name": "RunSomeCommands", "action": "aws:runCommand", "maxAttempts": 1, "onFailure": "Continue", "inputs": { "DocumentName": "AWS:RunPowerShell", "InstanceIds": ["{{LaunchInstance.InstanceIds}}"], "Parameters": { "commands" : [ "echo {The time is now {{global:DATE_TIME}}}" ] } } }, ...

Variável de automação referenciada na definição de etapa.

As variáveis de automação não precisam ser definidas na lista de parâmetros do runbook. A única variável de Automação com suporte é automation:EXECUTION_ID.

... "mainSteps": [ { "name": "invokeLambdaFunction", "action": "aws:invokeLambdaFunction", "maxAttempts": 1, "onFailure": "Continue", "inputs": { "FunctionName": "Hello-World-LambdaFunction", "Payload" : "{ "executionId" : "{{automation:EXECUTION_ID}}" }" } } ...

Consulte a saída da etapa anterior na próxima definição de etapa.

Este é o redirecionamento de parâmetros. A saída de uma etapa anterior é referenciada usando a sintaxe {{stepName.OutputName}}. Essa sintaxe não pode ser usada pelo cliente para parâmetros do runbook. Isso é resolvido quando a etapa de referência é executada. O parâmetro não está listado nos parâmetros do runbook.

... "mainSteps": [ { "name": "LaunchInstance", "action": "aws:runInstances", "maxAttempts": 1, "onFailure": "Continue", "inputs": { "ImageId": "{{amiId}}", "MinInstanceCount": 1, "MaxInstanceCount": 2 } }, { "name":"changeState", "action": "aws:changeInstanceState", "maxAttempts": 1, "onFailure": "Continue", "inputs": { "InstanceIds": ["{{LaunchInstance.InstanceIds}}"], "DesiredState": "terminated" } } ...

Cenários não compatíveis

Cenário Comentário Exemplo

Parâmetro do Systems Manager fornecido para o assumeRole na criação

Sem suporte.

... { "description": "Test all Automation resolvable parameters", "schemaVersion": "0.3", "assumeRole": "{{ssm:administratorRoleARN}}", "parameters": { ...

Parâmetro do Systems Manager referenciado diretamente na entrada da etapa.

Retorna a exceção InvalidDocumentContent no momento da criação.

... mainSteps: - name: launchInstance action: 'aws:runInstances' maxAttempts: 3 timeoutSeconds: 1200 onFailure: Abort inputs: ImageId: '{{ssm:/aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base}}' ...

Definição de etapa variável

A definição de uma etapa no runbook é construída por variáveis.

... "mainSteps": [ { "name": "LaunchInstance", "action": "aws:runInstances", "{{attemptModel}}": 1, "onFailure": "Continue", "inputs": { "ImageId": "ami-12345678", "MinInstanceCount": 1, "MaxInstanceCount": 2 } ... User supplies input : { "attemptModel" : "minAttempts" }

Referência cruzada de parâmetros do runbook

O usuário fornece um parâmetro de entrada na hora de início, que é uma referência a outro parâmetro no runbook.

... "parameters": { "amiId": { "type": "String", "default": "ami-7f2e6015", "description": "list of commands to run as part of first step" }, "alternateAmiId": { "type": "String", "description": "The alternate AMI to try if this first fails". "default" : "{{amiId}}" }, ...

Expansão de vários níveis

O runbook define uma variável que é avaliada como o nome de uma variável. Ela fica dentro dos delimitadores de variáveis (ou seja, {{ }}) e é expandida para o valor dessa variável/parâmetro.

... "parameters": { "firstParameter": { "type": "String", "default": "param2", "description": "The parameter to reference" }, "secondParameter": { "type": "String", "default" : "echo {Hello world}", "description": "What to run" } }, "mainSteps": [{ "name": "runFixedCmds", "action": "aws:runCommand", "maxAttempts": 1, "onFailure": "Continue", "inputs": { "DocumentName": "AWS-RunPowerShellScript", "InstanceIds" : "{{LaunchInstance.InstanceIds}}", "Parameters": { "commands": [ "{{ {{firstParameter}} }}"] } ... Note: The customer intention here would be to run a command of "echo {Hello world}"

Referenciar a saída de uma etapa do runbook que é um tipo de variável diferente

O usuário faz referência à saída de uma etapa do runbook anterior em uma etapa subsequente. A saída é um tipo de variável que não atende aos requisitos da ação na etapa subsequente.

... mainSteps: - name: getImageId action: aws:executeAwsApi inputs: Service: ec2 Api: DescribeImages Filters: - Name: "name" Values: - "{{ImageName}}" outputs: - Name: ImageIdList Selector: "$.Images" Type: "StringList" - name: copyMyImages action: aws:copyImage maxAttempts: 3 onFailure: Abort inputs: SourceImageId: {{getImageId.ImageIdList}} SourceRegion: ap-northeast-2 ImageName: Encrypted Copies of LAMP base AMI in ap-northeast-2 Encrypted: true ... Note: You must provide the type required by the Automation action. In this case, aws:copyImage requires a "String" type variable but the preceding step outputs a "StringList" type variable.