AWS Schema Conversion Tool을 사용하여 Apache Oozie 워크플로에 연결 - AWS Schema Conversion Tool

AWS Schema Conversion Tool을 사용하여 Apache Oozie 워크플로에 연결

AWS SCT 명령줄 인터페이스(CLI)를 사용하여 Apache Oozie 워크플로를 AWS Step Functions로 변환할 수 있습니다. Apache Hadoop 워크로드를 Amazon EMR로 마이그레이션한 후 AWS 클라우드의 네이티브 서비스를 사용하여 작업을 오케스트레이션할 수 있습니다. 자세한 내용은 Apache Hadoop에 연결 섹션을 참조하세요.

AWS SCT에서는 Oozie 워크플로를 AWS Step Functions로 변환한 후 AWS Lambda를 사용하여 AWS Step Functions에서 지원하지 않는 기능을 에뮬레이션합니다. 또한 AWS SCT는 Oozie 작업 속성을 AWS Systems Manager로 변환합니다.

Apache Oozie 워크플로를 변환하려면 AWS SCT 버전 1.0.671 이상을 사용해야 합니다. 또한 AWS SCT의 명령줄 인터페이스를 숙지해야 합니다. 자세한 내용은 AWS Schema Conversion Tool에 대한 CLI 참조 섹션을 참조하세요.

Apache Oozie를 소스로 사용하기 위한 사전 조건

AWS SCT CLI를 사용하여 Apache Oozie에 연결하려면 다음과 같은 사전 조건이 필요합니다.

  • 상태 시스템 정의를 저장할 Amazon S3 버킷을 생성합니다. 이러한 정의를 사용하여 상태 시스템을 구성할 수 있습니다. 자세한 내용은 Amazon S3 사용 설명서버킷 생성을 참조하세요.

  • AmazonS3FullAccess 정책을 사용하여 AWS Identity and Access Management(IAM) 역할을 생성합니다. AWS SCT는 이 IAM 역할을 사용하여 Amazon S3 버킷에 액세스합니다.

  • AWS 비밀 키와 AWS 비밀 액세스 키를 기록해 둡니다. AWS 액세스 키에 대한 자세한 내용은 IAM 사용 설명서에서 액세스 키 관리를 참조하세요.

  • AWS 보안 인증 정보와 Amazon S3 버킷 관련 정보를 전역 애플리케이션 설정의 AWS 서비스 프로필에 저장합니다. 그런 다음 AWS SCT는 이 AWS 서비스 프로필을 사용하여 AWS 리소스로 작업합니다. 자세한 내용은 AWS Schema Conversion Tool에서 프로필 관리 섹션을 참조하세요.

소스 Apache Oozie 워크플로로 작업하려면 AWS SCT에 소스 파일의 특정 구조가 필요합니다. 각 애플리케이션 폴더에는 job.properties 파일이 포함되어야 합니다. 이 파일에는 작업 속성의 키-값 페어가 포함되어 있습니다. 또한 각 애플리케이션 폴더에는 workflow.xml 파일이 포함되어야 합니다. 이 파일은 워크플로의 작업 노드와 제어 흐름 노드를 설명합니다.

Apache Oozie에 소스로 연결

다음 절차에 따라 Apache Oozie 소스 파일에 연결합니다.

AWS SCT CLI에서 Apache Oozie에 연결하려면
  1. 새 AWS SCT CLI 스크립트를 생성하거나 기존 시나리오 템플릿을 편집합니다. 예를 들어 OozieConversionTemplate.scts 템플릿을 다운로드하여 편집할 수 있습니다. 자세한 내용은 CLI 시나리오 가져오기 섹션을 참조하세요.

  2. AWS SCT 애플리케이션 설정을 구성합니다.

    다음 코드 예제에서는 애플리케이션 설정을 저장하고 프로젝트에 암호를 저장할 수 있도록 합니다. 이렇게 저장된 설정은 다른 프로젝트에서 사용할 수 있습니다.

    SetGlobalSettings -save: 'true' -settings: '{ "store_password": "true" }' /
  3. 새 AWS SCT 프로젝트를 생성합니다.

    다음 코드 예제는 c:\sct 폴더에 oozie 프로젝트를 만듭니다.

    CreateProject -name: 'oozie' -directory: 'c:\sct' /
  4. AddSource 명령을 사용하여 소스 Apache Oozie 파일이 있는 폴더를 프로젝트에 추가합니다. vendor 파라미터에 대해 APACHE_OOZIE 값을 사용해야 합니다. 또한 필수 파라미터 namemappingsFolder의 값을 제공해야 합니다.

    다음 코드 예제는 Apache Oozie를 AWS SCT 프로젝트에 소스로 추가합니다. 이 예제에서는 이름이 OOZIE인 소스 객체를 만듭니다. 이 객체 이름을 사용하여 매핑 규칙을 추가합니다. 이 코드 예제를 실행하면 AWS SCT가 c:\oozie 폴더를 사용하여 프로젝트에 소스 파일을 로드합니다.

    AddSource -name: 'OOZIE' -vendor: 'APACHE_OOZIE' -mappingsFolder: 'c:\oozie' /

    Windows에서 이 예제와 다음 예제를 사용할 수 있습니다.

  5. ConnectSource 명령을 사용하여 소스 Apache Oozie 파일에 연결합니다. 이전 단계에서 정의한 소스 객체의 이름을 사용합니다.

    ConnectSource -name: 'OOZIE' -mappingsFolder: 'c:\oozie' /
  6. CLI 스크립트를 저장합니다. 그 다음, AWS Step Functions 서비스의 연결 정보를 추가합니다.

