

# 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` 권한도 필요합니다. 자세한 내용은 [ABAC와 AWS Glue](security_iam_service-with-iam.md#security_iam_service-with-iam-tags) 섹션을 참조하세요.

AWS Glue에서 다음 리소스에 태그를 지정할 수 있습니다.
+ 연결
+ 데이터베이스
+ 크롤러
+ 대화형 세션
+ 개발 엔드포인트
+ 작업
+ 트리거
+ 워크플로
+ 청사진
+ 기계 학습 변환
+ 데이터 품질 규칙 세트
+ 스트림 스키마
+ 스트림 스키마 레지스트리

**참고**  
이러한 AWS Glue 리소스의 태그 지정이 가능하도록 모범 사례로서 정책에 항상 `glue:TagResource` 작업을 포함시킵니다.

AWS Glue에서 태그를 사용할 때 다음을 고려하십시오.
+ 엔터티당 최대 50개의 태그가 지원됩니다.
+ AWS Glue에서 `{"string": "string" ...}` 포맷의 키-값 페어 목록으로 태그를 지정합니다.
+ 객체에서 태그를 생성할 때 태그 키는 필수이고 태그 값은 선택 사항입니다.
+ 태그 키와 태그 값은 대/소문자를 구분합니다.
+ 태그 키와 태그 값은 접두사 *aws*를 포함하지 않아야 합니다. 이러한 태그에서 어떤 작업도 허용되지 않습니다.
+ 태그 키의 최대 길이는 UTF-8 형식의 유니코드 문자 128자입니다. 태그 키는 비어 있거나 null이면 안 됩니다.
+ 태그 값의 최대 길이는 UTF-8 형식의 유니코드 문자 256자입니다. 태그 값은 비어 있거나 null일 수 있습니다.

## AWS Glue 연결에 대한 태깅 지원
<a name="tag-connections"></a>

리소스 태그를 기준으로 `CreateConnection`, `UpdateConnection`, `GetConnection` 및 `DeleteConnection` 작업 권한을 제한할 수 있습니다. 이렇게 하면 Data Catalog에서 JDBC 연결 정보를 가져와야 하는 JDBC 데이터 원본을 사용하는 AWS Glue 작업에 최소 권한 액세스 제어를 구현할 수 있습니다.

**사용 예**  
["connection-category", "dev-test"] 태그를 사용하여 AWS Glue 연결을 생성합니다.

