aws:executeScript – Executa um script - AWS Systems Manager

aws:executeScript – Executa um script

Executa o script do Python ou PowerShell fornecido, usando o runtime e o handler especificados. Cada ação aws:executeScript pode ser executada por uma duração máxima de dez minutos (600 segundos). Você pode limitar o tempo limite especificando o parâmetro timeoutSeconds para uma etapa aws:executeScript.

Use instruções de retorno em sua função para adicionar saídas à carga útil da saída. Para obter exemplos de definição de saídas para sua ação aws:executeScript, consulte Exemplo 2: Runbook com script. Também é possível enviar o resultado das ações do aws:executeScript nos runbooks para o grupo de logs do Amazon CloudWatch Logs especificado. Para ter mais informações, consulte Registro de saída de ações do Automation em log com o CloudWatch Logs.

Se quiser enviar a saída de ações aws:executeScript ao CloudWatch Logs ou se os scripts que você especificar para ações aws:executeScript chamarem opções de API da AWS, um perfil de serviço do AWS Identity and Access Management (IAM) (ou uma função de recepção) sempre será necessário para executar o runbook.

A ação aws:executeScript contém os módulos pré-instalados do PowerShell Core a seguir.

  • Microsoft.PowerShell.Host

  • Microsoft.PowerShell.Management

  • Microsoft.PowerShell.Security

  • Microsoft.PowerShell.Utility

  • PackageManagement

  • PowerShellGet

Para usar módulos do PowerShell Core que não estão pré-instalados, o script deve instalar o módulo com o sinalizador -Force, conforme mostrado no comando a seguir. Não há suporte ao módulo AWSPowerShell.NetCore. Substitua ModuleName pelo nome do módulo que deseja instalar.

Install-Module ModuleName -Force

Para usar cmdlets do PowerShell Core em seu script, recomendamos o uso dos módulos AWS.Tools, conforme mostrado nos comandos a seguir. Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

  • Cmdlets do Amazon S3.

    Install-Module AWS.Tools.S3 -Force Get-S3Bucket -BucketName amzn-s3-demo-bucket
  • cmdlets do Amazon EC2

    Install-Module AWS.Tools.EC2 -Force Get-EC2InstanceStatus -InstanceId instance-id
  • cmdlets do AWS Tools for Windows PowerShell comuns ou independentes de serviço.

    Install-Module AWS.Tools.Common -Force Get-AWSRegion

Se o script inicializar novos objetos além de usar cmdlets do PowerShell Core, você também deverá importar o módulo conforme mostrado no comando a seguir.

Install-Module AWS.Tools.EC2 -Force Import-Module AWS.Tools.EC2 $tag = New-Object Amazon.EC2.Model.Tag $tag.Key = "Tag" $tag.Value = "TagValue" New-EC2Tag -Resource i-02573cafcfEXAMPLE -Tag $tag

Para obter exemplos de instalação e importação dos módulos AWS.Tools e do uso de cmdlets do PowerShell Core em runbooks, consulte Experiência de design visual para runbooks de automação.

Entrada

Forneça as informações necessárias para executar o script. Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

nota

O anexo de um script Python pode ser um arquivo .py ou um arquivo .zip contendo o script. É necessário armazenar os scripts do PowerShell em arquivos .zip.

YAML
action: "aws:executeScript" inputs: Runtime: runtime Handler: "functionName" InputPayload: scriptInput: '{{parameterValue}}' Script: |- def functionName(events, context): ... Attachment: "scriptAttachment.zip"
JSON
{ "action": "aws:executeScript", "inputs": { "Runtime": "runtime", "Handler": "functionName", "InputPayload": { "scriptInput": "{{parameterValue}}" }, "Attachment": "scriptAttachment.zip" } }
Runtime

A linguagem do runtime a ser usado para executar o script fornecido. O aws:executeScript oferece suporte a scripts Python 3.7 (python3.7), Python 3.8 (python3.8), Python 3.9 (python3.9)Python 3.10 (python3.10), Python 3.11 (python3.11) PowerShell Core 6.0 (dotnetcore2.1) e PowerShell 7.0 (dotnetcore3.1).

Valores compatíveis: python3.7 | python3.8 | python3.9 | python3.10 | python3.11 | PowerShell Core 6.0 | PowerShell 7.0

Tipo: string

Obrigatório: Sim

Manipulador

Escolha o nome da função. É necessário garantir que a função definida no manipulador tenha dois parâmetros, events e context. O runtime do PowerShell não oferece suporte a este parâmetro.

Tipo: string

Obrigatório: sim (Python) | sem suporte (PowerShell)

InputPayload

Um objeto JSON ou YAML que será passado para o primeiro parâmetro do manipulador. Isso pode ser usado para passar dados de entrada para o script.

Tipo: string

Obrigatório: não

Python
description: Tag an instance schemaVersion: '0.3' assumeRole: '{{AutomationAssumeRole}}' parameters: AutomationAssumeRole: type: String description: '(Required) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.' InstanceId: type: String description: (Required) The ID of the EC2 instance you want to tag. mainSteps: - name: tagInstance action: 'aws:executeScript' inputs: Runtime: "python3.8" Handler: tagInstance InputPayload: instanceId: '{{InstanceId}}' Script: |- def tagInstance(events,context): import boto3 #Initialize client ec2 = boto3.client('ec2') instanceId = events['instanceId'] tag = { "Key": "Env", "Value": "Example" } ec2.create_tags( Resources=[instanceId], Tags=[tag] )
PowerShell
description: Tag an instance schemaVersion: '0.3' assumeRole: '{{AutomationAssumeRole}}' parameters: AutomationAssumeRole: type: String description: '(Required) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.' InstanceId: type: String description: (Required) The ID of the EC2 instance you want to tag. mainSteps: - name: tagInstance action: 'aws:executeScript' inputs: Runtime: PowerShell 7.0 InputPayload: instanceId: '{{InstanceId}}' Script: |- Install-Module AWS.Tools.EC2 -Force Import-Module AWS.Tools.EC2 $input = $env:InputPayload | ConvertFrom-Json $tag = New-Object Amazon.EC2.Model.Tag $tag.Key = "Env" $tag.Value = "Example" New-EC2Tag -Resource $input.instanceId -Tag $tag
Script

Um script incorporado que você precisa executar durante a execução da automação.

Tipo: string

Obrigatório: não (Python) | sim (PowerShell)

Attachment

O nome de um arquivo de script autônomo ou arquivo .zip que pode ser invocado pela ação. Especifique o mesmo valor do Name do arquivo de anexo de documento especificado no parâmetro de solicitação de Attachments. Para obter mais informações, consulte Anexos na Referência de API do AWS Systems Manager. Se você estiver fornecendo um script usando um anexo, você deverá definir uma seção files nos elementos de nível superior do seu runbook. Para ter mais informações, consulte Versão 0.3 do esquema.

Para invocar um arquivo para Python, use o formato filename.method_name no Handler.

nota

O anexo de um script Python pode ser um arquivo .py ou um arquivo .zip contendo o script. É necessário armazenar os scripts do PowerShell em arquivos .zip.

Ao incluir bibliotecas Python em seu anexo, recomendamos adicionar um arquivo __init__.py em cada diretório do módulo. Isso permite que você importe os módulos da biblioteca em seu anexo dentro do conteúdo do script. Por exemplo: from library import module

Tipo: string

Obrigatório: Não

Saída
Carga útil

A representação JSON do objeto retornado pela função. Até 100 KB é retornado. Se você gerar uma lista, haverá o retorno de no máximo de 100 itens.