AWS 환경 구성

AWS Glue

Workflow의 첫 단계는 RDS 소스 데이터를 S3 Data Lake으로 수집하기 위해 AWS Glue ETL job을 실행하는 것입니다. 해당 작업을 수행하기 위해 필요한 Glue Catalog와 Glue ETL job이 이전에 실행한 CloudFormation template을 통해 생성 되어있는지 확인하겠습니다.

  1. AWS Glue 콘솔로 가서 chinook_mysql 데이터베이스에 다음 화면과 같은 11개의 테이블이 존재하는 지 확인 하십시오. 해당 테이블은 RDS의 chinook 데이터베이스를 Glue Crawler로 크롤링하여 생성 되었습니다. dw_setup

  2. Glue ETL Spark job도 존재하는 지 확인 하십시오. dw_setup

Glue ETL job은 소스 데이터베이스와 1:1로 매핑 된 테이블의 데이터를 추출하여 parquet 포맷으로 S3 bucket에 저장하는 작업을 수행 합니다.

  1. ETL job 하나를 선택하고 ETL 스크립트를 살펴 보십시오. 모든 ETL 스크립트에는 공통적으로 datalake_bucket, month_partition_key, year_partition_keyJob 파라미터로 받아서 데이터를 저장 할 S3 path를 설정합니다. 파라미터는 이 후 Airflow 작업을 통해 전달 됩니다. dw_setup

Airflow cluster

  1. Workflow 실행에 필요한 Python package를 Airflow 환경에 설치해야 합니다. 다음 명령어를 Cloud9 workspace의 terminal에서 실행하여 requirements.txt 파일을 만들고 Airflow S3 bucket으로 업로드 하십시오.

CLI를 실행하기 전에 <your_aws_account_id> 문구는 현재 사용하고 있는 12자리 AWS Account ID로 변경해야 합니다.

cd ~/environment
touch requirements.txt
echo "apache-airflow-providers-amazon==1.3.0" >> requirements.txt
aws s3 cp ./requirements.txt s3://mwaa-workshop-<your_aws_account_id>/
  1. Amazon MWAA 콘솔로 가서 MWAA 환경을 선택하고 Edit 버튼을 클릭 하십시오. MlEnv

  2. Requirements.txt 파일의 S3 경로를 설정하고 Next 버튼을 클릭하십시오. MWAA 환경의 다른 모든 설정은 그대로 유지하고 마지막 Review and save 페이지로 넘어가 Save 버튼을 클릭 하십시오. Dagrun

  3. MWAA 환경의 상태는 업데이트 중으로 표시 됩니다. 상단 메뉴에 Refresh 버튼을 클릭하여 상태를 확인 할 수 있습니다. Dwsetup

Airflow 환경이 변경 되기까지 약 5~10분 정도의 시간이 소요 됩니다. 환경 상태가 Available이 될 때까지 기다릴 필요 없이 다음 IAM 역할 설정을 진행 하십시오.

IAM roles

  1. 이 후에 workflow를 실행하려면 Airflow cluster가 S3, Glue, Athena 및 EMR 서비스에 접근 할 수 있는 권한이 필요합니다. Amazon MWAA 콘솔에서 MWAA 환경을 클릭하면 다음과 같이 cluster에 연결 된 IAM execution role을 확인 할 수 있습니다. Execution role 링크를 클릭하여 IAM 콘솔로 이동 하십시오. Dagrun

  2. 다음과 같은 3개의 Managed 정책을 추가 하십시오.

프로덕션 환경에서 IAM 정책을 생성 할 때 최소 권한을 부여하거나 작업을 수행하는 데 필요한 권한 만 부여하는 표준 보안 권고를 따르십시오.

Dagrun

  1. Athena 권한을 위한 Inline 정책을 추가 하겠습니다. 오른쪽에 Add inline policy을 클릭하고 다음 JSON 정책 문서를 copy/paste 하십시오.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "athena:*",
            "Resource": [
                "arn:aws:athena:*:*:workgroup/*"
            ]
        }
    ]
}

Dagrun Dagrun

  1. Inline 정책 이름을 입력하고 정책을 생성 하십시오. Dagrun

  2. 최종적으로 Inline 정책 또한 IAM role에 추가 된 것을 확인 하십시오. 이제 MWAA 환경은 AWS 서비스를 액세스 할 수 있는 권한을 부여 받았습니다. Dagrun