A versão original do script do Python tem um erro interno deliberado, para que você possa aprender a depurar o script.

Pré-requisitos

Faça login na sua conta do Amazon Web Services (AWS) e crie um usuário IAM especificamente para esse cenário de caso de uso. Consulte Criando um Usuário IAM na sua Conta do AWS. O usuário IAM deve ter as seguintes permissões:
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"

Procedimento

  1. Prepare o vRealize Orchestrator Appliance.
    Cuidado: Não depure scripts em sua implantação do vRealize Orchestrator de produção. Depure a partir de uma implantação do vRealize Orchestrator de um único nó, que você usa para desenvolvimento e teste.
    1. Faça login na linha de comando do vRealize Orchestrator Appliance sobre o SSH como raiz.
    2. Execute o comando vracli dev tools.
    3. Você será solicitado a confirmar que deseja continuar. Insira sim para continuar ou não para cancelar.
      Importante: Ao executar o comando vracli dev tools, você abre as portas necessárias para depurar o script do Python. Você deve sair da sessão atual do SSH aberta durante o processo de depuração.
  2. Inicie a configuração de depuração.
    1. Faça login no Cliente do vRealize Orchestrator.
    2. Abra a ação AWS e clique em Depurar.
      O processo de depuração começa e a execução da ação é suspensa.
    3. Selecione a guia Configuração de Depuração.
      A guia contém uma configuração .json que você pode anexar remotamente ao IDE para depurar o script do Python.
    4. Copie o conteúdo da configuração manualmente ou clique em Copiar para a Área de Transferência.
  3. Depure o script do Python.
    1. Abra o código do Visual Studio.
    2. Abra a pasta vro-python-aws.
    3. No painel de navegação superior, selecione Executar > Abrir Configurações.
    4. Selecione Arquivo Python.
    5. Deixe os atributos "version" e "configuration" em suas posições atuais e cole o conteúdo da configuração .json copiada do Cliente do vRealize Orchestrator. O arquivo gerado launch.json deve ser semelhante a este:
      {
      
          "version": "0.2.0",
          "configurations": [
              {
                  "request": "attach",
                  "port": 18281,
                  "name": "vRO Python debug 8302f4c7-5beb-40da-848a-5003c0296f7b",
                  "host": "es-sof-vc-vm-225-190.sof-mbu.eng.vmware.com",
                  "type": "python",
                  "pathMappings": [
                    {
                      "localRoot": "${workspaceFolder}",
                      "remoteRoot": "/var/run/vco-polyglot/function"
                  }
              ]
            }
          ]
        }
    6. Selecione o arquivo de script main.py e adicione um ponto de interrupção à linha ec2 = boto3.resource('ec2').
    7. No painel de navegação superior, selecione Executar > Iniciar Depuração.
    8. Quando o depurador atinge o ponto de interrupção, realize uma operação de depuração.
      A execução de depuração indica que o script do Python não tem uma região especificada e a chave de acesso AWS.
    9. Volte para a sessão do vRealize Orchestrator Appliance aberta e pressione Enter para fechar as portas que você abriu para esta sessão de depuração.
  4. Adicione as informações que estão faltando ao script do Python.
    1. No código do Visual Studio, crie um arquivo chamado awsconfig que contém a chave de acesso AWS do usuário IAM e a região de AWS que você deseja executar ping com o script do Python.
      [default]
      aws_access_key_id=your key ID
      aws_secret_access_key=your secret access key
      region=your-region
    2. Salve awsconfig como um arquivo de configuração (.cfg) na pasta vro-python-aws.
    3. Abra o arquivo main.py e modifique-o para que a biblioteca boto3 possa usar o arquivo awsconfig.cfg.
      import boto3
       
      import os
      os.environ['AWS_CONFIG_FILE'] = os.getcwd() + '/awsconfig.cfg'
       
      def handler(context, inputs):
          ec2 = boto3.resource('ec2')
          filters = [{
              'Name': 'instance-state-name',
              'Values': ['running']
          }]
        
          instances = ec2.instances.filter(Filters=filters)
          for instance in instances:
              print('Instance: ' + instance.id)
    4. Crie um novo pacote ZIP que contenha o arquivo main.py, awsconfig.cfg e a biblioteca boto3.
      zip -r --exclude=*.zip -X vro-python-aws.zip .
      Observação: Você também pode criar o pacote ZIP usando uma ferramenta de utilitário ZIP, como 7-Zip.