Executar scripts no Amazon S3 - AWS Systems Manager

Executar scripts no Amazon S3

Esta seção descreve como baixar e executar scripts do Amazon Simple Storage Service (Amazon S3). O tópico a seguir inclui informações e terminologia relacionadas ao Amazon S3. Para saber mais sobre o Amazon S3, consulte O que é o Amazon S3? Você pode executar tipos diferentes de script, inclusive scripts do Ansible Playbooks, Python, Ruby, Shell e PowerShell.

Você pode também fazer download de um diretório que inclua vários scripts. Ao executar o script principal no diretório, o AWS Systems Manager executa também qualquer script referenciado que estiver incluído no diretório.

Observe os detalhes essenciais a seguir sobre a execução de scripts do Amazon S3:

  • O Systems Manager não verifica se o script pode ser executado em um nó. Antes de baixar e executar o script, verifique se o software necessário está instalado em seu nó. Ou você pode criar um documento composto que instala o software usando Run Command ou State Manager, recursos do AWS Systems Manager e, depois, baixa e executa o script.

  • Verifique se seu usuário, perfil ou grupo recebeu as permissões do AWS Identity and Access Management (IAM) necessárias para realizar leitura do bucket do S3.

  • Verifique se o perfil de instância nas instâncias do Amazon Elastic Compute Cloud (Amazon EC2) tem as permissões s3:ListBucket e s3:GetObject. Se o perfil de instância não tiver essas permissões, o sistema falhará ao fazer download do script do bucket do S3. Para obter mais informações, consulte Usar perfis de instâncias no Manual do usuário do IAM.

Execute scripts shell no Amazon S3

As informações a seguir incluem procedimentos para ajudar você a executar scripts do Amazon Simple Storage Service (Amazon S3) usando o console do AWS Systems Manager ou a AWS Command Line Interface (AWS CLI). Embora scripts shell sejam usados nos exemplos, outros tipos de scripts podem ser substituídos.

Execute um script shell no Amazon S3 (console)

Execute um script shell no Amazon S3
  1. Abra o console AWS Systems Manager em https://console.aws.amazon.com/systems-manager/.

  2. No painel de navegação, escolha Run Command.

  3. Selecione Run command.

  4. Na lista Command document (Documento do comando), escolha AWS-RunRemoteScript.

  5. Em Command parameters, faça o seguinte:

    • Em Source Type, selecione S3.

    • Na caixa de texto Source Info (Informações da origem) digite as informações necessárias para acessar a origem no seguinte formato: Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

      nota

      Substitua https://s3.aws-api-domain pela URL do bucket. Você pode copiar a URL do bucket no Amazon S3 na guia Objects (Objetos).

      {"path":"https://s3.aws-api-domain/path to script"}

      Veja um exemplo a seguir.

      {"path":"https://DOC-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com/scripts/shell/helloWorld.sh"}
    • No campo Command Line (Linha de comando), digite os parâmetros para a execução do script. Aqui está um exemplo.

      helloWorld.sh argument-1 argument-2
    • (Opcional) No campo Working Directory (Diretório de trabalho), insira o nome de um diretório do nó em que você deseja baixar e executar o script.

    • (Opcional) Em Execution Timeout, especifique o número de segundos para o sistema aguardar antes de a execução do comando de script falhar.

  6. Na seção Targets (Destinos), escolha os nós gerenciados nos quais você quer executar essa operação, especificando as etiquetas, selecionando as instâncias ou dispositivos de borda manualmente ou especificando um grupo de recursos.

    dica

    Se um nó gerenciado que você espera ver não estiver listado, consulte Solução de problemas de disponibilidade do nó gerenciado para obter dicas de solução de problemas.

  7. Para Other parameters (Outros parâmetros):

    • Em Comment (Comentário), digite as informações sobre esse comando.

    • Em Timeout (seconds) (Tempo limite [segundos]), especifique o número de segundos para o sistema aguardar até a falha de execução do comando total.

  8. Para Rate control (Controle de taxa):

    • Em Concurrency (Concorrência), especifique um número ou uma porcentagem de nós gerenciados nos quais executar o comando ao mesmo tempo.

      nota

      Se você selecionou destinos especificando tags aplicadas a instâncias a nós gerenciados ou especificando grupos de recursos da AWS, e não tiver certeza de quantas instâncias são direcionadas, restrinja o número de instâncias que poderão executar o documento ao mesmo tempo, especificando uma porcentagem.

    • Em Error threshold (Limite de erro), especifique quando parar de executar o comando em outros nós depois de falhar em alguns ou em uma porcentagem de nós. Por exemplo, se você especificar três erros, o Systems Manager deixará de enviar o comando quando o 4° erro for recebido. Os nós gerenciados que continuam processando o comando também podem enviar erros.

  9. (Opcional) Em Output options (Opções de saída), para salvar a saída do comando em um arquivo, selecione a caixa Write command output to an S3 bucket (Gravar saída do comando em um bucket do S3). Digite os nomes de bucket e prefixo (pastas) nas caixas de texto.

    nota

    As permissões do S3 que concedem a possibilidade de gravar os dados em um bucket do S3 são as do perfil de instância (para instâncias do EC2) ou perfil de serviço do IAM (máquinas ativadas para ambientes híbridos) atribuído à instância, e não as do usuário do IAM que realiza essa tarefa. Para obter mais informações, consulte Configurar permissões de instância obrigatórias para o Systems Manager ou Criar um perfil de serviço do IAM para um ambiente híbrido. Além disso, se o bucket do S3 especificado estiver em uma conta da Conta da AWS diferente, verifique se o perfil da instância ou a função de serviço do IAM associado ao nó gerenciado tenha as permissões necessárias para gravar nesse bucket.

  10. Na seção SNS notifications (Notificações do SNS), se quiser enviar notificações sobre o status da execução do comando, marque a caixa de seleção Enable SNS notifications (Habilitar notificações do SNS).

    Para obter mais informações sobre a configuração de notificações do Amazon SNS para o Run Command, consulte Monitorar alterações de status do Systems Manager usando as notificações do Amazon SNS.

  11. Escolha Executar.

Executar um script shell no Amazon S3 (linha de comando)

  1. Instale e configure a AWS Command Line Interface (AWS CLI), caso ainda não o tenha feito.

    Para obter informações, consulte Instalar ou atualizar a versão mais recente da AWS CLI.

  2. Execute o seguinte comando . Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

    nota

    Substitua https://s3.aws-api-domain pela URL do bucket. Você pode copiar a URL do bucket no Amazon S3 na guia Objects (Objetos).

    Linux & macOS
    aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --output-s3-bucket-name "bucket-name" \ --output-s3-key-prefix "key-prefix" \ --targets "Key=InstanceIds,Values=instance-id" \ --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/script path\"}"],"commandLine":["script name and arguments"]}'
    Windows
    aws ssm send-command ^ --document-name "AWS-RunRemoteScript" ^ --output-s3-bucket-name "bucket-name" ^ --output-s3-key-prefix "key-prefix" ^ --targets "Key=InstanceIds,Values=instance-id" ^ --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.aws-api-domain/script path\"}',"commandLine"="script name and arguments"
    PowerShell
    Send-SSMCommand ` -DocumentName "AWS-RunRemoteScript" ` -OutputS3BucketName "bucket-name" ` -OutputS3KeyPrefix "key-prefix" ` -Target @{Key="InstanceIds";Values=@("instance-id")} ` -Parameter @{ sourceType="S3";sourceInfo='{"path": "https://s3.aws-api-domain/script path"}',; "commandLine"="script name and arguments"}