

# AWS Glue 시작
<a name="setting-up"></a>

다음 섹션에서는 AWS Glue 설정에 대한 정보를 제공합니다. AWS Glue 사용을 시작하기 위해 모든 설정 섹션이 필요한 것은 아닙니다. VPC 환경을 사용하여 데이터 스토어에 액세스하거나 대화형 세션을 사용하는 경우 IAM 권한, 암호화, DNS를 설정하는 데 필요한 지침을 사용할 수 있습니다.

**Topics**
+ [AWS Glue 사용 개요](start-console-overview.md)
+ [AWS Glue에 대한 IAM 권한 설정](set-up-iam.md)
+ [AWS Glue 사용 프로필 설정](start-usage-profiles.md)
+ [AWS Glue Data Catalog 시작하기](start-data-catalog.md)
+ [데이터 스토어에 대한 네트워크 액세스 설정](start-connecting.md)
+ [AWS Glue에서 암호화 설정](set-up-encryption.md)
+ [AWS Glue의 개발에 대한 네트워킹 설정](start-development-endpoint.md)

# AWS Glue 사용 개요
<a name="start-console-overview"></a>

AWS Glue로 AWS Glue Data Catalog에 메타데이터를 저장합니다. 이 메타데이터를 사용하여 데이터 원본을 변환하고 데이터 웨어하우스 또는 데이터 레이크를 로드하는 ETL 작업을 오케스트레이션할 수 있습니다. 다음 단계는 일반 작업 흐름과 AWS Glue와 작업할 때 정한 선택에 대해 설명합니다.

**참고**  
다음 단계를 사용하거나 1\$13단계를 자동으로 수행하는 워크플로를 생성할 수 있습니다. 자세한 내용은 [AWS Glue에서 블루프린트 및 워크플로를 사용하여 복잡한 ETL 활동 수행](orchestrate-using-workflows.md) 섹션을 참조하세요.

1. 테이블 정의로 AWS Glue Data Catalog를 채웁니다.

   콘솔에서 영구 데이터 스토어의 경우 크롤러를 추가하여 AWS Glue Data Catalog를 채울 수 있습니다. 테이블 목록 또는 크롤러 목록에서 [**Add crawler(크롤러 추가)**] 마법사를 시작합니다. 크롤러에 액세스하도록 하나 이상의 스토어를 선택합니다. 일정을 생성하여 크롤러 실행 빈도수를 결정합니다. 데이터 스트림의 경우 테이블 정의를 수동으로 생성하고 스트림 속성을 정의할 수 있습니다.

   데이터 스키마를 추론하는 사용자 분류자를 제공할 수도 있습니다. grok 패턴을 사용하여 사용자 지정 분류자를 생성합니다. 하지만 AWS Glue는 사용자 분류자가 데이터를 인식하지 않으면 크롤러에서 자동적으로 사용된 기본 설정 분류자를 제공합니다. 크롤러를 정의할 때 분류자를 선택할 필요가 없습니다. AWS Glue의 분류자에 대한 자세한 내용은 [분류자 정의 및 관리](add-classifier.md) 단원을 참조하십시오.

   몇 가지 데이터 스토어 유형을 크롤하려면 인증 및 위치 정보가 제공되는 연결이 필요합니다. 필요하면 AWS Glue 콘솔에 필요한 정보를 제공하는 연결을 생성할 수 있습니다.

   크롤러가 데이터 스토어를 읽고 데이터 정의와 이름 붙여진 테이블을 AWS Glue Data Catalog에 생성합니다. 이런 테이블은 선택에 따라 데이터베이스에 조직됩니다. 수동으로 생성한 테이블로 Data Catalog를 채울 수도 있습니다. 이러 방법을 통해 스키마 및 기타 메타데이터를 제공하여 Data Catalog에 테이블 정의를 생성합니다. 이런 방법은 조금 짜증나고 오류가 쉽게 날 수 있기 때문에 크롤러가 테이블 정의를 생성하는 방법이 더 좋습니다.

   테이블 정의로 AWS Glue Data Catalog을 채우는 방법에 대한 자세한 내용은 [테이블 생성](tables-described.md) 단원을 참조하십시오.

1. 원본에서 대상으로의 데이터 변환을 설명하는 작업을 정의합니다.

   일반적으로 다음과 같은 선택을 통해 작업을 생성합니다.
   + AWS Glue Data Catalog에서 작업의 소스로 사용할 테이블을 선택합니다. 작업은 이 테이블 정의를 사용하여 데이터 원본에 액세스하고 데이터 포맷을 해석합니다.
   + AWS Glue Data Catalog에서 작업의 대상으로 사용할 테이블 또는 위치를 선택합니다. 작업은 이 정보를 사용하여 데이터 스토어에 액세스합니다.
   + AWS Glue에 스크립트를 생성하여 소스를 대상으로 변환하도록 지시합니다. AWS Glue는 코드를 생성하여 기본 제공 변환을 직접 호출한 다음 소스 스키마에서 대상 스키마 형식으로 데이터를 전환합니다. 이 변환은 데이터 복사, 열 이름 바꾸기 및 데이터 필터링 후 필요에 따라 데이터 변환의 작업을 실행합니다. AWS Glue 콘솔의 스크립트를 수정할 수 있습니다.

   AWS Glue의 작업을 정의하는 방법에 대한 자세한 내용은 [Visual ETL 작업 구축](author-job-glue.md) 단원을 참조하십시오.

1. 작업을 실행하여 데이터를 변환합니다.

   필요할 때 작업하거나, 트리거 유형 중 하나에 따라 시작할 수 있습니다.
   + Cron 일정에 따른 트리거.
   + 트리거는 이벤트 기반입니다. 예를 들어, 작업을 성공적으로 완료했다면 AWS Glue 작업을 시작할 수 있습니다.
   + 필요 시 트리거는 작업을 시작합니다.

   AWS Glue의 트리거에 대한 자세한 내용은 [트리거를 사용하여 작업 및 크롤러 시작](trigger-job.md) 단원을 참조하십시오.

1. 예정된 크롤러와 촉발된 작업을 모니터합니다.

   AWS Glue 콘솔을 사용하여 다음을 봅니다.
   + 작업 실행 상세 정보 및 오류
   + 크롤러 실행 상세 정보 및 오류
   + AWS Glue 동작에 대한 알림

   AWS Glue의 크롤러 및 작업 모니터링에 대한 자세한 내용은 [AWS Glue 모니터링](monitor-glue.md) 단원을 참조하십시오.

# AWS Glue에 대한 IAM 권한 설정
<a name="set-up-iam"></a>

이 주제의 지침은 AWS Glue에 대해 AWS Identity and Access Management(IAM) 권한을 빠르게 설정하는 데 도움이 됩니다. 다음 작업을 완료합니다.
+ IAM 자격 증명에 AWS Glue 리소스에 대한 액세스 권한을 부여합니다.
+ 작업 실행, 데이터 액세스, AWS Glue Data Quality 작업 실행을 위한 서비스 역할을 생성합니다.

AWS Glue에 대한 IAM 권한을 사용자 지정하는 데 사용할 수 있는 자세한 지침은 [AWS Glue에 대한 IAM 권한 구성](configure-iam-for-glue.md) 섹션을 참조하세요.

**AWS Management Console에서 AWS Glue에 대한 IAM 권한을 설정하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. **시작하기**를 선택합니다.

1. **AWS Glue에 대한 계정 준비**에서 **IAM 권한 설정**을 선택합니다.

1. AWS Glue 권한을 부여하려는 IAM 자격 증명(역할 또는 사용자)을 선택합니다. AWS Glue에서는 이 자격 증명에 `[AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)` 관리형 정책을 연결합니다. 이러한 권한을 수동으로 설정하거나 기본 서비스 역할만 설정하려는 경우 이 단계를 건너뛸 수 있습니다.

1. **다음**을 선택합니다.

1. 역할 및 사용자에게 필요한 Amazon S3 액세스 수준을 선택합니다. 이 단계에서 선택한 옵션은 선택한 모든 자격 증명에 적용됩니다.

   1. **S3 위치 선택**에서 액세스 권한을 부여하려는 Amazon S3 위치를 선택합니다.

   1. 다음으로, 이전에 선택한 위치에 대해 자격 증명에 **읽기 전용(권장)** 또는 **읽기 및 쓰기** 액세스 권한을 부여할지 선택합니다. AWS Glue에서는 선택한 위치 및 읽기 또는 쓰기 권한의 조합을 기반으로 자격 증명에 권한 정책을 추가합니다.

      다음 테이블에는 Amazon S3 액세스를 위해 AWS Glue에서 연결하는 권한이 나와 있습니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/set-up-iam.html)

1. **다음**을 선택합니다.

1. 사용자 계정의 기본 AWS Glue 서비스 역할을 선택합니다. 서비스 역할은 사용자를 대신하여 다른 AWS 서비스의 리소스에 액세스하기 위해 AWS Glue에서 사용하는 IAM 역할입니다. 자세한 내용은 [AWS Glue의 서비스 역할](security_iam_service-with-iam.md#security_iam_service-with-iam-roles-service) 섹션을 참조하세요.
   + 표준 AWS Glue 서비스 역할을 선택하면 AWS Glue는 AWS 계정에서 이름이 `AWSGlueServiceRole`이고 다음 관리형 정책이 연결된 새 IAM 역할을 생성합니다. 사용자 계정에 이름이 `AWSGlueServiceRole`인 IAM 역할이 이미 있는 경우 AWS Glue는 이러한 정책을 기존 역할에 연결합니다.
     +  [ AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) - 이 관리형 정책은 AWS Glue에서 사용자를 대신하여 리소스에 액세스하고 관리하는 데 필요합니다. 이를 통해 AWS Glue 작업, 크롤러 및 연결과 같은 다양한 리소스를 AWS Glue에서 생성, 업데이트 및 삭제할 수 있습니다. 또한 이 정책은 로깅 목적으로 Amazon CloudWatch 로그에 액세스할 수 있는 권한을 AWS Glue에 부여합니다. 시작하기 위해 AWS Glue를 사용하는 방법을 알아보도록 이 정책을 사용하는 것이 좋습니다. AWS Glue에 더 익숙해지면 필요에 따라 리소스에 대한 액세스를 미세 조정할 수 있는 정책을 생성할 수 있습니다.
     +  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess) - 이 관리형 정책은 AWS Management Console을 통해 AWS Glue 서비스에 대한 전체 액세스 권한을 부여합니다. 이 정책은 AWS Glue 내에서 모든 작업을 수행할 수 있는 권한을 부여하므로 필요에 따라 모든 AWS Glue 리소스를 생성, 수정 및 삭제할 수 있습니다. 그러나 이 정책은 ETL 프로세스에 관여할 수 있는 기본 데이터 스토어 또는 기타 AWS 서비스에 액세스할 수 있는 권한을 부여하지 않는다는 점에 유의해야 합니다. `AWSGlueConsoleFullAccess` 정책은 광범위한 권한을 부여하므로 최소 권한 원칙에 따라 신중하게 할당해야 합니다. 가능하다면 특정 사용 사례와 요구 사항에 맞게 더욱 세부적인 정책을 만들고 사용하는 것이 좋습니다.
     +  [ AWSGlueConsole-S3-read-only-policy](https://console.aws.amazon.com/iam/home#policies/details/arn:aws:iam:aws:policy/AWSGlueConsole-S3-read-only-policy) – 이 정책은 AWS Glue가 지정된 Amazon S3 버킷에서 데이터를 읽을 수 있도록 허용하지만 Amazon S3에서 데이터를 쓰거나 수정할 수 있는 권한은 부여하지 않습니다.

        [ AWSGlueConsole-S3-read-and-write](https://console.aws.amazon.com/iam/home#policies/details/arn:aws:iam:aws:policy/AWSGlueConsole-S3-read-and-write) – 이 정책은 AWS Glue가 ETL 프로세스의 일부로 지정된 Amazon S3 버킷에 데이터를 읽고 쓸 수 있도록 허용합니다.
   +  기존 IAM 역할을 선택하면 AWS Glue는 역할을 기본값으로 설정하지만 역할에 `AWSGlueServiceRole` 권한을 추가하지는 않습니다. AWS Glue에 대한 서비스 역할로 사용하도록 역할을 구성했는지 확인합니다. 자세한 내용은 [1단계: AWS Glue 서비스를 위한 IAM 정책 생성](create-service-policy.md) 및 [2단계: AWS Glue에 대한 IAM 역할 생성](create-an-iam-role.md)(을)를 참조하세요.

1. **다음**을 선택합니다.

1. 마지막으로, 선택한 권한을 검토하고 **변경 사항 적용**을 선택합니다. 변경 사항을 적용하면 AWS Glue는 선택한 자격 증명에 IAM 권한을 추가합니다. 새 권한은 IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))에서 확인하거나 수정할 수 있습니다.