확장 팩의 AWS Lambda 함수를 사용하기 위한 권한

AWS Step Functions에서 지원하지 않는 소스 함수의 경우 AWS SCT가 확장 팩을 생성합니다. 이 확장 팩에는 소스 함수를 에뮬레이션하는 AWS Lambda 함수가 포함되어 있습니다.

이 확장 팩을 사용하려면 다음 권한을 가진 AWS Identity and Access Management(IAM) 역할을 생성합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "lambda", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:498160209112:function:LoadParameterInitialState:*", "arn:aws:lambda:*:498160209112:function:EvaluateJSPELExpressions:*" ] }, { "Sid": "emr", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeStep", "elasticmapreduce:AddJobFlowSteps" ], "Resource": [ "arn:aws:elasticmapreduce:*:498160209112:cluster/*" ] }, { "Sid": "s3", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::*/*" ] } ] }

확장 팩을 적용하려면 AWS SCT에 다음 권한을 가진 IAM 역할이 필요합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:ListRolePolicies", "iam:CreateRole", "iam:TagRole", "iam:PutRolePolicy", "iam:DeleteRolePolicy", "iam:DeleteRole", "iam:PassRole" ], "Resource": [ "arn:aws:iam::111122223333:role/sct/*" ] }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:ListRolePolicies" ], "Resource": [ "arn:aws:iam::111122223333:role/lambda_LoadParameterInitialStateRole", "arn:aws:iam::111122223333:role/lambda_EvaluateJSPELExpressionsRole", "arn:aws:iam::111122223333:role/stepFunctions_MigratedOozieWorkflowRole" ] }, { "Effect": "Allow", "Action": [ "lambda:GetFunction", "lambda:CreateFunction", "lambda:UpdateFunctionCode", "lambda:DeleteFunction" ], "Resource": [ "arn:aws:lambda:*:111122223333:function:LoadParameterInitialState", "arn:aws:lambda:*:111122223333:function:EvaluateJSPELExpressions" ] } ] }

AWS Step Functions에 대상으로 연결

다음 절차에 따라 AWS Step Functions에 대상으로 연결합니다.

AWS SCT CLI에서 AWS Step Functions에 연결하려면
  1. Apache Oozie 소스 파일의 연결 정보가 포함된 CLI 스크립트를 엽니다.

  2. AddTarget 명령을 사용하여 AWS SCT 프로젝트에 마이그레이션 대상에 대한 정보를 추가합니다. vendor 파라미터에 대해 STEP_FUNCTIONS 값을 사용해야 합니다. 또한 필수 파라미터 nameprofile의 값을 제공해야 합니다.

    다음 코드 예제는 AWS Step Functions를 AWS SCT 프로젝트에 소스로 추가합니다. 이 예제에서는 이름이 AWS_STEP_FUNCTIONS인 대상 객체를 만듭니다. 매핑 규칙을 생성할 때 이 객체 이름을 사용합니다. 또한 이 예제에서는 사전 조건 단계에서 생성한 AWS SCT 서비스 프로필을 사용합니다. profile_name을 프로필 이름으로 바꿔야 합니다.

    AddTarget -name: 'AWS_STEP_FUNCTIONS' -vendor: 'STEP_FUNCTIONS' -profile: 'profile_name' /

    AWS 서비스 프로필을 사용하지 않는 경우, 필수 파라미터 accessKey, secretKey, awsRegion, s3Path의 값을 제공해야 합니다. 이러한 파라미터를 사용하여 AWS 비밀 액세스 키, AWS 비밀 키, AWS 리전 및 Amazon S3 버킷의 경로를 지정합니다.

  3. ConnectTarget 명령을 사용하여 AWS Step Functions에 연결합니다. 이전 단계에서 정의한 대상 객체의 이름을 사용합니다.

    다음 코드 예제는 AWS 서비스 프로필을 사용하여 AWS_STEP_FUNCTIONS 대상 객체에 연결합니다. profile_name을 프로필 이름으로 바꿔야 합니다.

    ConnectTarget -name: 'AWS_STEP_FUNCTIONS' -profile: 'profile_name' /
  4. CLI 스크립트를 저장합니다. 그 다음으로, 매핑 규칙과 마이그레이션 명령을 추가합니다. 자세한 내용은 Oozie 워크플로 변환 섹션을 참조하세요.