

# 监控 AWS Glue
<a name="monitor-glue"></a>

监控是保持 AWS Glue 和您的其他 AWS 解决方案的可靠性、可用性和性能的重要方面。AWS 提供了一些监控工具，您可以用来监控 AWS Glue、在出现错误时进行报告并适时自动采取措施：

您可以使用以下自动化监控工具来监控 AWS Glue 并在出现错误时报告：
+ **Amazon CloudWatch Events** 提供几乎实时的系统事件流，这些事件描述 AWS 资源的更改。CloudWatch Events 支持自动事件驱动型计算。您可以编写规则，以监控某些事件和在这些事件发生时在其他 AWS 服务中触发自动操作。有关更多信息，请参阅 [Amazon CloudWatch Events 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/)。
+ **Amazon CloudWatch Logs** 使您能够监控、存储和访问来自 Amazon EC2 实例、AWS CloudTrail 和其他来源的日志文件。CloudWatch Logs 可以监控日志文件中的信息，并在达到特定阈值时通知您。您还可以在高持久性存储中检索您的日志数据。有关更多信息，请参阅 [Amazon CloudWatch Logs 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)。
+ **AWS CloudTrail** 捕获由您的 AWS 账户或代表该账户发出的 API 调用和相关事件，并将日志文件传输到您指定的 Amazon S3 存储桶。您可以标识哪些用户和账户调用了 AWS、从中发出调用的源 IP 地址以及调用的发生时间。有关更多信息，请参阅[《AWS CloudTrail 用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

此外，您还可以访问 AWS Glue 控制台中的以下见解，以帮助您调试和分析任务：
+ Spark 任务 – 您可以查看所选 CloudWatch 指标系列的可视化效果，而较新的任务可以访问 Spark UI。有关更多信息，请参阅 [监控 AWS Glue Spark 作业](monitor-spark.md)。
+ Ray 任务 – 您可以查看所选 CloudWatch 指标系列的可视化效果。有关更多信息，请参阅 [使用指标监控 Ray 作业](author-job-ray-monitor.md)。

**Topics**
+ [AWS Glue 中的 AWS 标签](monitor-tags.md)
+ [使用 EventBridge 实现 AWS Glue 的自动化](automating-awsglue-with-cloudwatch-events.md)
+ [监控 AWS Glue 资源](monitor-resource-metrics.md)
+ [使用 AWS CloudTrail 记录 AWS Glue API 调用](monitor-cloudtrail.md)

# AWS Glue 中的 AWS 标签
<a name="monitor-tags"></a>

为了便于您管理 AWS Glue 资源，您可以选择将自己的标签分配给某些 AWS Glue 资源类型。标签是为AWS资源分配的标记。每个标签都包含定义的一个键 和一个可选值。您可以在 AWS Glue 中使用标签来组织和标识资源。标签可用于创建成本会计报告并限制对资源的访问。如果您使用的是 AWS Identity and Access Management，则可以控制 AWS 账户中的哪些用户拥有创建、编辑或删除标签的权限。除了调用标签相关的 API 的权限外，您还需要在连接上调用标记 API 的 `glue:GetConnection` 权限以及对数据库调用标记 API 的 `glue:GetDatabase` 权限。有关更多信息，请参阅 [使用 AWS Glue 的 ABAC](security_iam_service-with-iam.md#security_iam_service-with-iam-tags)。

在 AWS Glue 中，您可以为以下资源添加标签：
+ Connection
+ 数据库
+ 爬网程序
+ 交互式会话
+ 开发终端节点
+ 任务
+ 触发器
+ 工作流
+ 蓝图
+ Machine Learning 转换
+ 数据质量规则集
+ 流架构
+ 流架构注册表

**注意**  
作为最佳实践，要允许标记这些 AWS Glue 资源，请始终在您的策略中包含 `glue:TagResource` 操作。

在将标签用于 AWS Glue 时注意以下事项。
+ 每个实体支持最多 50 个标签。
+ 在 AWS Glue 中，您可以将标签指定为格式为 `{"string": "string" ...}` 的键值对列表
+ 在对象上创建标签时，标签键是必需的，而标签值是可选的。
+ 标签键和标签值区分大小写。
+ 标签键和标签值不得包含前缀 *aws*。禁止对此类标签进行操作。
+ 最大标签键长度为 128 个 Unicode 字符 (采用 UTF-8 格式)。标签键不得为空或为 null。
+ 最大标签值长度为 256 个 Unicode 字符 (采用 UTF-8 格式)。标签值可以为空或为 null。

## 对 AWS Glue 连接的标记支持
<a name="tag-connections"></a>

您可以根据资源标签限制 `CreateConnection`、`UpdateConnection`、`GetConnection` 和 `DeleteConnection` 操作权限。这使您能够对需要从数据目录获取 JDBC 连接信息的 JDBC 数据源 AWS Glue 任务实施最低权限访问控制。

**示例用法**  
创建带有标签 ["connection-category", "dev-test"]（“连接-类别”，“开发-测试”）的 AWS Glue 连接。

为 IAM policy 中的 `GetConnection` 操作指定标签条件。

```
{
   "Effect": "Allow",
   "Action": [
     "glue:GetConnection"
     ],
   "Resource": "*",
   "Condition": {
     "ForAnyValue:StringEquals": {
       "aws:ResourceTag/tagKey": "dev-test"
     }
   }
 }
```

## 示例
<a name="TagExamples"></a>

以下示例创建一个具有分配的标签的作业。

**AWS CLI**

```
aws glue create-job --name job-test-tags --role MyJobRole --command Name=glueetl,ScriptLocation=S3://aws-glue-scripts//prod-job1 
--tags key1=value1,key2=value2
```

**CloudFormation JSON**

```
{
  "Description": "AWS Glue Job Test Tags",
  "Resources": {
    "MyJobRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "Service": [
                  "glue.amazonaws.com"
                ]
              },
              "Action": [
                "sts:AssumeRole"
              ]
            }
          ]
        },
        "Path": "/",
        "Policies": [
          {
            "PolicyName": "root",
            "PolicyDocument": {
              "Version": "2012-10-17",		 	 	 
              "Statement": [
                {
                  "Effect": "Allow",
                  "Action": "*",
                  "Resource": "*"
                }
              ]
            }
          }
        ]
      }
    },
    "MyJob": {
      "Type": "AWS::Glue::Job",
      "Properties": {
        "Command": {
          "Name": "glueetl",
          "ScriptLocation": "s3://aws-glue-scripts//prod-job1"
        },
        "DefaultArguments": {
          "--job-bookmark-option": "job-bookmark-enable"
        },
        "ExecutionProperty": {
          "MaxConcurrentRuns": 2
        },
        "MaxRetries": 0,
        "Name": "cf-job1",
        "Role": {
           "Ref": "MyJobRole",
           "Tags": {
                "key1": "value1", 
                "key2": "value2"
           } 
        }
      }
    }
  }
}
```

**CloudFormation YAML**

```
Description: AWS Glue Job Test Tags
Resources:
  MyJobRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - glue.amazonaws.com
            Action:
              - sts:AssumeRole
      Path: "/"
      Policies:
        - PolicyName: root
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action: "*"
                Resource: "*"
  MyJob:
    Type: AWS::Glue::Job
    Properties:
      Command:
        Name: glueetl
        ScriptLocation: s3://aws-glue-scripts//prod-job1
      DefaultArguments:
        "--job-bookmark-option": job-bookmark-enable
      ExecutionProperty:
        MaxConcurrentRuns: 2
      MaxRetries: 0
      Name: cf-job1
      Role:
        Ref: MyJobRole
        Tags:
           key1: value1
           key2: value2
```

有关更多信息，请参阅 [AWS 标记策略](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/)。

有关如何使用标签控制访问的信息，请参阅 [使用 AWS Glue 的 ABAC](security_iam_service-with-iam.md#security_iam_service-with-iam-tags)。

# 使用 EventBridge 实现 AWS Glue 的自动化
<a name="automating-awsglue-with-cloudwatch-events"></a>

您可以使用 Amazon EventBridge 自动执行自己的 AWS 服务并自动响应系统事件，例如应用程序可用性问题或资源更改。AWS 服务中的事件将近乎实时传输到 EventBridge。您可以编写简单规则来指示您关注的事件，并指示要在事件匹配规则时执行的自动化操作。可自动触发的操作包括：
+ 调用 AWS Lambda 函数
+ 调用 Amazon EC2 Run Command
+ 将事件中继到 Amazon Kinesis Data Streams
+ 激活 AWS Step Functions 状态机
+ 通知 Amazon SNS 主题或 Amazon SQS 队列

将 EventBridge 与 AWS Glue 结合使用的部分示例如下：
+ 当 ETL 任务成功时激活 Lambda 函数
+ 当 ETL 任务失败时通知 Amazon SNS 主题

以下 EventBridge 由 AWS Glue 生成。
+ 针对 `SUCCEEDED`、`FAILED`、`TIMEOUT` 和 `STOPPED` 生成的 `"detail-type":"Glue Job State Change"` 事件。
+ 当超过作业延迟通知阈值时，则会针对 `RUNNING`、`STARTING` 和 `STOPPING` 作业运行生成 `"detail-type":"Glue Job Run Status"` 事件。必须设置作业延迟通知阈值属性才能接收这些事件。

  当超过作业延迟通知阈值时，每个作业运行状态仅生成一个事件。
+ 针对 `Started`、`Succeeded` 和 `Failed` 生成 `"detail-type":"Glue Crawler State Change"` 事件。
+ 计划的爬网程序启动失败时，会生成 `“detail_type”:“Glue Scheduled Crawler Invocation Failure”` 事件。在通知的详细信息中：
  + `customerId` 包含客户的账户 ID。
  + `crawlerName` 包含启动失败的爬网程序的名称。
  + `errorMessage` 包含调用失败的异常消息。
+ 自动管理的列统计数据任务运行启动失败时，会生成 `“detail_type”:“Glue Auto Statistics Invocation Failure“` 事件。在通知的详细信息中：
  + `catalogId` 包含与目录关联的 ID。
  + `databaseName` 包含受影响数据库的名称。
  + `tableName` 包含受影响表的名称。
  + `errorMessage` 包含调用失败的异常消息。
+ (cron) 计划的列统计数据任务运行启动失败时，会生成 `“detail_type”:“Glue Scheduled Statistics Invocation Failure”` 事件。在通知的详细信息中：
  + `catalogId` 包含与目录关联的 ID。
  + `databaseName` 包含受影响数据库的名称。
  + `tableName` 包含受影响表的名称。
  + `errorMessage` 包含调用失败的异常消息。
+ 列统计数据任务运行开始时，会生成 `“detail_type”:“Glue Statistics Task Started”` 事件。
+ 列统计数据任务运行成功时，会生成 `“detail_type”:“Glue Statistics Task Succeeded”` 事件。
+ 列统计数据任务运行失败时，会生成 `“detail_type”:“Glue Statistics Task Failed”` 事件。
+ 针对 `CreateDatabase`、`DeleteDatabase`、`CreateTable`、`DeleteTable` 和 `BatchDeleteTable` 生成 `"detail-type":"Glue Data Catalog Database State Change"` 的事件。例如，如果创建或删除表，系统会向 EventBridge 发送一条通知。请注意，您不能编写取决于通知事件的顺序或存在的程序，因为它们可能是乱序或缺失的。尽最大努力发出事件。在通知的详细信息中：
  + `typeOfChange` 包含 API 操作的名称。
  + `databaseName` 包含受影响数据库的名称。
  + `changedTables` 对于每个通知最多包含 100 个受影响的表的名称。当表名称过长时，可创建多个通知。
+ 针对 `UpdateTable`、`CreatePartition`、`BatchCreatePartition`、`UpdatePartition`、`DeletePartition`、`BatchUpdatePartition` 和 `BatchDeletePartition` 生成的 `"detail-type":"Glue Data Catalog Table State Change"` 事件。例如，如果更新表或分区，系统会向 EventBridge 发送一条通知。请注意，您不能编写取决于通知事件的顺序或存在的程序，因为它们可能是乱序或缺失的。尽最大努力发出事件。在通知的详细信息中：
  + `typeOfChange` 包含 API 操作的名称。
  + `databaseName` 包含其中包含受影响资源的数据库的名称。
  + `tableName` 包含受影响的表的名称。
  + `changedPartitions` 在一条通知中最多指定 100 个受影响的分区。当分区名称过长时，可创建多个通知。

    例如，如果有两个分区键 `Year` 和 `Month`，则 `"2018,01", "2018,02"` 会修改分区（其中 `"Year=2018" and "Month=01"`）和分区（其中 `"Year=2018" and "Month=02"`）。

    ```
    {
        "version":"0",
        "id":"abcdef00-1234-5678-9abc-def012345678",
        "detail-type":"Glue Data Catalog Table State Change",
        "source":"aws.glue",
        "account":"123456789012",
        "time":"2017-09-07T18:57:21Z",
        "region":"us-west-2",
        "resources":["arn:aws:glue:us-west-2:123456789012:database/default/foo"],
        "detail":{
            "changedPartitions": [
                "2018,01",
                "2018,02"
            ],
            "databaseName": "default",
            "tableName": "foo",
            "typeOfChange": "BatchCreatePartition"
            }
    }
    ```

有关更多信息，请参阅 [Amazon CloudWatch Events 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/)。有关特定于 AWS Glue 的事件，请参阅 [AWS Glue 事件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#glue-event-types)。

# 监控 AWS Glue 资源
<a name="monitor-resource-metrics"></a>

AWS Glue 具有服务限制，可保护客户免受意外过度配置和旨在增加账单的恶意行为的侵害。这些限制还可以保护服务。登录 AWS Service Quota 控制台，客户可以查看其当前的资源限制并请求增加限额（如适用）。

AWS Glue 允许您在 Amazon CloudWatch 中以百分比形式查看服务的资源使用情况，并在其上配置 CloudWatch 警报以监控使用情况。Amazon CloudWatch 提供对在 Amazon 基础设施上运行的 AWS 资源和客户应用程序的监控。您可以免费使用这些指标。支持以下指标：
+ 每个账户的工作流数量
+ 每个账户的触发器数
+ 每个账户的任务数
+ 每个账户的并发作业运行数
+ 每个账户的蓝图数量
+ 每个账户的互动会话次数

## 配置和使用资源指标
<a name="monitor-resource-metrics"></a>

要使用此功能，您可以前往 Amazon CloudWatch 控制台查看指标并配置警报。这些指标位于 AWS/Glue 命名空间下，是实际资源使用计数除以资源限额的百分比。CloudWatch 指标将发送到您的账户，这对您来说是免费的。例如，如果您创建了 10 个工作流程，并且您的服务限额允许最多拥有 200 个工作流程，则您的使用量为 10/200 = 5%，在图表中，您将看到一个百分比为 5 的数据点。更具体地说：

```
Namespace: AWS/Glue
Metric name: ResourceUsage
Type: Resource
Resource: Workflow (or Trigger, Job, JobRun, Blueprint, InteractiveSession)
Service: Glue
Class: None
```

![\[资源指标\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/resource_monitoring_1.png)


在 CloudWatch 控制台中针对指标创建警报

1. 找到指标后，转到**绘成图表的指标**。

1. 单击**操作**下的**创建警报**。

1. 根据需要配置警报。

每当您的资源使用量发生变化（例如增加或减少）时，我们都会发布指标。但是，如果您的资源使用量没有变化，我们会每小时发布一次指标，这样您就可以获得连续的 CloudWatch 图表。为避免丢失数据点，我们建议您不要配置少于 1 小时的时间段。

您也可以使用 AWS CloudFormation 配置警报，如以下示例所示。在本例中，一旦工作流程资源使用量达到 80%，就会触发警报，向现有 SNS 主题发送消息，您可以订阅该主题以获取通知。

```
{
	"Type": "AWS::CloudWatch::Alarm",
	"Properties": {
		"AlarmName": "WorkflowUsageAlarm",
		"ActionsEnabled": true,
		"OKActions": [],
		"AlarmActions": [
			"arn:aws:sns:af-south-1:085425700061:Default_CloudWatch_Alarms_Topic"
		],
		"InsufficientDataActions": [],
		"MetricName": "ResourceUsage",
		"Namespace": "AWS/Glue",
		"Statistic": "Maximum",
		"Dimensions": [{
				"Name": "Type",
				"Value": "Resource"
			},
			{
				"Name": "Resource",
				"Value": "Workflow"
			},
			{
				"Name": "Service",
				"Value": "Glue"
			},
			{
				"Name": "Class",
				"Value": "None"
			}
		],
		"Period": 3600,
		"EvaluationPeriods": 1,
		"DatapointsToAlarm": 1,
		"Threshold": 80,
		"ComparisonOperator": "GreaterThanThreshold",
		"TreatMissingData": "notBreaching"
	}
}
```

# 使用 AWS CloudTrail 记录 AWS Glue API 调用
<a name="monitor-cloudtrail"></a>

AWS Glue 与 AWS CloudTrail 集成，后者是在 AWS 中记录用户、角色或 AWS Glue 服务所执行操作的服务。CloudTrail 将 AWS Glue 的所有 API 调用作为事件捕获。捕获的调用包含来自 AWS Glue 控制台和代码的 AWS Glue API 操作调用。如果您创建跟踪，则可以使 CloudTrail 事件持续传送到 Amazon S3 存储桶（包括 AWS Glue 的事件）。如果您不配置跟踪记录，则仍可在 CloudTrail 控制台中的**事件历史记录**中查看最新事件。使用 CloudTrail 收集的信息，您可以确定向 AWS Glue 发出了什么请求、发出请求的 IP 地址、何人发出的请求、请求的发出时间以及其他详细信息。

要了解有关 CloudTrail 的更多信息，请参阅[AWS CloudTrail用户指南](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

## CloudTrail 中的 AWS Glue 信息
<a name="monitor-cloudtrail-info"></a>

在您创建 AWS 账户时，将在该账户上启用 CloudTrail。当 AWS Glue 中发生活动时，该活动将记录在 CloudTrail 事件中，并与其他 AWS 服务事件一同保存在**事件历史记录** 中。您可以在 AWS 账户中查看、搜索和下载最新事件。有关更多信息，请参阅[使用 CloudTrail 事件历史记录查看事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

要持续记录 AWS 账户中的事件（包括 AWS Glue 的事件），请创建跟踪。通过*跟踪记录*，CloudTrail 可将日志文件传送至 Amazon S3 存储桶。预设情况下，在控制台中创建跟踪时，此跟踪应用于所有 AWS 区域。此跟踪记录在 AWS 分区中记录所有区域中的事件，并将日志文件传送至您指定的 Amazon S3 存储桶。此外，您可以配置其他 AWS 服务，进一步分析在 CloudTrail 日志中收集的事件数据并采取行动。有关更多信息，请参阅下列内容：
+ [为您的 AWS 账户创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支持的服务和集成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [为 CloudTrail 配置 Amazon SNS 通知](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [从多个区域接收 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)和[从多个账户接收 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

所有 AWS Glue 操作都由 CloudTrail 记录，并记录在 [AWS Glue API](aws-glue-api.md) 中。例如，对 `CreateDatabase`、`CreateTable` 和 `CreateScript` 操作的调用会在 CloudTrail 日志文件中生成条目。

每个事件或日志条目都包含有关生成请求的人员信息。身份信息可帮助您确定以下内容：
+ 请求是使用根用户凭证还是 IAM 用户凭证发出的。
+ 请求是使用角色还是联合用户的临时安全凭证发出的。
+ 请求是否由其他 AWS 服务发出。

有关更多信息，请参阅 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

但是，CloudTrail 不记录有关调用的所有信息。例如，它不会记录某些敏感信息 (如在连接请求中使用的 `ConnectionProperties`)，而且它记录 `null` 而不是以下 API 返回的响应：

```
BatchGetPartition       GetCrawlers          GetJobs          GetTable
CreateScript            GetCrawlerMetrics    GetJobRun        GetTables
GetCatalogImportStatus  GetDatabase          GetJobRuns       GetTableVersions
GetClassifier           GetDatabases         GetMapping       GetTrigger
GetClassifiers          GetDataflowGraph     GetObjects       GetTriggers
GetConnection           GetDevEndpoint       GetPartition     GetUserDefinedFunction
GetConnections          GetDevEndpoints      GetPartitions    GetUserDefinedFunctions
GetCrawler              GetJob               GetPlan
```

## 了解 AWS Glue 日志文件条目
<a name="monitor-cloudtrail-logs"></a>

跟踪记录是一种配置，可用于将事件作为日志文件传送到您指定的 Simple Storage Service（Amazon S3）存储桶。CloudTrail 日志文件包含一个或多个记录条目。一个事件表示来自任何源的一个请求，包括有关所请求的操作、操作的日期和时间、请求参数等方面的信息。CloudTrail 日志文件不是公用 API 调用的有序堆栈跟踪，因此它们不会按任何特定顺序显示。

下面的示例显示了一个 CloudTrail 日志条目，该条目演示了 `DeleteCrawler` 操作。

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AKIAIOSFODNN7EXAMPLE",
    "arn": "arn:aws:iam::123456789012:user/johndoe",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "userName": "johndoe"
  },
  "eventTime": "2017-10-11T22:29:49Z",
  "eventSource": "glue.amazonaws.com",
  "eventName": "DeleteCrawler",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "72.21.198.64",
  "userAgent": "aws-cli/1.11.148 Python/3.6.1 Darwin/16.7.0 botocore/1.7.6",
  "requestParameters": {
    "name": "tes-alpha"
  },
  "responseElements": null,
  "requestID": "b16f4050-aed3-11e7-b0b3-75564a46954f",
  "eventID": "e73dd117-cfd1-47d1-9e2f-d1271cad838c",
  "eventType": "AwsApiCall",
  "recipientAccountId": "123456789012"
}
```

此示例显示了一个 CloudTrail 日志条目，该条目说明了 `CreateConnection` 操作。

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AKIAIOSFODNN7EXAMPLE",
    "arn": "arn:aws:iam::123456789012:user/johndoe",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "userName": "johndoe"
  },
  "eventTime": "2017-10-13T00:19:19Z",
  "eventSource": "glue.amazonaws.com",
  "eventName": "CreateConnection",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "72.21.198.66",
  "userAgent": "aws-cli/1.11.148 Python/3.6.1 Darwin/16.7.0 botocore/1.7.6",
  "requestParameters": {
    "connectionInput": {
      "name": "test-connection-alpha",
      "connectionType": "JDBC",
      "physicalConnectionRequirements": {
        "subnetId": "subnet-323232",
        "availabilityZone": "us-east-1a",
        "securityGroupIdList": [
          "sg-12121212"
        ]
      }
    }
  },
  "responseElements": null,
  "requestID": "27136ebc-afac-11e7-a7d6-ab217e5c3f19",
  "eventID": "e8b3baeb-c511-4597-880f-c16210c60a4a",
  "eventType": "AwsApiCall",
  "recipientAccountId": "123456789012"
}
```