이제 AWS Glue에 대한 최소 IAM 권한 설정을 완료했습니다. 프로덕션 환경에서는 사용 사례에 사용할 AWS 리소스를 확보할 수 있도록 [AWS Glue의 보안](security.md) 및 [AWS Glue의 Identity and Access Management](security-iam.md)에 익숙해지는 것이 좋습니다.

## 다음 단계
<a name="set-up-iam-next-steps"></a>

이제 IAM 권한을 설정했으므로 AWS Glue 사용을 시작하기 위해 다음 주제를 탐색해볼 수 있습니다.
+ [Getting Started with AWS Glue in AWS Skill Builder](https://explore.skillbuilder.aws/learn/course/external/view/elearning/8171/getting-started-with-aws-glue)
+ [AWS Glue Data Catalog 시작하기](start-data-catalog.md)

# AWS Glue Studio에 대한 설정
<a name="setting-up-studio"></a>

시각적 ETL에 대한 AWS Glue을(를) 처음 사용하는 경우 이 섹션의 작업을 완료합니다.

**Topics**
+ [AWS Glue Studio 사용자에게 필요한 IAM 권한 검토](getting-started-min-privs.md)
+ [ETL 작업에 필요한 IAM 권한 검토](getting-started-min-privs-job.md)
+ [AWS Glue Studio에 대한 IAM 권한 설정](getting-started-iam-permissions.md)
+ [ETL 작업에 사용할 VPC 구성](getting-started-vpc-config.md)

# AWS Glue Studio 사용자에게 필요한 IAM 권한 검토
<a name="getting-started-min-privs"></a>

AWS Glue Studio를 사용하려면 사용자가 다양한 AWS 리소스에 액세스할 수 있어야 합니다. 사용자는 Amazon S3 버킷, IAM 정책 및 역할, AWS Glue Data Catalog 객체를 보고 선택할 수 있어야 합니다.

## AWS Glue 서비스 권한
<a name="getting-started-min-privs-glue"></a>

AWS Glue Studio는 AWS Glue 서비스의 작업과 리소스를 사용합니다. AWS Glue Studio를 효과적으로 사용하려면 사용자에게 이러한 작업과 리소스에 대한 권한이 필요합니다. AWS Glue Studio 사용자에게 `AWSGlueConsoleFullAccess` 관리형 정책을 부여하거나 더 작은 권한 집합으로 사용자 지정 정책을 생성할 수 있습니다.

**중요**  
보안 모범 사례에 따라 Amazon S3 버킷 및 Amazon CloudWatch 로그 그룹에 대한 액세스를 추가로 제한하는 정책을 강화하여 액세스를 제한하는 것이 좋습니다. Amazon S3 정책 예제는 [IAM 정책 작성하기: Amazon S3 버킷으로의 액세스를 보장하는 방법](https://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/)을 참조하세요.

## AWS Glue Studio에 대한 사용자 지정 IAM 정책 생성
<a name="getting-started-all-gs-privs"></a>

AWS Glue Studio에 대한 더 작은 권한 집합을 포함하는 사용자 지정 정책을 생성할 수 있습니다. 이 정책에서는 객체 또는 작업의 하위 집합에 대한 권한을 부여할 수 있습니다. 사용자 지정 정책을 생성할 때는 다음 정보를 사용합니다.

 AWS Glue Studio API를 사용하려면 IAM 권한 내의 작업 정책에 `glue:UseGlueStudio`를 포함합니다. `glue:UseGlueStudio`를 사용하면 시간이 지남에 따라 API에 더 많은 작업이 추가되는 경우에도 모든 AWS Glue Studio 작업을 수행할 수 있습니다.

 AWS Glue에서 정의한 작업에 대한 자세한 내용은 [AWS Glue에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsglue.html)을 참조하세요.

 **데이터 준비 작성 작업** 
+ SendRecipeAction
+ GetRecipeAction

 **DAG(방향성 비순환 그래프) 작업** 
+ CreateDag
+ UpdateDag
+ GetDag
+ DeleteDag

 **작업** 
+ SaveJob
+ GetJob
+ CreateJob
+ DeleteJob
+ GetJobs
+ UpdateJob

 **작업 실행 옵션** 
+ StartJobRun
+ GetJobRuns
+ BatchStopJobRun
+ GetJobRun
+ QueryJobRuns
+ QueryJobs
+ QueryJobRunsAggregated

 **스키마 작업** 
+ GetSchema
+ GetInferredSchema

 **데이터베이스 작업** 
+ GetDatabases

 **계획 작업** 
+ GetPlan

 **테이블 작업** 
+ SearchTables
+ GetTables
+ GetTable

 **연결 작업** 
+ CreateConnection
+ DeleteConnection
+ UpdateConnection
+ GetConnections
+ GetConnection

 **매핑 작업** 
+ GetMapping

 **S3 프록시 작업**
+ ListBuckets
+ ListObjectsV2
+ GetBucketLocation

**보안 구성 작업**
+ GetSecurityConfigurations 

**스크립트 작업**
+ CreateScript(AWS Glue에서 같은 이름의 API와 다름)

## AWS Glue Studio API에 액세스
<a name="getting-started-glue-studio-apis"></a>

 AWS Glue Studio에 액세스하려면 IAM 권한 내의 작업 정책 목록에 `glue:UseGlueStudio`를 추가합니다.

 아래 예제에서는 `glue:UseGlueStudio`가 작업 정책에 포함되어 있지만 AWS Glue Studio API는 개별적으로 식별되지 않습니다. 그 이유는 `glue:UseGlueStudio`를 포함하면 IAM 권한 내의 개별 AWS Glue Studio API를 지정하지 않아도 내부 API에 대한 액세스 권한이 사용자에게 자동으로 부여되기 때문입니다.

 이 예제에서 나열된 추가 작업 정책(예: `glue:SearchTables`)은 AWS Glue Studio API가 아니며, 따라서 필요에 따라 IAM 권한에 포함되어야 합니다. 부여할 Amazon S3 액세스 수준을 지정할 때 Amazon S3 프록시 작업을 포함할 수도 있습니다. 아래 예제 정책에서는 AWS Glue Studio를 열고, 시각적 작업을 생성하고 선택한 IAM 역할에 충분한 액세스 권한이 있는 경우 이를 저장/실행하는 액세스 권한을 제공합니다.

## 노트북 및 데이터 미리 보기 권한
<a name="getting-started-data-preview-perms"></a>

데이터 미리 보기와 노트북을 사용하면 작업을 실행하지 않고도 작업의 모든 스테이지(읽기, 변환, 쓰기)에서 데이터 샘플을 볼 수 있습니다. 데이터에 액세스할 때 사용할 AWS Glue Studio에 대한 AWS Identity and Access Management(IAM) 역할을 지정합니다. IAM 역할은 수임 가능하도록 설계되었으며 암호 또는 액세스 키와 같은 표준 장기 자격 증명이 연결되어 있지 않습니다. 대신, AWS Glue Studio가 역할을 수임할 때 IAM은 임시 보안 자격 증명을 제공합니다.

데이터 미리 보기와 노트북 명령이 올바르게 작동하려면 이름이 `AWSGlueServiceRole` 문자열로 시작하는 역할을 사용합니다. 역할에 다른 이름을 사용하려는 경우 `iam:passrole` 권한을 추가하고 IAM에서 해당 역할에 대한 정책을 구성해야 합니다. 자세한 내용은 [역할에 대해 ‘AWSGlueServiceRole\$1’이라는 이름이 아닌 IAM 정책 생성](getting-started-iam-permissions.md#create-iam-policy) 섹션을 참조하세요.

**주의**  
역할이 노트북에 대한 `iam:passrole` 권한을 부여하고 역할 체인을 구현하는 경우 사용자가 의도하지 않게 노트북에 액세스하게 될 수 있습니다. 노트북에 대한 액세스 권한이 부여된 사용자를 모니터링할 수 있는 감사는 현재 구현되어 있지 않습니다.

IAM ID가 데이터 미리 보기 세션을 생성하지 못하게 하려면 [ID가 데이터 미리 보기 세션을 생성하지 못하게 하기](security_iam_id-based-policy-examples.md#deny-data-preview-sessions-per-identity) 섹션의 다음 예제를 참조하세요.

## Amazon CloudWatch 권한
<a name="getting-started-min-privs-cloudwatch"></a>

AWS Glue에서 원시 데이터를 수집한 후 판독이 가능한 지표로 실시간에 가깝게 처리하는 Amazon CloudWatch를 사용하여 AWS Glue Studio 작업을 모니터링할 수 있습니다. 기본적으로 AWS Glue 지표 데이터는 CloudWatch에 자동으로 전송됩니다. 자세한 내용은 *Amazon CloudWatch User Guide*의 [What Is Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html)와 *AWS Glue Developer Guide*의 [AWS Glue Metrics](https://docs.aws.amazon.com/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html#awsglue-metrics)를 참조하세요.

CloudWatch 대시보드에 액세스하려면 AWS Glue Studio에 액세스하는 사용자에게 다음 중 하나가 필요합니다.
+ `AdministratorAccess` 정책
+ `CloudWatchFullAccess` 정책
+ 다음과 같은 특정 권한 중 하나 이상을 포함하는 사용자 지정 정책:
  + 대시보드 보기를 위한 `cloudwatch:GetDashboard` 및 `cloudwatch:ListDashboards`
  + 대시보드를 생성하거나 수정하는 `cloudwatch:PutDashboard`
  + 대시보드를 삭제하는 `cloudwatch:DeleteDashboards`

정책을 사용하여 IAM 사용자의 권한 변경에 대한 자세한 내용은 *IAM User Guide*의 [Changing Permissions for an IAM User](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)를 참조하세요.

# ETL 작업에 필요한 IAM 권한 검토
<a name="getting-started-min-privs-job"></a>

AWS Glue Studio를 사용하여 작업을 생성하는 경우 작업은 생성 시 지정한 IAM 역할의 권한을 갖게 됩니다. 이 IAM 역할은 데이터 원본에서 데이터를 추출하고, 대상에 데이터를 쓰고, AWS Glue 리소스에 액세스할 수 있는 권한이 있어야 합니다.

작업을 위해 생성하는 역할의 이름이 `AWSGlueServiceRole` 문자열로 시작해야 AWS Glue Studio에서 올바르게 사용할 수 있습니다. 예를 들어 역할 이름을 `AWSGlueServiceRole-FlightDataJob`으로 지정할 수 있습니다.

## 데이터 원본 및 데이터 대상 권한
<a name="getting-started-min-privs-data"></a>

AWS Glue Studio 작업에서 사용하는 모든 소스, 대상, 스크립트, 임시 디렉터리를 위해 작업이 Amazon S3에 액세스할 수 있어야 합니다. 특정 Amazon S3 리소스에 대한 세분화된 액세스를 제공하는 정책을 생성할 수 있습니다.
+ 데이터 원본은 `s3:ListBucket` 및 `s3:GetObject` 권한을 요구합니다.
+ 데이터 대상은 `s3:ListBucket`, `s3:PutObject` 및 `s3:DeleteObject` 권한을 요구합니다.

**참고**  
 IAM 정책은 변환 호스팅 AWS Glue 변환에 사용되는 특정 버킷에 대한 `s3:GetObject`을(를) 허용해야 합니다.  
 다음 버킷은 AWS 서비스 계정이 소유하며 전 세계에서 읽을 수 있습니다. 이러한 버킷은 AWS Glue Studio 비주얼 에디터를 통해 액세스할 수 있는 변환의 하위 집합과 관련된 소스 코드의 저장소 역할을 합니다. 버킷에 대한 권한은 버킷에서의 다른 API 작업을 거부하도록 설정됩니다. 변환을 위해 제공하는 스크립트는 누구나 읽을 수 있지만, 서비스 팀 외부의 누구도 스크립트에 내용을 “입력”할 수 없습니다. AWS Glue 작업이 실행되면 해당 파일을 로컬 가져오기로 불러와서 로컬 컨테이너로 다운로드합니다. 이후에는 해당 계정과 더 이상 통신할 수 없습니다.

 지역: 버킷 이름 
+ af-south-1: aws-glue-studio-transforms-762339736633-prod-af-south-1
+ ap-east-1: aws-glue-studio-transforms-125979764932-prod-ap-east-1
+ ap-northeast-2: aws-glue-studio-transforms-673535381443-prod-ap-northeast-2
+ ap-northeast-3: aws-glue-studio-transforms-149976050262-prod-ap-northeast-3
+ ap-south-1: aws-glue-studio-transforms-584702181950-prod-ap-south-1
+ ap-south-2: aws-glue-studio-transforms-380279651983-prod-ap-south-2
+ ap-southeast-1: aws-glue-studio-transforms-737106620487-prod-ap-southeast-1
+ ap-southeast-2: aws-glue-studio-transforms-234881715811-prod-ap-southeast-2
+ ap-southeast-3: aws-glue-studio-transforms-151265630221-prod-ap-southeast-3
+ ap-southeast-4: aws-glue-studio-transforms-052235663858-prod-ap-southeast-4
+ ca-central-1: aws-glue-studio-transforms-622716468547-prod-ca-central-1
+ ca-west-1: aws-glue-studio-transforms-915795495192-prod-ca-west-1
+ eu-central-1: aws-glue-studio-transforms-560373232017-prod-eu-central-1
+ eu-central-2: aws-glue-studio-transforms-907358657121-prod-eu-central-2
+ eu-north-1: aws-glue-studio-transforms-312557305497-prod-eu-north-1
+ eu-south-1: aws-glue-studio-transforms-939684186351-prod-eu-south-1
+ eu-south-2: aws-glue-studio-transforms-239737454084-prod-eu-south-2
+ eu-west-1: aws-glue-studio-transforms-244479516193-prod-eu-west-1
+ eu-west-2: aws-glue-studio-transforms-804222392271-prod-eu-west-2
+ eu-west-3: aws-glue-studio-transforms-371299348807-prod-eu-west-3
+ il-central-1: aws-glue-studio-transforms-806964611811-prod-il-central-1
+ me-central-1: aws-glue-studio-transforms-733304270342-prod-me-central-1
+ me-south-1: aws-glue-studio-transforms-112120182341-prod-me-south-1
+ sa-east-1: aws-glue-studio-transforms-881619130292-prod-sa-east-1
+ us-east-1: aws-glue-studio-transforms-510798373988-prod-us-east-1
+ us-east-2: aws-glue-studio-transforms-251189692203-prod-us-east-2
+ us-west-1: aws-glue-studio-transforms-593230150239-prod-us-west-1
+ us-west-2: aws-glue-studio-transforms-818035625594-prod-us-west-2
+ ap-northeast-1: aws-glue-studio-transforms-200493242866-prod-ap-northeast-1
+ cn-north-1: aws-glue-studio-transforms-071033555442-prod-cn-north-1
+ cn-northwest-1: aws-glue-studio-transforms-070947029561-prod-cn-northwest-1
+ us-gov-west-1: aws-glue-studio-transforms-227493901923-prod-us-gov-west-1-2604
+ eusc-de-east-1: aws-glue-studio-transforms-780995497573-prod-eusc-de-east-1-555

Amazon Redshift를 데이터 원본으로 선택하면 클러스터 권한에 대한 역할을 제공할 수 있습니다. Amazon Redshift 클러스터에 대해 실행되는 작업은 임시 자격 증명을 사용하여 임시 스토리지용 Amazon S3에 액세스하는 명령을 실행합니다. 작업이 1시간 이상 실행되면 이러한 자격 증명이 만료되어 작업이 실패합니다. 이 문제를 방지하기 위해 임시 자격 증명을 사용하여 작업에 필요한 권한을 부여하는 역할을 Amazon Redshift 클러스터 자체에 할당할 수 있습니다. 자세한 내용은 *AWS Glue Developer Guide*의 [Moving Data to and from Amazon Redshift](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html)를 참조하세요.

작업이 Amazon S3 이외의 데이터 원본 또는 대상을 사용하는 경우 이러한 데이터 원본 및 대상에 액세스하기 위해 작업에서 사용하는 IAM 역할에 필요한 권한을 연결해야 합니다. 자세한 내용은 *AWS Glue Developer Guide*의 [Setting Up Your Environment to Access Data Stores](https://docs.aws.amazon.com/glue/latest/dg/start-connecting.html)를 참조하세요.

데이터 스토어에 커넥터 및 연결을 사용하는 경우 [커넥터 사용에 필요한 권한](#getting-started-min-privs-connectors)에 설명된 대로 추가 권한이 필요합니다.

## 작업 삭제에 필요한 권한
<a name="getting-started-min-privs-delete-job"></a>

AWS Glue Studio의 콘솔에서 여러 작업을 선택하여 삭제할 수 있습니다. 이 작업을 수행하려면 `glue:BatchDeleteJob` 권한이 있어야 합니다. 이는 작업 삭제에 `glue:DeleteJob` 권한이 필요한 AWS Glue 콘솔과 다릅니다.

## AWS Key Management Service 권한
<a name="getting-started-min-privs-kms"></a>

AWS Key Management Service(AWS KMS)에서 서버 측 암호화를 사용하는 Amazon S3 소스 및 대상에 액세스하려는 경우 작업에 사용되는 AWS Glue Studio 역할에 작업에서 데이터를 복호화할 수 있도록 하는 정책을 연결합니다. 작업 역할에는 `kms:ReEncrypt`, `kms:GenerateDataKey` 및 `kms:DescribeKey` 권한이 필요합니다. 또한 작업 역할에는 AWS KMS 고객 마스터 키(CMK)로 암호화된 Amazon S3 객체를 업로드하거나 다운로드할 수 있는 `kms:Decrypt` 권한이 필요합니다.

AWS KMS CMK를 사용하면 추가 요금이 부과됩니다. 자세한 내용은 *AWS Key Management Service Developer Guide*의 [AWS Key Management Service Concepts - Customer Master Keys (CMKs)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) 및 [AWS Key Management Service Pricing](https://aws.amazon.com/kms/pricing)을 참조하세요.

## 커넥터 사용에 필요한 권한
<a name="getting-started-min-privs-connectors"></a>

AWS Glue 사용자 정의 커넥터 및 연결을 사용하여 데이터 스토어에 액세스하는 경우 AWS Glue ETL 작업을 실행하는 데 사용되는 역할에 연결된 추가 권한이 필요합니다.
+ AWS Marketplace에서 구입한 커넥터 액세스를 위한 AWS 관리형 정책 `AmazonEC2ContainerRegistryReadOnly`.
+ `glue:GetJob` 및 `glue:GetJobs` 권한.
+ 연결에 사용되는 보안 암호 액세스를 위한 AWS Secrets Manager 권한. 예제 IAM 정책을 보려면 [예: 보안 암호 값을 검색할 수 있는 권한](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_examples_read)을 참조하세요.

AWS Glue ETL 작업이 Amazon VPC를 실행하는 VPC 내에서 실행되는 경우 VPC는 [ETL 작업에 사용할 VPC 구성](getting-started-vpc-config.md)에 설명된 대로 구성되어야 합니다.

# AWS Glue Studio에 대한 IAM 권한 설정
<a name="getting-started-iam-permissions"></a>

AWS 관리자 사용자를 사용하여 역할을 생성하고 사용자 및 작업 역할에 정책을 할당할 수 있습니다.

**AWSGlueConsoleFullAccess** AWS 관리형 정책을 사용하여 AWS Glue Studio 콘솔 사용에 필요한 권한을 제공할 수 있습니다.

자체 정책을 생성하려면 *AWS Glue Developer Guide*의 [Create an IAM Policy for the AWS Glue Service](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html)에 설명된 단계를 따릅니다. 이전에 [AWS Glue Studio 사용자에게 필요한 IAM 권한 검토](getting-started-min-privs.md)에서 설명한 IAM 권한을 포함합니다.

**Topics**
+ [AWS Glue Studio 사용자에게 정책을 연결합니다.](#attach-iam-policy)
+ [역할에 대해 ‘AWSGlueServiceRole\$1’이라는 이름이 아닌 IAM 정책 생성](#create-iam-policy)

## AWS Glue Studio 사용자에게 정책을 연결합니다.
<a name="attach-iam-policy"></a>

AWS Glue Studio 콘솔에 로그인하는 모든 AWS 사용자에게 특정 리소스에 액세스할 수 있는 권한이 있어야 합니다. 사용자에게 IAM 정책을 할당하여 해당 권한을 제공합니다.

****AWSGlueConsoleFullAccess** 관리형 정책을 사용자에 연결**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **정책**을 선택합니다.

1. 정책 목록에서 **AWSGlueConsoleFullAccess** 옆의 확인란을 선택합니다. [**Filter**] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.

1. **정책 조치**를 선택한 후 **연결**을 선택합니다.

1. 정책을 연결하려는 사용자를 선택합니다. **필터** 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [**Attach policy(정책 추가)**]를 선택합니다.

1. 필요에 따라 이전 단계를 반복하여 사용자에게 추가 정책을 연결합니다.

## 역할에 대해 ‘AWSGlueServiceRole\$1’이라는 이름이 아닌 IAM 정책 생성
<a name="create-iam-policy"></a>

**AWS Glue Studio에서 사용하는 역할에 대한 IAM 정책 구성**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 새 IAM 정책을 추가합니다. 기존 정책에 추가하거나 새 IAM 인라인 정책을 생성할 수 있습니다. IAM 정책 생성

   1. **정책**을 선택한 후 **정책 생성**을 선택합니다. **시작** 버튼이 표시되면 이 버튼을 선택한 다음 **정책 생성**을 선택합니다.

   1. [**Create Your Own Policy**] 옆의 [**Select**]를 선택합니다.

   1. **정책 이름**에 나중에 쉽게 참조할 수 있는 값을 입력합니다. 선택적으로, **설명**에 설명을 입력합니다.

   1. **정책 문서**에 다음 형식의 정책 설명을 입력한 다음, **정책 생성**을 선택합니다.

1. 다음 블록을 복사하여 'Statement' 배열 아래의 정책에 붙여넣습니다. 이때 *my-interactive-session-role-prefix*를 AWS Glue에 대한 권한과 연결할 모든 공통 역할의 접두사로 바꿉니다.

   ```
   {
       "Action": [
           "iam:PassRole"
       ],
       "Effect": "Allow",
       "Resource": "arn:aws:iam::*:role/my-interactive-session-role-prefix*",
       "Condition": {
           "StringLike": {
               "iam:PassedToService": [
                   "glue.amazonaws.com "
               ]
           }
       }
   }
   ```

    다음은 정책에 포함된 Version 및 Statement 배열의 전체 예입니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Action": [
           "iam:PassRole"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:iam::*:role/my-interactive-session-role-prefix*",
         "Condition": {
           "StringLike": {
             "iam:PassedToService": [
               "glue.amazonaws.com "
             ]
           }
         }
       }
     ]
   }
   ```

------

1. 사용자에게 정책을 활성화하려면 **사용자**를 선택합니다.

1. 정책을 연결하려는 사용자를 선택합니다.

# ETL 작업에 사용할 VPC 구성
<a name="getting-started-vpc-config"></a>

Amazon Virtual Private Cloud(Amazon VPC)를 사용하면 AWS 클라우드 내에서 논리적으로 격리된 자체 영역에 *Virtual Private Cloud(VPC)*라고 하는 가상 네트워크를 정의할 수 있습니다. 인스턴스와 같은 AWS 리소스를 VPC에서 시작할 수 있습니다. VPC는 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사하지만 AWS의 확장 가능한 인프라를 사용한다는 이점을 제공합니다. 해당 IP 주소 범위를 선택하고, 서브넷을 만든 후 라우팅 테이블, 네트워크 게이트웨이 및 보안 설정을 구성하여 VPC를 구성할 수 있습니다. VPC의 인스턴스를 인터넷에 연결합니다. VPC를 사내 데이터 센터에 연결하여 AWS 클라우드에서 데이터 센터를 확장할 수 있습니다. 각의 서브넷에서 리소스를 보호하기 위해 보안 그룹 및 네트워크 액세스 제어 목록을 포함한 다중 보안 계층을 사용할 수 있습니다. 자세한 내용은 [Amazon VPC 사용 설명서](https://docs.aws.amazon.com/vpc/latest/userguide/)를 참조하세요.

커넥터를 사용할 때 VPC 내에서 실행되도록 AWS Glue ETL 작업을 구성할 수 있습니다. 필요에 따라 다음에 대해 VPC를 구성해야 합니다.
+ AWS에 없는 데이터 스토어에 대한 퍼블릭 네트워크 액세스. 작업이 액세스한 모든 데이터 스토어는 VPC 서브넷에서 사용 가능해야 합니다.
+ 작업에서 VPC 리소스와 퍼블릭 인터넷에 모두 액세스해야 할 경우 VPC 내부 네트워크 주소 변환(NAT) 게이트웨이가 VPC에 있어야 합니다.

  자세한 내용은 *AWS Glue Developer Guide*의 [Setting Up Your Environment to Access Data Stores](https://docs.aws.amazon.com/glue/latest/dg/start-connecting.html)를 참조하세요.

# AWS Glue Studio에서 노트북 시작하기
<a name="notebook-getting-started"></a>

 AWS Glue Studio를 통해 노트북을 시작하는 경우 데이터를 탐색하고 몇 초 만에 작업 스크립트 개발을 시작할 수 있도록 모든 구성 단계가 완료됩니다.

 다음 섹션에서는 ETL 작업에 대해 AWS Glue Studio에서 노트북을 사용하기 위해 역할을 생성하고 적절한 권한을 부여하는 방법을 설명합니다.

 AWS Glue에서 정의한 작업에 대한 자세한 내용은 [AWS Glue에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsglue.html)을 참조하세요.

**Topics**
+ [IAM 역할에 권한 부여](#studio-notebook-permissions)

## IAM 역할에 권한 부여
<a name="studio-notebook-permissions"></a>

 AWS Glue Studio 설정은 노트북을 사용하기 위한 전제 조건입니다.

AWS Glue에서 노트북을 사용하려면 역할에 다음이 필요합니다.
+  `sts:AssumeRole` 작업(및 태그 지정을 원할 경우 `sts:TagSession` 작업)을 수행하기 위한 AWS Glue와의 신뢰 관계 
+  노트북, AWS Glue 및 대화형 세션에 대한 모든 권한을 포함하는 IAM 정책.
+  전달 역할에 대한 IAM 정책(역할이 노트북에서 대화형 세션으로 전달될 수 있어야 하기 때문) 

 예를 들어 새 역할을 생성할 때 역할에 `AWSGlueConsoleFullAccessRole`과 같은 표준 AWS 관리형 정책을 추가한 후 노트북 작업에 대한 새 정책과 IAM PassRole 정책에 대한 다른 새 정책을 추가할 수 있습니다.

### AWS Glue와의 신뢰 관계에 필요한 작업
<a name="create-notebook-permissions-trust"></a>

 노트북 세션을 시작할 때 노트북에 전달되는 역할의 신뢰 관계에 `sts:AssumeRole`을 추가해야 합니다. 세션에 태그가 포함되어 있는 경우 `sts:TagSession` 작업도 전달해야 합니다. 이러한 작업이 없으면 노트북 세션을 시작할 수 없습니다.

 예제: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "glue.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

### 노트북의 IAM 권한을 포함하는 정책
<a name="create-notebook-permissions-operations"></a>

 다음 샘플 정책은 노트북에 대한 필수적인 AWS IAM 권한을 설명합니다. 새 역할을 생성하는 경우 다음을 포함하는 정책을 생성합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:StartNotebook",
        "glue:TerminateNotebook",
        "glue:GlueNotebookRefreshCredentials",
        "glue:DeregisterDataPreview",
        "glue:GetNotebookInstanceStatus",
        "glue:GlueNotebookAuthorize"
      ],
      "Resource": "*"
    }
  ]
}
```

------

 다음 IAM 정책을 사용하여 특정 리소스에 대한 액세스를 허용할 수 있습니다.
+  *AwsGlueSessionUserRestrictedNotebookServiceRole*: 세션을 제외한 모든 AWS Glue 리소스에 대한 전체 액세스 권한을 제공합니다. 사용자가 자신과 연결된 노트북 세션만 생성하고 사용할 수 있도록 허용합니다. 이 정책에는 다른 AWS 서비스에서 AWS Glue 리소스를 관리하는 데 AWS Glue에서 필요한 기타 권한도 포함됩니다.
+  *AwsGlueSessionUserRestrictedNotebookPolicy*: 사용자가 자신과 연결된 노트북 세션만 생성하고 사용할 수 있도록 허용하는 권한을 제공합니다. 이 정책에는 제한된 AWS Glue 세션 역할을 사용자가 전달할 수 있도록 명시적으로 허용하는 권한도 포함되어 있습니다.

### 역할을 전달하는 IAM 정책
<a name="create-notebook-permissions-pass-role"></a>

 역할이 있는 노트북을 생성하면 해당 역할이 대화형 세션으로 전달되므로 두 위치에서 동일한 역할을 사용할 수 있습니다. 따라서 `iam:PassRole` 권한은 역할의 정책의 일부여야 합니다.

 다음 예제를 사용하여 역할에 대한 새 정책을 생성합니다. 계정 번호를 사용자의 고유한 역할 이름으로 바꿉니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/<role_name>"
    }
  ]
}
```

------

# AWS Glue 사용 프로필 설정
<a name="start-usage-profiles"></a>

클라우드 플랫폼 사용의 주요 이점 중 하나는 유연성입니다. 하지만 이렇게 컴퓨팅 리소스를 쉽게 생성할 경우 관리하지 않고 가드레일 없이 방치하면 클라우드 비용이 급증할 위험이 있습니다. 따라서 관리자는 높은 인프라 비용을 피하는 동시에 사용자가 불필요한 마찰 없이 작업할 수 있도록 균형을 맞춰야 합니다.

AWS Glue 사용 프로필을 통해 관리자는 개발자, 테스터, 제품 팀 등 계정 내의 다양한 사용자 계층에 대한 여러 프로필을 생성할 수 있습니다. 각 프로필은 다양한 유형의 사용자에게 할당할 수 있는 고유한 파라미터 세트입니다. 예를 들어 개발자는 더 많은 작업자가 필요할 수 있고 최대 작업자 수가 많을 수 있지만, 제품 팀의 경우 필요한 작업자 수가 더 적고 필요한 제한 시간 또는 유휴 제한 시간 값이 더 낮을 수 있습니다.

**작업 및 작업 실행 동작 예제**  
사용자 A가 프로필 A를 사용하여 작업을 생성한다고 가정합니다. 이때 작업은 특정 파라미터 값과 함께 저장됩니다. 프로필 B를 사용하는 사용자 B가 작업을 실행하려고 시도합니다.

사용자 A가 작업을 작성했을 때 특정 작업자 수를 설정하지 않은 경우 사용자 A의 프로필에 기본 설정이 적용되고 작업의 정의와 함께 저장됩니다.

사용자 B가 작업을 실행하면 저장된 값으로 실행됩니다. 사용자 B의 자체 프로필이 더 제한적이고 많은 작업자를 대상으로 실행할 수 없는 경우 작업 실행이 실패합니다.

**리소스로의 사용 프로필**  
AWS Glue 사용 프로필은 Amazon 리소스 이름(ARN)으로 식별되는 리소스입니다. 작업 기반 및 리소스 기반 권한 부여를 포함하여 모든 기본 Identity and Access Management(IAM) 제어가 적용됩니다. 관리자는 AWS Glue 리소스를 생성하는 사용자의 IAM 정책을 업데이트하여 프로필을 사용할 수 있는 액세스 권한을 부여해야 합니다.

![\[AWS Glue에 구성된 사용 프로필의 예제.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/usage-profiles-1.png)


**Topics**
+ [사용 프로필 생성 및 관리](start-usage-profiles-managing.md)
+ [사용 프로필 및 작업](start-usage-profiles-jobs.md)

# 사용 프로필 생성 및 관리
<a name="start-usage-profiles-managing"></a>

## AWS Glue 사용 프로필 생성
<a name="w2aac15c15c19b3"></a>

관리자는 사용 프로필을 생성한 다음 다양한 사용자에게 할당해야 합니다. 사용 프로필을 생성할 때에는 다양한 작업 및 세션 파라미터에 허용되는 값 범위뿐 아니라 기본값도 지정합니다. 작업 또는 대화형 세션에 대해 파라미터를 하나 이상 구성해야 합니다. 작업에 파라미터 값이 제공되지 않을 경우 사용할 기본값을 사용자 지정하거나, 이 프로필을 사용할 때 사용자가 파라미터 값을 제공하는 경우 검증을 하기 위한 범위 한도 또는 허용되는 값 세트를 설정할 수 있습니다.

*기본값*은 관리자가 작업 작성자를 지원하기 위해 설정하는 모범 사례입니다. 사용자가 새 작업을 생성하고 제한 시간 값을 설정하지 않으면 사용 프로필의 기본 제한 시간이 적용됩니다. 작성자에게 프로필이 없는 경우 AWS Glue 서비스 기본값이 적용되어 작업 정의에 저장됩니다. 런타임에 AWS Glue는 프로필에 설정된 한도(최소, 최대, 허용된 작업자)을 적용합니다.

 파라미터가 구성되면 다른 모든 파라미터는 선택 사항이 됩니다. 작업 또는 대화형 세션에 대해 사용자 정의할 수 있는 파라미터는 다음과 같습니다.
+  **작업자 수** - 컴퓨팅 리소스의 과도한 사용을 방지하기 위해 작업자 수를 제한합니다. 기본값, 최소값, 최대값을 설정할 수 있습니다. 최소값은 1입니다.
+  **작업자 유형** - 워크로드의 관련 작업자 유형을 제한합니다. 사용자 프로필에 대해 기본 유형을 설정하고 작업자 유형을 허용할 수 있습니다.
+  **제한 시간** - 작업 또는 대화형 세션이 종료되기 전에 실행 및 리소스를 소비할 수 있는 최대 시간을 정의합니다. 작업이 오래 실행되지 않도록 제한 시간 값을 설정합니다.

  기본값, 최소값, 최대값을 분 단위로 설정할 수 있습니다. 최소값은 1(분)입니다. AWS Glue 기본 제한 시간은 2,880분이지만 사용 프로필에서 원하는 기본값을 설정할 수 있습니다.

  '기본값'의 값을 설정하는 것이 좋습니다. 이 값은 사용자가 값을 설정하지 않은 경우에 작업 또는 세션 생성에 사용됩니다.
+  **유휴 제한 시간** - 셀이 실행된 후 시간 초과되기 전까지 대화형 세션이 비활성 상태로 유지되는 시간(분)을 정의합니다. 작업이 완료된 후 종료할 대화형 세션의 유휴 제한 시간을 정의합니다. 유휴 제한 시간 범위는 제한 시간 내에 있어야 합니다.

  기본값, 최소값, 최대값을 분 단위로 설정할 수 있습니다. 최소값은 1(분)입니다. AWS Glue 기본 제한 시간은 2,880분이지만 사용 프로필에서 원하는 기본값을 설정할 수 있습니다.

  '기본값'의 값을 설정하는 것이 좋습니다. 이 값은 사용자가 값을 설정하지 않은 경우에 세션 생성에 사용됩니다.

**관리자로 AWS Glue 사용 프로필을 생성하려면(콘솔)**

1. 왼쪽 탐색 창에서 **비용 관리**를 선택합니다.

1. **사용 프로필 생성**을 선택합니다.

1. 사용 프로필의 **사용 프로필 이름**을 입력합니다.

1. 다른 사람들이 사용 프로필의 용도를 쉽게 알 수 있도록 설명(선택 사항)을 입력합니다.

1. 프로필에 파라미터를 하나 이상 정의합니다. 양식의 모든 필드는 파라미터입니다. 세션 유휴 제한 시간 최소값을 예로 들 수 있습니다.

1. 사용 프로필에 적용되는 선택적 태그를 모두 정의합니다.

1. **저장**을 선택합니다.  
![\[AWS Glue에서 사용자 프로필을 생성하는 관리자의 예\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/usage-profiles-2-create.png)

**사용 프로필을 생성하려면(AWS CLI)**

1. 다음 명령을 입력하십시오.

   ```
   aws glue create-usage-profile --name profile-name --configuration file://config.json --tags list-of-tags
   ```

   여기서 config.json은 대화형 세션(`SessionConfiguration`) 및 작업(`JobConfiguration`)에 대한 파라미터 값을 정의할 수 있습니다.

   ```
   //config.json (There is a separate blob for session/job configuration
   {
       "SessionConfiguration": {
           "timeout": {
               "DefaultValue": "2880",
               "MinValue": "100",
               "MaxValue": "4000"
           },
           "idleTimeout": {
               "DefaultValue": "30",
               "MinValue": "10",
               "MaxValue": "4000"
           },
           "workerType": {
               "DefaultValue": "G.2X",
               "AllowedValues": [
                   "G.1X",
                   "G.2X",
                   "G.4X",
                   "G.8X",
                   "G.12X",
                   "G.16X",
                   "R.1X",
                   "R.2X",
                   "R.4X",
                   "R.8X"
               ]
           },
           "numberOfWorkers": {
               "DefaultValue": "10",
               "MinValue": "1",
               "MaxValue": "10"
           }
       },
       "JobConfiguration": {
           "timeout": {
               "DefaultValue": "2880",
               "MinValue": "100",
               "MaxValue": "4000"
           },
           "workerType": {
               "DefaultValue": "G.2X",
               "AllowedValues": [
                   "G.1X",
                   "G.2X",
                   "G.4X",
                   "G.8X",
                   "G.12X",
                   "G.16X",
                   "R.1X",
                   "R.2X",
                   "R.4X",
                   "R.8X"
               ]
           },
           "numberOfWorkers": {
               "DefaultValue": "10",
               "MinValue": "1",
               "MaxValue": "10"
           }
       }
   }
   ```

1. 다음 명령을 입력하여 사용 프로필을 생성합니다.

   ```
   aws glue get-usage-profile --name profile-name
   ```

   응답은 다음과 같습니다.

   ```
   {
       "ProfileName": "foo",
       "Configuration": {
           "SessionConfiguration": {
               "numberOfWorkers": {
                   "DefaultValue": "10",
                   "MinValue": "1",
                   "MaxValue": "10"
               },
               "workerType": {
                   "DefaultValue": "G.2X",
                   "AllowedValues": [
                       "G.1X",
                       "G.2X",
                       "G.4X",
                       "G.8X",
                       "G.12X",
                       "G.16X",
                       "R.1X",
                       "R.2X",
                       "R.4X",
                       "R.8X"
                   ]
               },
               "timeout": {
                   "DefaultValue": "2880",
                   "MinValue": "100",
                   "MaxValue": "4000"
               },
               "idleTimeout": {
                   "DefaultValue": "30",
                   "MinValue": "10",
                   "MaxValue": "4000"
               }
           },
           "JobConfiguration": {
               "numberOfWorkers": {
                   "DefaultValue": "10",
                   "MinValue": "1",
                   "MaxValue": "10"
               },
               "workerType": {
                   "DefaultValue": "G.2X",
                   "AllowedValues": [
                       "G.1X",
                       "G.2X",
                       "G.4X",
                       "G.8X",
                       "G.12X",
                       "G.16X",
                       "R.1X",
                       "R.2X",
                       "R.4X",
                       "R.8X"
                   ]
               },
               "timeout": {
                   "DefaultValue": "2880",
                   "MinValue": "100",
                   "MaxValue": "4000"
               }
           }
       },
       "CreatedOn": "2024-01-19T23:15:24.542000+00:00"
   }
   ```

사용 프로필을 관리하는 데 사용되는 추가 CLI 명령:
+ aws glue list-usage-profiles
+ aws glue update-usage-profile --name *profile-name* --configuration *file://config.json*
+ aws glue delete-usage-profile --name *profile-name*

## 사용 프로필 편집
<a name="w2aac15c15c19b5"></a>

관리자는 자신이 생성한 사용 프로필을 편집하여 작업 및 대화형 세션의 프로필 파라미터 값을 변경할 수 있습니다.

사용 프로필을 편집하려면:

**관리자로 AWS Glue 사용 프로필을 편집하려면(콘솔)**

1. 왼쪽 탐색 창에서 **비용 관리**를 선택합니다.

1. 편집 권한이 있는 사용자 프로필을 선택하고 **편집**을 선택합니다.

1. 필요에 따라 프로필을 변경합니다. 기본적으로, 이미 값이 있는 파라미터가 확장됩니다.

1. **편집 내용 저장**을 선택합니다.  
![\[AWS Glue에서 사용 프로필을 편집하는 사용자의 예\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/usage-profiles-4-edit.png)

**사용 프로필을 편집하려면(AWS CLI)**
+ 다음 명령을 입력하십시오. 위의 create 명령에 나와 있는 것과 동일한 `--configuration` 파일 구문이 사용됩니다.

  ```
  aws glue update-usage-profile --name profile-name --configuration file://config.json
  ```

  여기서 config.json은 대화형 세션(`SessionConfiguration`) 및 작업(`JobConfiguration`)에 대한 파라미터 값을 정의합니다.

## 사용 프로필 할당
<a name="w2aac15c15c19b7"></a>

**사용 프로필** 페이지의 **사용률 상태** 열에는 사용 프로필이 사용자에게 할당되었는지 여부가 표시됩니다. 상태를 마우스로 가리키면 할당된 IAM 엔터티가 표시됩니다.

관리자는 AWS Glue 리소스를 생성하는 사용자/역할에 AWS Glue 사용 프로필을 할당할 수 있습니다. 프로필 할당은 다음 두 가지 작업의 조합입니다.
+ `glue:UsageProfile` 키로 IAM 사용자/역할 태그를 업데이트
+ 사용자/역할의 IAM 정책 업데이트

AWS Glue Studio를 사용하여 작업/대화형 세션을 생성하는 사용자의 경우, 관리자가 다음 역할을 태깅합니다.
+ 작업 제한의 경우 관리자는 로그인한 콘솔 역할을 태깅합니다.
+ 대화형 세션에 대한 제한 사항의 경우 관리자는 사용자가 노트북을 만들 때 제공하는 역할을 태깅합니다.

다음은 관리자가 AWS Glue 리소스를 생성하는 IAM 사용자/역할에 대해 업데이트해야 하는 예시 정책입니다.

```
{
    "Effect": "Allow",
    "Action": [
        "glue:GetUsageProfile"
    ],
    "Resource": [
        "arn:aws:glue:us-east-1:123456789012:usageProfile/foo"
    ]
}
```

AWS Glue는 AWS Glue사용 프로필에 지정된 값을 기반으로 작업, 작업 실행 및 세션 요청을 검증하고 요청이 허용되지 않는 경우 예외를 발생시킵니다. 동기 API의 경우 사용자에게 오류가 발생합니다. 비동기 경로의 경우 입력 파라미터가 사용자/역할에 할당된 프로필에 허용되는 범위를 벗어났다는 오류 메시지와 함께 실패한 작업 실행이 생성됩니다.

사용자/역할에 사용 프로필을 할당하려면:

1. Identity and Access Management(IAM) 콘솔을 엽니다.

1. 탐색 창에서 **사용자** 또는 **역할**을 선택합니다.

1. 사용자 또는 역할을 선택합니다.

1. **태그** 탭을 선택합니다.

1. **새 태그 추가**를 선택합니다.

1. **키**가 `glue:UsageProfile`이고 **값**이 사용자 프로필 이름인 태그를 추가합니다.

1. **변경 사항 저장**을 선택합니다  
![\[IAM 역할에 태그를 추가하는 예\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/usage-profiles-iam-role-tagged.png)

## 할당된 사용 프로필 보기
<a name="w2aac15c15c19b9"></a>

사용자는 할당된 사용 프로필을 보고 API 호출을 통해 AWS Glue 작업 및 세션 리소스를 생성하거나 작업을 시작할 때 사용할 수 있습니다.

프로필 권한은 IAM 정책에서 제공됩니다. 호출자 정책에 `glue:UsageProfile` 권한이 있으면 사용자는 프로필을 볼 수 있습니다. 그렇지 않으면 액세스 거부됨 오류가 발생합니다.

할당된 사용 프로필을 보려면:

1. 왼쪽 탐색 창에서 **비용 관리**를 선택합니다.

1. 볼 권한이 있는 사용자 프로필을 선택합니다.

![\[AWS Glue에서 자신에게 할당된 사용 프로필을 보는 사용자의 예\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/usage-profiles-3-view.png)


# 사용 프로필 및 작업
<a name="start-usage-profiles-jobs"></a>

## 사용 프로필 관련 작업 작성
<a name="w2aac15c15c21b3"></a>

작업을 작성하는 동안에는 사용 프로필에 설정된 제한과 기본값이 적용됩니다. 저장 시 작업에 프로필이 할당됩니다.

## 사용 프로필 관련 작업 실행
<a name="w2aac15c15c21b5"></a>

작업 실행을 시작하면 AWS Glue가 호출자 프로필에 설정된 제한을 적용합니다. 직접 호출자가 없는 경우 Glue는 작성자가 작업에 할당한 프로필의 한도를 적용합니다.

**참고**  
AWS Glue 워크플로 또는 AWS Glue 트리거에 의해 일정에 따라 작업이 실행되면 작성자가 작업에 할당된 프로필이 적용됩니다.  
외부 서비스(Step Functions, MWAA) 또는 `StartJobRun` API에서 작업을 실행하는 경우 호출자의 프로필 한도가 적용됩니다.

AWS Glue 워크플로 또는 AWS Glue 트리거의 경우: 기존 작업을 업데이트하여 새 프로필 이름을 저장해야 합니다. 그래야 예약된 실행에 대해 런타임에 프로필의 한도(최소, 최대, 허용된 작업자 수)이 적용됩니다.

## 작업에 할당된 사용 프로필 보기
<a name="w2aac15c15c21b7"></a>

작업에 할당된 프로필(런타임 시 예약된 AWS Glue 워크플로 또는 AWS Glue 트리거와 함께 사용됨)을 보려면 작업 **세부 정보** 탭을 확인하면 됩니다. 작업 실행 세부 정보 탭에서 이전 실행에 사용된 프로필을 볼 수도 있습니다.

## 작업에 연결된 사용 프로필 업데이트 또는 삭제
<a name="w2aac15c15c21b9"></a>

작업에 할당된 프로필은 업데이트 시에 변경됩니다. 작성자에게 사용 프로필이 할당되지 않은 경우 이전에 작업에 연결된 모든 프로필이 사용자 프로필에서 제거됩니다.

# AWS Glue Data Catalog 시작하기
<a name="start-data-catalog"></a>

 AWS Glue Data Catalog는 영구적 기술 메타데이터 스토어입니다. AWS 클라우드에서 메타데이터를 저장 및 공유하고 주석을 다는 데 사용할 수 있는 관리형 서비스입니다. 자세한 내용은 [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro) 섹션을 참조하세요.


|  | 
| --- |
| AWS Glue 콘솔 및 일부 사용자 인터페이스가 최근에 업데이트되었습니다. | 

## 개요
<a name="start-data-catalog-overview"></a>

 이 자습서를 사용하여 Amazon S3 버킷을 데이터 원본으로 사용하는 첫 번째 AWS Glue 데이터 카탈로그를 생성할 수 있습니다.

 이 자습서에서는 AWS Glue 콘솔을 사용하여 다음을 수행합니다.

1.  데이터베이스 생성 

1.  테이블 생성 

1.  Amazon S3 버킷을 데이터 소스로 사용 

 이 단계를 완료하면 Amazon S3 버킷을 데이터 원본으로 사용하여 AWS Glue 데이터 카탈로그를 채울 수 있습니다.

## 1단계: 데이터베이스 생성
<a name="start-data-catalog-database"></a>

 시작하려면 AWS Management Console에 로그인한 후 [AWS Glue 콘솔](https://console.aws.amazon.com/glue)을 엽니다.

 **AWS Glue 콘솔을 사용하여 데이터베이스 생성** 

1.  AWS Glue 콘솔에서 왼쪽 메뉴의 **Data catalog**(데이터 카탈로그)에서 **Databases**(데이터베이스)를 선택합니다.

1.  **데이터베이스 추가(Add database)**를 선택합니다.

1.  데이터베이스 생성 페이지에서 데이터베이스의 이름을 입력합니다. **위치 - *선택 사항*** 섹션에서 데이터 카탈로그의 클라이언트가 사용할 URI 위치를 설정합니다. 이 정보를 몰라도 데이터베이스 생성을 계속할 수 있습니다.

1.  (선택 사항). 데이터베이스에 대한 설명을 입력합니다.

1.  **데이터베이스 생성**을 선택합니다.

 축하합니다. AWS Glue 콘솔을 사용하여 첫 번째 데이터베이스를 설정했습니다. 새 데이터베이스가 사용 가능한 데이터베이스 목록에 나타납니다. **데이터베이스(Databases)** 대시보드에서 데이터베이스 이름을 선택하여 데이터베이스를 편집할 수 있습니다.

 **다음 단계** 

 **데이터베이스를 생성하는 다른 방법:** 

 방금 AWS Glue 콘솔을 사용하여 데이터베이스를 생성했지만 데이터베이스를 생성하는 다른 방법이 있습니다.
+ 크롤러를 사용하여 자동으로 데이터베이스와 테이블을 생성할 수 있습니다. 크롤러를 사용하여 데이터베이스를 설정하려면 [AWS Glue 콘솔에서 크롤러 작업](https://docs.aws.amazon.com/glue/latest/dg/console-crawlers.html)을 참조하세요.
+  CloudFormation 템플릿을 사용할 수 있습니다. [AWS Glue Data Catalog 템플릿을 사용하여 AWS Glue 리소스 생성](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html)을 참조하세요.
+  AWS Glue 데이터베이스 API 작업을 사용하여 데이터베이스를 생성할 수도 있습니다.

   `create` 작업을 사용하여 데이터베이스를 생성하려면 `DatabaseInput`(필수) 파라미터를 포함하여 요청을 구조화합니다.

   예:   
****  
 다음은 CLI, Boto3 또는 DDL을 사용하여 자습서에서 사용한 S3 버킷의 동일한 flight\$1data.csv 파일을 기반으로 테이블을 정의하는 방법의 예입니다.  

  ```
  aws glue create-database --database-input "{\"Name\":\"clidb\"}"                                              
  ```

  ```
  glueClient = boto3.client('glue')
  
  response = glueClient.create_database(
      DatabaseInput={
          'Name': 'boto3db'
      }
  )
  ```

 데이터베이스 API 데이터 유형, 구조 및 작업에 대한 자세한 내용은 [데이터베이스 API](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-databases.html)를 참조하세요.

 **다음 단계** 

 다음 섹션에서는 테이블을 생성하고 데이터베이스에 추가합니다.

데이터 카탈로그에 대한 설정과 권한을 탐색할 수도 있습니다. [AWS Glue 콘솔에서 데이터 카탈로그 설정 관련 작업](https://docs.aws.amazon.com/glue/latest/dg/console-data-catalog-settings.html)을 참조하세요.

## 2단계. 테이블 생성
<a name="start-data-catalog-table"></a>

 이 단계에서는 AWS Glue 콘솔을 사용하여 테이블을 생성합니다.

1.  AWS Glue 콘솔에서 왼쪽 메뉴에서 **테이블(Tables)**을 선택합니다.

1.  **테이블 추가**를 선택합니다.

1.  **Table details**(테이블 세부 정보)에 테이블 이름을 입력하여 테이블 속성을 설정합니다.

1.  **Databases**(데이터베이스) 섹션의 드롭다운 메뉴에서 1단계에서 생성한 데이터베이스를 선택합니다.

1.  **Add a data store**(데이터 스토어 추가) 섹션에서 **S3**는 소스 유형으로 기본 선택됩니다.

1.  **Data is located in**(데이터 위치)에서 **Specified path in another account**(다른 계정의 지정된 경로)를 선택합니다.

1. **Include path**(포함 경로) 입력 필드의 경로를 복사하여 붙여 넣습니다.

   `s3://crawler-public-us-west-2/flight/2016/csv/`

1.  **Data format**(데이터 형식) 섹션의 **Classification**(분류)에서 **CSV**를 선택하고 **Delimiter**(구분 기호)에서 **comma (,)**(쉼표(,))를 선택합니다. **다음**을 선택합니다.

1. 스키마를 정의하라는 메시지가 나타납니다. 스키마는 데이터 레코드의 구조와 포맷을 정의합니다. **열 추가(Add column)**를 선택합니다. 자세한 내용은 [ 스키마 레지스트리](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html#schema-registry-schemas.html)를 참조하세요.

1.  열 속성을 지정합니다.

   1. 열 이름을 입력합니다.

   1. **열 유형(Column type)**에 기본적으로 '문자열(string)'이 이미 선택되어 있습니다.

   1. **열 번호(Column number)**에 기본적으로 '1'이 이미 선택되어 있습니다.

   1. **추가**를 선택합니다.

1.  파티션 인덱스를 추가하라는 메시지가 나타납니다. 이는 선택 사항입니다. 이 단계를 건너뛰려면 **다음(Next)**을 선택합니다.

1.  테이블 속성의 요약이 표시됩니다. 모든 것이 예상대로 표시되면 **생성**을 선택합니다. 그렇지 않으면 **뒤로(Back)**를 선택하고 필요에 따라 편집합니다.

 축하합니다. 성공적으로 테이블을 수동으로 생성하고 데이터베이스에 연결했습니다. 새로 생성된 테이블은 테이블(Tables) 대시보드에 나타납니다. 대시보드에서 모든 테이블을 수정하고 관리할 수 있습니다.

 자세한 내용은 [AWS Glue 콘솔에서 테이블 관련 작업](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html)을 참조하세요.

## 다음 단계
<a name="start-data-catalog-next-steps"></a>

 **다음 단계** 

 이제 데이터 카탈로그가 채워졌으므로 AWS Glue에서 작업 작성을 시작할 수 있습니다. [AWS Glue Studio를 사용하여 시각적 ETL 작업 구축](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html)을 참조하세요.

 콘솔을 사용하는 것 외에도 다음과 같은 다른 방법으로 데이터 카탈로그에서 테이블을 정의할 수 있습니다.
+  [크롤러 생성 및 실행](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) 
+  [AWS Glue의 크롤러로 분류자 추가](https://docs.aws.amazon.com/glue/latest/dg/add-classifier.html) 
+  [AWS Glue 테이블 API 사용](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html) 
+  [AWS Glue Data Catalog 템플릿 사용](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html) 
+  [ Apache Hive 메타스토어 마이그레이션](https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/Hive_metastore_migration) 
+  [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/glue/create-table.html), Boto3 또는 데이터 정의 언어(DDL) 사용   
****  
 다음은 CLI, Boto3 또는 DDL을 사용하여 자습서에서 사용한 S3 버킷의 동일한 flight\$1data.csv 파일을 기반으로 테이블을 정의하는 방법의 예입니다.  
 AWS CLI 명령을 구조화하는 방법은 관련 설명서를 참조하세요. CLI 예제에는 'aws glue create-table --table-input' 값에 대한 JSON 구문이 포함되어 있습니다.  

  ```
  {
          "Name": "flights_data_cli",
          "StorageDescriptor": {
              "Columns": [
                  {
                      "Name": "year",
                      "Type": "bigint"
                  },
                  {
                      "Name": "quarter",
                      "Type": "bigint"
                  }
              ],
              "Location": "s3://crawler-public-us-west-2/flight/2016/csv",
              "InputFormat": "org.apache.hadoop.mapred.TextInputFormat",
              "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
              "Compressed": false,
              "NumberOfBuckets": -1,
              "SerdeInfo": {
                  "SerializationLibrary": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
                  "Parameters": {
                      "field.delim": ",",
                      "serialization.format": ","
                  }
              }
          },
          "PartitionKeys": [
              {
                  "Name": "mon",
                  "Type": "string"
              }
          ],
          "TableType": "EXTERNAL_TABLE",
          "Parameters": {
              "EXTERNAL": "TRUE",
              "classification": "csv",
              "columnsOrdered": "true",
              "compressionType": "none",
              "delimiter": ",",
              "skip.header.line.count": "1",
              "typeOfData": "file"
          }
      }
  ```

  ```
  import boto3
  
  glue_client = boto3.client("glue")
  
  response = glue_client.create_table(
      DatabaseName='sampledb',
      TableInput={
          'Name': 'flights_data_manual',
      'StorageDescriptor': {
        'Columns': [{
          'Name': 'year',
          'Type': 'bigint'
        }, {
          'Name': 'quarter',
          'Type': 'bigint'
        }],
        'Location': 's3://crawler-public-us-west-2/flight/2016/csv',
        'InputFormat': 'org.apache.hadoop.mapred.TextInputFormat',
        'OutputFormat': 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat',
        'Compressed': False,
        'NumberOfBuckets': -1,
        'SerdeInfo': {
          'SerializationLibrary': 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe',
          'Parameters': {
            'field.delim': ',',
            'serialization.format': ','
          }
        },
      },
      'PartitionKeys': [{
        'Name': 'mon',
        'Type': 'string'
      }],
      'TableType': 'EXTERNAL_TABLE',
      'Parameters': {
        'EXTERNAL': 'TRUE',
        'classification': 'csv',
        'columnsOrdered': 'true',
        'compressionType': 'none',
        'delimiter': ',',
        'skip.header.line.count': '1',
        'typeOfData': 'file'
      }
      }
  )
  ```

  ```
  CREATE EXTERNAL TABLE `sampledb`.`flights_data` (
    `year` bigint, 
    `quarter` bigint)
  PARTITIONED BY ( 
    `mon` string)
  ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY ',' 
  STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
  OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
  LOCATION
    's3://crawler-public-us-west-2/flight/2016/csv/'
  TBLPROPERTIES (
    'classification'='csv', 
    'columnsOrdered'='true', 
    'compressionType'='none', 
    'delimiter'=',', 
    'skip.header.line.count'='1', 
    'typeOfData'='file')
  ```

# 데이터 스토어에 대한 네트워크 액세스 설정
<a name="start-connecting"></a>

작업을 추출, 변환 및 로드(ETL)하려면 AWS Glue는 데이터 스토어에 액세스할 수 있어야 합니다. 작업이 Virtual Private Cloud(VPC) 서브넷에서 실행될 필요가 없으면(예를 들어, 데이터를 Amazon S3에서 Amazon S3로 변환하는 것) 추가 구성이 필요 없습니다.

VPC 서브넷에서 작업을 실행해야 하는 경우(예: 프라이빗 서브넷의 JDBC 데이터 스토어에서 데이터 변환) AWS Glue는 작업이 VPC 내의 다른 리소스에 안전하게 연결할 수 있도록 [탄력적 네트워크 인터페이스](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)를 설정합니다. 지정한 서브넷의 IP 주소 범위에 속하는 프라이빗 IP 주소가 이 탄력적 네트워크 인터페이스에 할당됩니다. 퍼블릭 IP 주소가 할당되지 않습니다. AWS Glue 연결에 지정된 보안 그룹은 탄력적 네트워크 인터페이스 각각에 적용됩니다. 자세한 내용은 [AWS Glue에서 Amazon RDS 데이터 스토어에 대해 JDBC를 연결하도록 Amazon VPC 설정](setup-vpc-for-glue-access.md) 섹션을 참조하세요.

작업이 액세스한 모든 JDBC 데이터 스토어는 VPC 서브넷에서 사용 가능해야 합니다. VPC 안에서 Amazon S3에 액세스하려면 [VPC 엔드포인트](vpc-endpoints-s3.md)가 필요합니다. 작업에서 VPC 리소스와 퍼블릭 인터넷에 모두 액세스해야 할 경우 VPC 내부 네트워크 주소 변환(NAT) 게이트웨이가 VPC에 있어야 합니다.

 작업 또는 개발 엔드포인트는 한 번에 하나의 VPC(와 서브넷)에만 액세스할 수 있습니다. 다른 VPC의 데이터 스토어로 액세스하려면 다음과 같은 옵션이 있습니다.
+ VPC 피어링을 사용하여 데이터 스토어에 액세스합니다. VPC 피어링에 대한 자세한 내용은 [VPC 피어링 기초](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-basics.html) 단원을 참조하십시오.
+ Amazon S3 버킷을 중개 스토리지 위치로 사용합니다. 작업 1 출력값인 Amazon S3를 작업 2의 입력값으로 하여 작업을 두 가지로 분할합니다.

Amazon VPC를 사용하여 Amazon Redshift 데이터 스토어에 연결하는 방법에 대한 자세한 내용은 [Redshift 연결 구성](aws-glue-programming-etl-connect-redshift-home.md#aws-glue-programming-etl-connect-redshift-configure) 섹션을 참조하세요.

Amazon VPC를 사용하여 Amazon RDS 데이터 스토어에 연결하는 방법에 대한 자세한 내용은 [AWS Glue에서 Amazon RDS 데이터 스토어에 대해 JDBC를 연결하도록 Amazon VPC 설정](setup-vpc-for-glue-access.md) 섹션을 참조하세요.

Amazon VPC에 필요한 규칙을 설정한 후 데이터 스토어에 연결하는 데 필요한 속성을 사용하여 AWS Glue에서 연결을 생성합니다. 연결에 대한 자세한 정보는 [데이터에 연결](glue-connections.md) 섹션을 참조하세요.

**참고**  
AWS Glue DNS 환경을 설정하도록 합니다. 자세한 내용은 [VPC에서 DNS 설정](set-up-vpc-dns.md) 섹션을 참조하세요.

**Topics**
+ [AWS Glue에서 PyPI에 연결하도록 VPC 설정](setup-vpc-for-pypi.md)
+ [VPC에서 DNS 설정](set-up-vpc-dns.md)

# AWS Glue에서 PyPI에 연결하도록 VPC 설정
<a name="setup-vpc-for-pypi"></a>

Python Package Index(PyPI)는 Python 프로그래밍 언어용 소프트웨어 리포지토리입니다. 이 주제에서는 pip 설치 패키지(세션 생성자가 `--additional-python-modules` 플래그를 사용하여 지정함) 사용을 지원하는 데 필요한 세부 정보를 다룹니다.

커넥터와 함께 AWS Glue 대화형 세션을 사용하면 커넥터에 지정된 서브넷을 통해 VPC 네트워크를 사용하게 됩니다. 따라서 특별 구성을 설정하지 않으면 AWS 서비스 및 기타 네트워크 대상을 사용할 수 없습니다.

이 문제의 해결 방법은 다음과 같습니다.
+ 세션에서 연결할 수 있는 인터넷 게이트웨이 사용.
+ 패키지 세트의 종속성에서 전이 폐쇄 특성을 포함하는 PyPI/simple 리포지토리로 S3 버킷의 설정 및 사용.
+ PyPI를 미러링하고 VPC에 연결하는 CodeArtifact 리포지토리 사용.

## 인터넷 게이트웨이 설정
<a name="setup-vpc-for-pypi-internet-gateway"></a>

기술적 측면은 [NAT 게이트웨이 사용 사례](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-scenarios.html)에 자세히 설명되어 있지만 `--additional-python-modules` 사용에 관한 다음 요구 사항도 참고하세요. 특히, VPC의 구성에 따라 결정되는 pypi.org에 대한 액세스 권한이 `--additional-python-modules`에 필요합니다. 다음과 같은 요구 사항을 확인합니다.

1. 사용자 세션의 경우 pip install을 통해 추가 python 모듈을 설치해야 합니다. 세션에서 커넥터를 사용하는 경우 구성이 영향을 받을 수 있습니다.

1. `--additional-python-modules`에서 커넥터를 사용할 때 세션이 시작되면 커넥터의 `PhysicalConnectionRequirements`에 연결된 서브넷이 pypi.org에 도달하기 위한 네트워크 경로를 제공해야 합니다.

1. 구성이 올바른지 확인해야 합니다.

## 대상 PyPI/simple 리포지토리를 호스팅하도록 Amazon S3 버킷 설정
<a name="setup-vpc-for-pypi-s3-bucket"></a>

이 예제는 Amazon S3에서 패키지 세트 및 해당 종속성에 대한 PyPI 미러를 설정합니다.

패키지 세트에 대한 PyPI 미러를 설정하려면:

```
# pip download all the dependencies
pip download -d s3pypi --only-binary :all: plotly gglplot
pip download -d s3pypi --platform manylinux_2_17_x86_64 --only-binary :all: psycopg2-binary
# create and upload the pypi/simple index and wheel files to the s3 bucket
s3pypi -b test-domain-name --put-root-index -v s3pypi/*
```

기존 아티팩트 리포지토리가 이미 있는 경우, 위와 같이 Amazon S3 버킷의 예제 URL 대신 제공할 수 있는 pip 사용을 위한 인덱스 URL이 있을 것입니다.

몇 가지 예제 패키지에서 사용자 지정 indexx-url을 사용하려면:

```
%%configure
{
    "--additional-python-modules": "psycopg2_binary==2.9.5",
    "python-modules-installer-option": "--no-cache-dir --verbose --index-url https://test-domain-name.s3.amazonaws.com/ --trusted-host test-domain-name.s3.amazonaws.com"
}
```

## VPC에 연결된 pypi의 CodeArtifact 미러 설정
<a name="setup-vpc-for-pypi-code-artifact"></a>

미러를 설정하려면:

1. 커넥터에서 사용하는 서브넷과 동일한 리전에서 리포지토리를 생성합니다.

   `Public upstream repositories`를 선택하고 `pypi-store`를 선택합니다.

1. 서브넷에 VPC에서 리포지토리로의 액세스를 제공합니다.

1. `python-modules-installer-option`을 사용하여 올바른 `--index-url`을 지정합니다.

   ```
   %%configure
   {
       "--additional-python-modules": "psycopg2_binary==2.9.5",
       "python-modules-installer-option": "--no-cache-dir --verbose --index-url https://test-domain-name.s3.amazonaws.com/ --trusted-host test-domain-name.s3.amazonaws.com"
   }
   ```

자세한 내용은 [VPC에서 CodeArtifact 사용](https://docs.aws.amazon.com/codeartifact/latest/ug/use-codeartifact-from-vpc.html)을 참조하세요.

# VPC에서 DNS 설정
<a name="set-up-vpc-dns"></a>

도메인 이름 시스템(DNS)은 인터넷에서 사용되는 이름을 해당 IP 주소로 확인할 때 기준이 됩니다. DNS 호스트 이름은 컴퓨터를 고유적으로 지정하는 이름으로서, 호스트 이름과 도메인 이름으로 구성됩니다. DNS 서버는 DNS 호스트 이름을 해당 IP 주소로 확인합니다.

VPC에 DNS를 설정하려면 DNS 호스트 이름과 DNS 확인이 모두 VPC에서 활성화되었는지 확인합니다. VPC 네트워크 속성 `enableDnsHostnames` 및 `enableDnsSupport`는 `true`로 설정되어 있어야 합니다. 이러한 속성을 보고 수정하려면 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)의 VPC 콘솔로 이동합니다.

자세한 내용은 [VPC에서 DNS 사용하기](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) 단원을 참조하세요. 또한 AWS CLI를 사용하고 [modify-vpc-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-attribute.html) 명령을 호출하여 VPC 네트워크 속성을 구성할 수 있습니다.

**참고**  
Route 53를 사용한다면 구성이 DNS 네트워크 속성을 재정의하지 않도록 확인합니다.

# AWS Glue에서 암호화 설정
<a name="set-up-encryption"></a>

다음 예제 작업 흐름에는 AWS Glue로 암호화를 사용할 때 구성하는 옵션이 강조되어 있습니다. 이 예제는 특정 AWS Key Management Service(AWS KMS) 키 사용을 설명하지만 사용자의 특정 요구에 따라 다른 설정을 선택할 수도 있습니다. 이 작업 흐름에는 AWS Glue 설정 시 암호화에 관한 옵션만 강조 표시되어 있습니다.

1. AWS Glue 콘솔 사용자가 모든 AWS Glue API 작업(예: `"glue:*"`)을 허용하는 권한 정책을 사용하지 않을 경우에는 다음 작업이 허용되는지 확인하십시오.
   + `"glue:GetDataCatalogEncryptionSettings"`
   + `"glue:PutDataCatalogEncryptionSettings"`
   + `"glue:CreateSecurityConfiguration"`
   + `"glue:GetSecurityConfiguration"`
   + `"glue:GetSecurityConfigurations"`
   + `"glue:DeleteSecurityConfiguration"`

1. 암호화된 카탈로그에 액세스하거나 이에 쓰는 모든 클라이언트(즉, 콘솔 사용자, 크롤러, 작업 또는 개발 엔드포인트)에는 다음 권한이 필요합니다.

1. 암호화된 연결 암호에 액세스하는 사용자 또는 역할은 다음 권한이 필요합니다.

1. 암호화된 데이터를 Amazon S3에 기록하는 추출, 변환, 로드 작업 역할은 다음 권한이 있어야 합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Action": [
         "kms:Decrypt",
         "kms:Encrypt",
         "kms:GenerateDataKey"
       ],
       "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
     }
   }
   ```

------

1. 암호화된 Amazon CloudWatch Logs를 기록하는 ETL 작업 또는 크롤러는 키 및 IAM 정책에 다음 권한이 있어야 합니다.

   키 정책(IAM 정책 아님)에서 다음을 수행합니다.

   ```
   {
    	"Effect": "Allow",
    	"Principal": {
    		"Service": "logs.region.amazonaws.com"
    	},
    	"Action": [
    		"kms:Encrypt*",
    		"kms:Decrypt*",
    		"kms:ReEncrypt*",
    		"kms:GenerateDataKey*",
    		"kms:Describe*"
    	],
    	"Resource": "<arn of key used for ETL/crawler cloudwatch encryption>"
    }
   ```

   키 정책에 대한 자세한 내용은 *AWS Key Management Service Developer Guide*의 [Using Key Policies in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)를 참조하세요.

   IAM 정책에서 `logs:AssociateKmsKey` 권한을 첨부합니다.

   ```
   {
    	"Effect": "Allow",
    	"Principal": {
    		"Service": "logs.region.amazonaws.com"
    	},
    	"Action": [
    		"logs:AssociateKmsKey"
    	],
    	"Resource": "<arn of key used for ETL/crawler cloudwatch encryption>"
    }
   ```

1. 암호화된 작업 북마크를 사용하는 ETL 작업은 다음 권한이 있어야 합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Action": [
         "kms:Decrypt",
         "kms:Encrypt"
       ],
       "Resource": "arn:aws:kms:us-east-1:111122223333:key/*"
     }
   }
   ```

------

1. AWS Glue 콘솔의 탐색 창에서 **설정**을 선택합니다.

   1. [**데이터 카탈로그 설정(Data catalog settings)**] 페이지에서 [**메타데이터 암호화(Metadata encryption)**]를 선택하여 Data Catalog를 암호화합니다. 이 옵션은 사용자가 선택한 AWS KMS 키로 Data Catalog의 모든 객체를 암호화합니다.

   1.  **AWS KMS 키**의 경우 **aws/glue**를 선택합니다. 사용자가 생성한 AWS KMS 키를 선택할 수도 있습니다.
**중요**  
AWS Glue에서는 대칭 고객 마스터 키(CMK)만 지원합니다. **AWS KMS 키( key)** 목록에는 대칭 키만 표시됩니다. 그러나 **Choose a AWS KMS key ARN**(KMS 키 ARN 선택)을 선택하면 콘솔에서 모든 키 유형의 ARN을 입력할 수 있습니다. 대칭 키에 대한 ARN만 입력해야 합니다.

   암호화가 활성화된 경우 Data Catalog에 액세스하는 클라이언트는 AWS KMS 권한이 있어야 합니다.

1. 탐색 창에서 **보안 구성**을 선택합니다. 보안 구성은 AWS Glue 프로세스를 구성할 때 사용할 수 있는 보안 속성 세트입니다. 그런 다음 **보안 구성 추가**를 선택합니다. 구성에서 다음 옵션 중 하나를 선택합니다.

   1. **S3 암호화**를 선택합니다. **암호화 모드**로 **SSE-KMS**를 선택합니다. **AWS KMS키**는 **aws/s3**을 선택합니다(사용자에게 이 키를 사용할 권한이 있어야 합니다). 이제 작업이 Amazon S3에 기록한 데이터로 AWS 관리형 AWS Glue AWS KMS 키를 사용할 수 있습니다.

   1. **CloudWatch Logs 암호화**를 선택하고 CMK를 선택합니다. 사용자에게 이 키를 사용할 권한이 있어야 합니다. 자세한 내용은 *AWS Key Management Service Developer Guide*의 [Encrypt Log Data in CloudWatch Logs Using AWS KMS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)를 참조하세요.
**중요**  
AWS Glue에서는 대칭 고객 마스터 키(CMK)만 지원합니다. **AWS KMS 키( key)** 목록에는 대칭 키만 표시됩니다. 그러나 **Choose a AWS KMS key ARN**(KMS 키 ARN 선택)을 선택하면 콘솔에서 모든 키 유형의 ARN을 입력할 수 있습니다. 대칭 키에 대한 ARN만 입력해야 합니다.

   1. **고급 속성**을 선택하고 **작업 북마크 암호화**를 선택합니다. **AWS KMS키**는 **aws/glue**를 선택합니다(사용자에게 이 키를 사용할 권한이 있어야 합니다). 이제 Amazon S3에 기록된 작업 북마크를 AWS Glue AWS KMS 키로 암호화할 수 있습니다.

1. 탐색 창에서 **연결**을 선택합니다.

   1. **연결 추가**를 선택하여 ETL 작업의 대상인 Java Database Connectivity(JDBC) 데이터 스토어에 대한 연결을 생성합니다.

   1. Secure Sockets Layer(SSL) 암호화를 사용하도록 강제하려면 **Require SSL connection(SSL 연결 요구)**을 선택하고 연결을 테스트합니다.

1. 탐색 창에서, **작업**을 선택합니다.

   1. **작업 추가**를 선택하여 데이터를 변환하는 작업을 만듭니다.

   1. 작업 정의에서 생성한 보안 구성을 선택합니다.

1. AWS Glue 콘솔에서 온디맨드 작업을 실행합니다. 작업에서 작성한 Amazon S3 데이터, 작업에서 작성한 CloudWatch Logs 및 작업 북마크가 모두 암호화되어 있는지 확인합니다.

# AWS Glue의 개발에 대한 네트워킹 설정
<a name="start-development-endpoint"></a>

AWS Glue로 추출, 변환, 로드(ETL) 스크립트를 실행하기 위해서 *개발 엔드포인트*를 사용하여 스크립트를 개발하고 테스트할 수 있습니다. 개발 엔드포인트는 AWS Glue 버전 2.0 작업과 함께 사용하도록 지원되지 않습니다. 버전 2.0 이상의 경우 선호하는 개발 방법은 AWS Glue 커널 중 하나에서 Jupyter Notebook을 사용하는 것입니다. 자세한 내용은 [AWS Glue 대화형 세션 시작하기](interactive-sessions.md) 섹션을 참조하세요.

## 개발 엔드포인트에 대한 네트워크 설정
<a name="setup-vpc-for-development-endpoint"></a>

개발 엔드포인트를 설정할 때 Virtual Private Cloud(VPC), 서브넷 및 보안 그룹을 지정합니다.

**참고**  
AWS Glue DNS 환경을 설정하도록 합니다. 자세한 내용은 [VPC에서 DNS 설정](set-up-vpc-dns.md) 섹션을 참조하세요.

AWS Glue를 가능하게 하여 필요한 리소스에 액세스하기 위해서는 행을 서브넷 라우팅 테이블에 추가하여 Amazon S3 접두사 목록과 VPC 엔드포인트를 연결합니다. 접두사 목록 ID는 VPC 트래픽을 허용하여 VPC 엔드포인트를 통해 AWS 서비스로 액세스할 수 있는 아웃바운드 보안 그룹을 생성하는 데 필요합니다. 로컬 시스템에서 이 개발 엔드포인트와 연결된 노트북 서버를 쉽게 연결하려면 행을 라우팅 테이블에 추가하여 인터넷 게이트웨이 ID를 추가합니다. 자세한 내용은 [VPC 엔드포인트](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)를 참조하세요. 서브넷 라우팅 테이블을 업데이트하여 다음 테이블과 비슷하게 만듭니다.


****  

| 대상 주소 | 대상 | 
| --- | --- | 
| 10.0.0.0/16 | 로컬 | 
| Amazon S3용 pl-id | vpce-id | 
| 0.0.0.0/0 | igw-xxxx | 

 AWS Glue가 구성 요소 간에 통신하려면 보안 그룹이 모든 TCP 포트에 자기 참조 인바운드 규칙을 지정해야 합니다. 자기 참조 규칙을 생성하여 VPC에서 동일한 보안 그룹으로 소스를 제한하고 모든 네트워크로 공개되지 않도록 합니다. VPC의 기본 보안 그룹은 ALL Traffic의 자기 참조 인바운드 액세스 규칙이 있습니다.

**보안 그룹을 설정하려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 [**Security Groups**]를 선택합니다.

1. 목록에서 기존 보안 그룹을 선택하거나 [**Create Security Group**]를 선택하여 개발 엔드포인트와 함께 사용합니다.

1. 보안 그룹 화면에서 [**Inbound**] 탭으로 이동합니다.

1. 자기 참조 규칙을 추가하여 AWS Glue 구성 요소를 허용하여 통신합니다. 특히, [**Type(유형)**] `All TCP` 의 규칙을 추가하고 확인합니다. [**Protocol(프로토콜)**]는 `TCP`이고 [**Port Range(포트 범위)**]는 모든 포트를 포함하고 포트의 [**Source(원본)**]은 [**Group ID(그룹 ID)**]이라는 동일한 보안 그룹입니다.

   인바운드 규칙은 다음과 비슷하게 보입니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/start-development-endpoint.html)

   다음은 자기 참조 인바운드 규칙 예제입니다.  
![\[자기 참조 인바운드 규칙 예제 이미지\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/SetupSecurityGroup-Start.png)

1. 아웃바운드 트래픽 규칙도 추가합니다. 아웃바운드 트래픽을 모든 포트로 열거나 자기 [**Type(유형)**] `All TCP` 의 자기 참조 규칙을 생성합니다. [**Protocol(프로토콜)**]는 `TCP`이고 [**Port Range(포트 범위)**]는 모든 포트를 포함하고 포트의 [**Source(원본)**]은 [**Group ID(그룹 ID)**]이라는 동일한 보안 그룹입니다.

   아웃바운드 규칙은 다음 규칙 중 하나와 비슷합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/start-development-endpoint.html)

## 노트북 서버용 Amazon EC2 설정
<a name="setup-vpc-for-notebook-server"></a>

 개발 엔드포인트를 통해 노트북 서버를 생성하여 Jupyter 노트북에서 ETL 스크립트를 테스트합니다. 노트북 통신을 가능하게 하려면 HTTPS(port 443)와 SSH(port 22)의 인바운드 규칙으로 보안 그룹을 지정합니다. 규칙의 소스가 0.0.0.0/0 또는 노트북에 연결하는 시스템의 IP 주소인지 확인합니다.

**보안 그룹을 설정하려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 [**Security Groups**]를 선택합니다.

1. 목록에서 기존 보안 그룹을 선택하거나 [**Create Security Group**]를 선택하여 노트북 서버와 함께 사용합니다. 개발 엔드포인트와 연결된 보안 그룹은 노트북 서버를 생성하는 데도 사용할 수 있습니다.

1. 보안 그룹 화면에서 [**Inbound**] 탭으로 이동합니다.

1. 이와 비슷한 인바운드 규칙을 추가합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/start-development-endpoint.html)

   다음은 보안 그룹에 대한 인바운드 규칙 예제를 소개합니다.  
![\[보안 그룹에 대한 인바운드 규칙 예제 이미지\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/SetupSecurityGroupNotebook-Start.png)