Python 脚本的原始版本故意设置了一个内置错误,以便于您学习如何调试脚本。

前提条件

登录到您的 Amazon Web Services (AWS) 帐户,并专门为此用例场景创建一个 IAM 用户。请参见 在 AWS 帐户中创建 IAM 用户。该 IAM 用户必须具有以下权限:
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"

过程

  1. 准备 vRealize Orchestrator Appliance。
    小心: 请勿在生产 vRealize Orchestrator 部署中调试脚本。从用于开发和测试的单节点 vRealize Orchestrator 部署中进行调试。
    1. root 用户身份通过 SSH 登录到 vRealize Orchestrator Appliance 命令行。
    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" 属性保留在当前位置,然后粘贴从 vRealize Orchestrator 客户端复制的 .json 配置的内容。生成的 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 会话,然后按 Enter 关闭为此调试会话打开的端口。
  4. 将缺少的信息添加到 Python 脚本。
    1. 在 Visual Studio Code 中,创建一个 awsconfig 文件,其中包含 IAM 用户的 AWS 访问密钥以及要使用 Python 脚本进行 ping 的 AWS 区域。
      [default]
      aws_access_key_id=your key ID
      aws_secret_access_key=your secret access key
      region=your-region
    2. awsconfig 另存为 vro-python-aws 文件夹中的配置 (.cfg) 文件。
    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 实用程序工具(如 7-Zip)创建 ZIP 包。