IAM 정책에서 `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/)을 참조하세요.

태그를 이용한 액세스 제어 방법에 대한 자세한 내용은 [ABAC와 AWS Glue](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에 의해 생성됩니다.
+ `"detail-type":"Glue Job State Change"` 이벤트는 `SUCCEEDED`, `FAILED`, `TIMEOUT` 및 `STOPPED`에 대해 생성됩니다.
+ 작업 지연 알림 임곗값을 초과한다면 `RUNNING`, `STARTING` 및 `STOPPING` 작업 실행에 `"detail-type":"Glue Job Run Status"`용 이벤트가 생성됩니다. 이러한 이벤트를 수신하려면 작업 지연 알림 임계값 속성을 설정해야 합니다.

  작업 지연 알림 임계값을 초과한 경우 작업 실행 상태당 하나의 이벤트만 생성됩니다.
+ `"detail-type":"Glue Crawler State Change"` 이벤트는 `Started`, `Succeeded` 및 `Failed`을 위해 발생합니다.
+ `“detail_type”:“Glue Scheduled Crawler Invocation Failure”`에 대한 이벤트는 예약된 크롤러가 시작되지 않을 때 생성됩니다. 알림 세부 정보:
  + `customerId`에는 고객의 계정 ID가 포함됩니다.
  + `crawlerName`에는 시작하지 못한 크롤러의 이름이 포함됩니다.
  + `errorMessage`에는 간접 호출 실패의 예외 메시지가 포함됩니다.
+ `“detail_type”:“Glue Auto Statistics Invocation Failure“`에 대한 이벤트는 자동 관리형 열 통계 작업 실행이 시작되지 않을 때 생성됩니다. 알림 세부 정보:
  + `catalogId`에는 카탈로그와 연결된 ID가 포함됩니다.
  + `databaseName`에는 영향을 받는 데이터베이스 이름이 포함됩니다.
  + `tableName`에는 영향을 받는 테이블 이름이 포함됩니다.
  + `errorMessage`에는 간접 호출 실패의 예외 메시지가 포함됩니다.
+ `“detail_type”:“Glue Scheduled Statistics Invocation Failure”`에 대한 이벤트는 (cron) 예약 열 통계 작업 실행이 시작되지 않을 때 생성됩니다. 알림 세부 정보:
  + `catalogId`에는 카탈로그와 연결된 ID가 포함됩니다.
  + `databaseName`에는 영향을 받는 데이터베이스 이름이 포함됩니다.
  + `tableName`에는 영향을 받는 테이블 이름이 포함됩니다.
  + `errorMessage`에는 간접 호출 실패의 예외 메시지가 포함됩니다.
+ `“detail_type”:“Glue Statistics Task Started”`에 대한 이벤트는 열 통계 작업 실행이 시작될 때 생성됩니다.
+ `“detail_type”:“Glue Statistics Task Succeeded”`에 대한 이벤트는 열 통계 작업 실행이 성공할 때 생성됩니다.
+ `“detail_type”:“Glue Statistics Task Failed”`에 대한 이벤트는 열 통계 작업 실행이 실패할 때 생성됩니다.
+ `"detail-type":"Glue Data Catalog Database State Change"` 이벤트는 `CreateDatabase`, `DeleteDatabase`, `CreateTable`, `DeleteTable` 및 `BatchDeleteTable`에 대해 생성됩니다. 예를 들어 테이블이 생성되거나 삭제되면 EventBridge에 알림이 전송됩니다. 순서가 잘못되었거나 누락되는 등 알림 이벤트의 순서 또는 존재 여부에 따라 프로그램을 작성할 수 없을 수 있습니다. 이벤트는 최선의 작업을 기반으로 발생됩니다. 알림 세부 정보:
  + `typeOfChange`에는 API 작업의 이름이 포함되어 있습니다.
  + `databaseName`에는 영향을 받는 데이터베이스 이름이 포함되어 있습니다.
  + `changedTables`는 알림당 영향을 받는 테이블의 이름을 최대 100개까지 포함합니다. 테이블 이름이 길면 여러 알림이 생성될 수 있습니다.
+ `"detail-type":"Glue Data Catalog Table State Change"`에 대한 이벤트는 `UpdateTable`, `CreatePartition`, `BatchCreatePartition`, `UpdatePartition`, `DeletePartition`, `BatchUpdatePartition` 및 `BatchDeletePartition`에 대해 생성됩니다. 예를 들어 테이블이 생성되거나 파티션이 업데이트되면 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/ko_kr/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 Glue에서 사용자, 역할, 또는 AWS 서비스가 수행한 작업에 대한 레코드를 제공하는 서비스인 AWS CloudTrail와 통합됩니다. CloudTrail은 AWS Glue에 대한 모든 API 직접 호출을 이벤트로 캡처합니다. 캡처되는 직접 호출에는 AWS Glue 콘솔로부터의 직접 호출과 AWS Glue API 작업에 대한 코드 직접 호출이 포함됩니다. 추적을 생성하면 AWS Glue 이벤트를 포함한 CloudTrail 이벤트를 지속적으로 Amazon S3 버킷에 배포할 수 있습니다. 추적을 구성하지 않은 경우에도 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>

CloudTrail은 계정 생성 시 AWS 계정에서 사용되도록 설정됩니다. AWS Glue에서 활동이 발생하면 해당 활동이 **이벤트 기록**의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최신 이벤트를 확인, 검색 및 다운로드할 수 있습니다. 자세한 설명은 [CloudTrail 이벤트 이력을 사용하여 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

AWS Glue에 대한 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. CloudTrail은 *추적*을 사용하여 Amazon S3 버킷으로 로그 파일을 전송할 수 있습니다. 콘솔에서 추적을 생성하면 기본적으로 모든 AWS Region에 추적이 적용됩니다. 추적은 AWS 파티션에 있는 모든 리전의 이벤트를 로깅하고 지정된 Amazon S3 버킷으로 로그 파일을 전송합니다. 추가적으로, CloudTrail 로그에서 수집된 이벤트 데이터를 추가 분석 및 처리하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.
+ [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 로그 파일에 항목이 생성됩니다.

모든 이벤트 또는 로그 항목에는 요청을 생성했던 사용자에 관한 정보가 포함됩니다. ID 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
+ 요청을 루트로 했는지 아니면 IAM 사용자 자격 증명 정보로 했는지 여부.
+ 역할 또는 페더레이션 사용자의 임시 자격 증명을 사용하여 요청이 생성되었는지 여부.
+ 다른 AWS 서비스에서 요청했는지.

자세한 설명은 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하세요.

그러나 CloudTrail은 호출에 따른 모든 정보를 로그하지 않습니다. 예를 들어, 연결에 사용된 `ConnectionProperties`와 같은 특정 민감한 정보는 로그하지 않고 다음 API에 의해 반환된 응답 대신 `null`을 로그합니다.

```
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>

추적이란 지정한 Amazon S3 버킷에 이벤트를 로그 파일로 입력할 수 있게 하는 구성입니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 모든 소스로부터의 단일 요청을 나타내며 요청 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보가 들어 있습니다. CloudTrail 로그 파일은 퍼블릭 API 직접 호출의 주문 스택 트레이스가 아니므로 특정 순서로 표시되지 않습니다.

다음 예제는 `DeleteCrawler` 작업을 보여주는 CloudTrail 로그 항목이 나타냅니다.

```
{
  "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"
}
```

다음은 `CreateConnection` 작업을 설명하는 CloudTrail 로그 항목을 보여주는 예제입니다.

```
{
  "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"
}
```