Variables del sistema de Automation - AWS Systems Manager

Variables del sistema de Automation

Los manuales de procedimientos de AWS Systems Manager Automation usan las siguientes variables. En el código fuente JSON del manual de procedimientos AWS-UpdateWindowsAmi, puede ver un ejemplo de cómo se usan estas variables.

Para ver el código fuente JSON del manual de procedimientos AWS-UpdateWindowsAmi
  1. Abra la consola de AWS Systems Manageren https://console.aws.amazon.com/systems-manager/.

  2. En el panel de navegación, elija Documentos.

  3. En la lista de documentos, utilice la barra de búsqueda o los números que se encuentran a la derecha de la barra de búsqueda para seleccionar el manual de procedimientos AWS-UpdateWindowsAmi.

  4. Elija la pestaña Content.

Variables del sistema

Los manuales de procedimientos de Automation admiten las siguientes variables del sistema.

Variable Detalles

global:ACCOUNT_ID

El ID de la Cuenta de AWS del usuario o el rol donde se ejecuta Automatización.

global:DATE

La fecha (en el tiempo de ejecución) con el formato aaaa-MM-dd.

global:DATE_TIME

La fecha y la hora (en el tiempo de ejecución) con el formato aaaa-MM-dd_HH.mm.ss.

global:AWS_PARTITION

Partición en la que se encuentra el recurso. Para las Regiones de AWS estándar, la partición es aws. Para los recursos en otras particiones, la partición es aws-partitionname. Por ejemplo, la partición de los recursos de la región AWS GovCloud (EE. UU. Oeste) es aws-us-gov.

global:REGION

La región en la que se ejecuta el manual de procedimientos. Por ejemplo, us-east-2.

Variables de Automation

Los manuales de procedimientos de Automation admiten las siguientes variables de la automatización.

Variable Detalles

automation:EXECUTION_ID

El identificador único asignado a la automatización actual. Por ejemplo, 1a2b3c-1a2b3c-1a2b3c-1a2b3c1a2b3c1a2b3c.

Terminología

Los siguientes términos describen cómo se resuelven las variables y los parámetros.

Plazo Definición Ejemplo

ARN constante

Un nombre de recurso de Amazon (ARN) válido sin variables.

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

Parámetro del manual de procedimientos

Un parámetro definido en el nivel del manual de procedimientos (por ejemplo, instanceId). El parámetro se utiliza en un reemplazo de cadena básica. Su valor se proporciona en el tiempo de ejecución de inicio.

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

Variable del sistema

Una variable general que se sustituye en el manual de procedimientos cuando se evalúa cualquiera de sus partes.

"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}}" } } ]

Variable de Automation

Una variable relacionada con la automatización que se sustituye en el manual de procedimientos cuando se evalúa cualquier parte del manual.

{ "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 de Systems Manager

Un variable definida en AWS Systems Manager Parameter Store. No se puede referenciar directamente en la entrada de paso. Es posible que se requieran permisos para acceder al 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}}' ...

Escenarios admitidos

Escenario Comentarios Ejemplo

ARN constante assumeRole en la creación.

Se lleva a cabo una comprobación de autenticación para verificar que el usuario que realiza la llamada tiene permiso para pasar el assumeRole indicado.

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

Parámetro de manual de procedimientos suministrado para AssumeRole cuando se inicia la automatización.

Se debe definir en la lista de parámetros del manual de procedimientos.

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

Valor proporcionado para el parámetro del manual de procedimientos en el inicio.

El cliente proporciona el valor que se usará para un parámetro. Las entradas suministradas en el inicio deben estar definidas en la lista de parámetros del manual de procedimientos.

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

Las entradas en la ejecución de automatización de inicio incluyen: {"amiId" : ["ami-12345678"] }

Parámetro de Systems Manager que se referencia en el contenido del manual de procedimientos.

La variable existe dentro de la cuenta del cliente o es un parámetro de acceso público, y el AssumeRole para el manual de procedimientos tiene acceso a la variable. Se lleva a cabo una comprobación en el momento de la creación para confirmar que AssumeRole tiene acceso. No se puede referenciar de manera directa el parámetro en la entrada de paso.

... 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}}' ...

Variable del sistema a la que se hace referencia en la definición del paso

Una variable de sistema se sustituye en el manual de procedimientos cuando se inicia la automatización. El valor inyectado en el manual de procedimientos es relativo al momento en el que se produce la sustitución. Por ejemplo, el valor de una variable de tiempo inyectada en el paso 1 es diferente del valor inyectado en el paso 3 debido al tiempo que se tarda en ejecutar los pasos intermedios. No es necesario que las variables del sistema se establezcan en la lista de parámetros del manual de procedimientos.

... "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}}}" ] } } }, ...

Variable de Automation a la que se hace referencia en la definición del paso.

No es necesario que las variables de Automation se establezcan en la lista de parámetros del manual de procedimientos. La única variable de Automation admitida es automation:EXECUTION_ID.

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

Hacer referencia a la salida del paso anterior en la definición del paso siguiente.

Es el redireccionamiento de parámetros. Se hace referencia a la salida de un paso anterior con la sintaxis {{stepName.OutputName}}. El cliente no puede usar esta sintaxis para los parámetros del manual de procedimientos. Esto se resuelve cuando se ejecuta el paso de la referencia. El parámetro no se incluye en la lista de parámetros del manual de procedimientos.

... "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" } } ...

Escenarios no admitidos

Escenario Comentario Ejemplo

Parámetro de Systems Manager proporcionado para assumeRole en la creación

No admitido.

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

Parámetro de Systems Manager que se referencia de manera directa en la entrada de paso

Devuelve la excepción InvalidDocumentContent en el momento de la creación.

... 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}}' ...

Definición de paso variable

La definición de un paso en el manual de procedimientos se construye a través de variables.

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

Referencia cruzada de los parámetros del manual de procedimientos

El usuario proporciona un parámetro de entrada en el inicio, que es una referencia a otro parámetro del manual de procedimientos.

... "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}}" }, ...

Expansión multinivel

El manual de procedimientos define una variable que toma el nombre de una variable. Se encuentra dentro de los delimitadores de variable (es decir, {{ }}) y se expande al valor de dicho parámetro/variable.

... "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}"

Referencia a la salida de un paso de manual de procedimientos que es un tipo de variable diferente

El usuario referencia la salida de un paso de manual de procedimientos anterior en el paso siguiente. La salida es un tipo de variable que no cumple los requisitos de la acción en el paso siguiente.

... 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.