De oorspronkelijke versie van het Python-script heeft een opzettelijke ingebouwde fout, zodat u kunt leren hoe u fouten in uw script oplost.

Voorwaarden

Meld u aan bij uw AWS-account (Amazon Web Services) en maak een IAM-gebruiker specifiek voor dit gebruiksscenario. Zie Een IAM-gebruiker maken in uw AWS-account. De IAM-gebruiker moet de volgende rechten hebben:
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"

Procedure

  1. Bereid de vRealize Orchestrator Appliance voor.
    Voorzichtig: Voer geen foutopsporing uit in scripts in uw vRealize Orchestrator-productie-implementatie. Voer foutopsporing uit vanaf een vRealize Orchestrator-implementatie met één knooppunt die u gebruikt voor ontwikkeling en tests.
    1. Meld u via SSH aan bij de vRealize Orchestrator Appliance-opdrachtregel als root.
    2. Voer de opdracht vracli dev tools uit.
    3. U wordt gevraagd om te bevestigen dat u wilt doorgaan. Voer Ja in om door te gaan of Nee om te annuleren.
      Belangrijk: Door de opdracht vracli dev tools uit te voeren, opent u de poorten die nodig zijn om fouten op te sporen in het Python-script. U moet de huidige SSH-sessie geopend laten tijdens de foutopsporing.
  2. Start de configuratie van de foutopsporing.
    1. Meld u aan bij de vRealize Orchestrator-client.
    2. Open de actie AWS en klik op Foutopsporing.
      De foutopsporing begint en de actie-uitvoering is opgeschort.
    3. Selecteer het tabblad Configuratie van foutopsporing.
      Het tabblad bevat een .json-configuratie die u op afstand kunt toevoegen aan uw IDE om fouten op te sporen in het Python-script.
    4. Kopieer de configuratie-inhoud handmatig of klik op Naar klembord kopiëren.
  3. Voer foutopsporing uit op het Python-script.
    1. Open Visual Studio Code.
    2. Open de map vro-python-aws.
    3. Selecteer in het bovenste navigatiedeelvenster Uitvoeren > Configuraties openen.
    4. Selecteer Python-bestand.
    5. Laat de kenmerken "version" en "configuration" op hun huidige posities staan en plak de inhoud van de .json-configuratie die is gekopieerd van de vRealize Orchestrator-client. Het gegenereerde launch.json-bestand moet er ongeveer als volgt uitzien:
      {
      
          "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. Selecteer het main.py-scriptbestand en voeg een onderbrekingspunt toe aan de ec2 = boto3.resource('ec2')-regel.
    7. Selecteer in het bovenste navigatiedeelvenster Uitvoeren > Foutopsporing starten.
    8. Wanneer het foutopsporingsprogramma het onderbrekingspunt bereikt, voert u een Stap over-bewerking uit.
      De foutopsporing geeft aan dat het Python-script geen specifieke regio en AWS-toegangssleutel bevat.
    9. Ga terug naar de open vRealize Orchestrator Appliance-sessie en druk op Enter om de poorten te sluiten die u voor deze foutopsporingssessie heeft geopend.
  4. Voeg de ontbrekende informatie toe aan het Python-script.
    1. Maak in Visual Studio Code een bestand met de naam awsconfig dat de AWS-toegangssleutel van de IAM-gebruiker bevat en de AWS-regio die u wilt pingen met het Python-script.
      [default]
      aws_access_key_id=your key ID
      aws_secret_access_key=your secret access key
      region=your-region
    2. Sla awsconfig op als een configuratiebestand (.cfg) in de map vro-python-aws.
    3. Open het bestand main.py en wijzig dit zodat de boto3-bibliotheek het bestand awsconfig.cfg kan gebruiken.
      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. Maak een nieuw ZIP-pakket dat het bestand main.py, het bestand awsconfig.cfg en de boto3-bibliotheek bevat.
      zip -r --exclude=*.zip -X vro-python-aws.zip .
      Opmerking: U kunt ook het ZIP-pakket maken met behulp van een ZIP-hulpprogramma, zoals 7-Zip.