Nella versione originale dello script Python è stato integrato intenzionalmente un errore che consente di imparare come eseguire il debug dello script.

Prerequisiti

Accedere all'account Amazon Web Services (AWS) e creare un utente IAM specifico per lo scenario di questo caso d'uso. Vedere Creazione di un utente IAM nell'account AWS. L'utente IAM deve disporre delle autorizzazioni seguenti:
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"

Procedura

  1. Preparare vRealize Orchestrator Appliance.
    Attenzione: Non eseguire il debug degli script nella distribuzione di produzione di vRealize Orchestrator. Eseguire il debug in una distribuzione di vRealize Orchestrator con un solo nodo, utilizzata a scopo di sviluppo e test.
    1. Accedere alla riga di comando di vRealize Orchestrator Appliance tramite SSH come root.
    2. Eseguire il comando vracli dev tools.
    3. Viene richiesto di confermare se si desidera continuare. Immettere yes per continuare, oppure no per annullare l'operazione.
      Importante: Se si esegue il comando vracli dev tools, vengono aperte le porte necessarie per eseguire il debug dello script Python. Durante il processo di debug, è necessario lasciare aperta la sessione SSH corrente.
  2. Avviare la configurazione del debug.
    1. Accedere a vRealize Orchestrator Client.
    2. Aprire l'azione di AWS e fare clic su Debug.
      Il processo di debug inizia e l'esecuzione dell'azione viene sospesa.
    3. Selezionare la scheda Configurazione debug.
      La scheda contiene una configurazione .json che è possibile collegare in remoto all'IDE per eseguire il debug dello script Python.
    4. Copiare manualmente il contenuto della configurazione oppure fare clic su Copia negli Appunti.
  3. Eseguire il debug dello script Python.
    1. Aprire Visual Studio Code.
    2. Aprire la cartella vro-python-aws.
    3. Nel riquadro di spostamento superiore, selezionare Esegui > Apri configurazioni.
    4. Selezionare File Python.
    5. Lasciare gli attributi "version" e "configuration" nelle posizioni correnti e incollare il contenuto della configurazione .json copiato da vRealize Orchestrator Client. Il file launch.json generato deve essere simile al seguente:
      {
      
          "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. Selezionare il file di script main.py e aggiungere un punto di interruzione alla riga ec2 = boto3.resource('ec2').
    7. Nel riquadro di spostamento superiore, selezionare Esegui > Avvia debug.
    8. Quando il debugger raggiunge il punto di interruzione, eseguire un'operazione stepover.
      L'esecuzione del debug indica che nello script Python manca una regione specifica e la chiave di accesso di AWS.
    9. Tornare alla sessione di vRealize Orchestrator Appliance aperta e premere Invio per chiudere le porte aperte per questa sessione di debug.
  4. Aggiungere le informazioni mancanti nello script Python.
    1. In Visual Studio Code, creare un file denominato awsconfig che contenga la chiave di accesso di AWS dell'utente IAM e la regione di AWS in cui si desidera eseguire il ping con lo script Python.
      [default]
      aws_access_key_id=your key ID
      aws_secret_access_key=your secret access key
      region=your-region
    2. Salvare awsconfig come file di configurazione (.cfg) nella cartella vro-python-aws.
    3. Aprire il file main.py e modificarlo in modo che la libreria boto3 possa utilizzare il file 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. Creare un nuovo pacchetto ZIP contenente il file main.py, il file awsconfig.cfg e la libreria boto3.
      zip -r --exclude=*.zip -X vro-python-aws.zip .
      Nota: È inoltre possibile creare il pacchetto ZIP utilizzando uno strumento dell'utilità ZIP, ad esempio 7-Zip.