В исходной версии сценария Python есть ошибка, включенная туда намеренно для обучения отладке сценария.

Необходимые условия

Войдите в учетную запись Amazon Web Services (AWS) и создайте пользователя IAM специально для этого сценария. См. раздел Создание пользователя IAM в учетной записи AWS. У пользователя IAM должны быть следующие разрешения:
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"

Процедура

  1. Подготовьте vRealize Orchestrator Appliance.
    Осторожно!: Не выполняйте отладку сценариев в рабочем развертывании vRealize Orchestrator. Отладку следует выполнять в развертывании vRealize Orchestrator с одним узлом, которое предназначено для разработки и тестирования.
    1. а. Войдите в командную строку vRealize Orchestrator Appliance по протоколу SSH в качестве пользователя root.
    2. б. Выполните команду vracli dev tools.
    3. в. Появится запрос на подтверждение дальнейших действий. Введите yes (да) для продолжения или no (нет) для отмены.
      Важно!: При запуске команды vracli dev tools открываются порты, необходимые для отладки сценария Python. В процессе отладки текущий сеанс SSH должен оставаться открытым.
  2. Запустите конфигурацию отладки.
    1. а. Войдите в клиент vRealize Orchestrator.
    2. б. Откройте действие AWS и нажмите Отладка.
      Начнется процесс отладки, и выполнение действия будет приостановлено.
    3. в. Выберите вкладку Конфигурация отладки.
      Вкладка содержит конфигурацию .json, которую можно удаленно вложить в IDE для отладки сценария Python.
    4. г. Скопируйте содержимое конфигурации вручную или нажмите Копировать в буфер.
  3. Выполните отладку сценария Python.
    1. а. Откройте Visual Studio Code.
    2. б. Откройте папку vro-python-aws.
    3. в. На панели навигации сверху выберите Запустить > Открытые конфигурации.
    4. г. Выберите файл Python.
    5. д. Оставьте атрибуты "version" и "configuration" в текущих позициях и вставьте содержимое .json, скопированное из клиента vRealize Orchestrator. Созданный файл launch.json должен выглядеть примерно следующим образом:
      {
      
          "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. е. Выберите файл сценария main.py и добавьте точку останова в строку ec2 = boto3.resource('ec2') .
    7. ё. На панели навигации сверху выберите Запустить > Начать отладку.
    8. ж. Когда отладчик достигнет точки останова, выполните операцию пропуска.
      При запуске отладки будет указано, что в сценарии Python не хватает указанной области и ключа доступа AWS.
    9. з. Вернитесь в открытый сеанс vRealize Orchestrator Appliance и нажмите клавишу ВВОД, чтобы закрыть порты, открытые для данного сеанса отладки.
  4. Добавьте недостающие сведения в сценарий Python.
    1. а. В Visual Studio Code создайте файл с именем awsconfig, содержащий ключ доступа AWS для пользователя IAM и область AWS для эхо-тестирования с помощью сценария Python.
      [default]
      aws_access_key_id=your key ID
      aws_secret_access_key=your secret access key
      region=your-region
    2. б. Сохраните файл awsconfig как файл конфигурации (.cfg) в папке vro-python-aws.
    3. в. Откройте файл main.py и измените его так, чтобы библиотека boto3 могла использовать файл 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. г. Создайте новый пакет ZIP, содержащий файл main.py, файл awsconfig.cfg и библиотеку boto3.
      zip -r --exclude=*.zip -X vro-python-aws.zip .
      Примечание: Пакет ZIP также можно создать с помощью ZIP-утилиты (например, программы 7-Zip).