É possível usar a interface de linha de comandos (CLI) da AWS SCT para converter fluxos de trabalho do Apache Oozie para AWS Step Functions. Depois de migrar seus workloads do Apache Hadoop para o Amazon EMR, você pode usar um serviço nativo na Nuvem AWS para orquestrar seus trabalhos. Para ter mais informações, consulte Como se conectar ao Apache Hadoop.
A AWS SCT converte seus fluxos de trabalho do Oozie para AWS Step Functions e usa AWS Lambda para emular recursos que AWS Step Functions não oferece suporte. Além disso, a AWS SCT converte suas propriedades de trabalho do Oozie em AWS Systems Manager.
Para converter fluxos de trabalho do Apache Oozie, certifique-se de usar a versão 1.0.671 ou superior da AWS SCT. Além disso, familiarize-se com a interface de linha de comandos da AWS SCT. Para ter mais informações, consulte Referência da CLI do AWS Schema Conversion Tool.
Pré-requisitos de uso do Apache Oozie como origem
Os pré-requisitos a seguir são necessários para se conectar ao Apache Oozie com a CLI da AWS SCT.
-
Crie um bucket do Amazon S3 para armazenar as definições das máquinas de estado. Você pode usar essas definições para configurar suas máquinas de estado. Para obter mais informações, consulte Como criar um bucket no Guia do usuário do Amazon S3.
-
Crie um perfil (IAM) AWS Identity and Access Management com a política de
AmazonS3FullAccess
. A AWS SCT usa esse perfil do IAM para acessar o bucket do Amazon S3. -
Anote sua chave AWS secreta e sua chave de acesso AWS secreta. Para obter mais informações sobre as chaves de acesso da AWS, consulte Como gerenciar chaves de acesso no Guia de usuário do IAM.
-
Armazene suas credenciais AWS e as informações sobre seu bucket do Amazon S3 no perfil de serviço AWS nas configurações globais do aplicativo. Em seguida, a AWS SCT usa esse perfil de serviço AWS para trabalhar com seus recursos AWS. Para ter mais informações, consulte Gerenciando perfis no AWS Schema Conversion Tool.
Para trabalhar com seus fluxos de trabalho do Apache Oozie de origem, a AWS SCT precisa de estrutura específica dos seus arquivos de origem. Cada uma das pastas do aplicativo deve incluir o arquivo job.properties
. Esse arquivo inclui pares de valores-chave das propriedades do seu trabalho. Além disso, cada uma das pastas do aplicativo deve incluir o arquivo workflow.xml
. Esse arquivo descreve os nós de ação e os nós de fluxo de controle do seu fluxo de trabalho.
Como se conectar ao Apache Oozie como origem
Use o procedimento a seguir para se conectar aos seus arquivos do Apache Oozie de origem.
Para se conectar ao Apache Oozie na CLI da AWS SCT.
-
Crie um novo script de CLI da AWS SCT ou edite um modelo de cenário existente. Por exemplo, é possível baixar e editar o modelo
OozieConversionTemplate.scts
. Para ter mais informações, consulte Obter cenários de CLI. -
Defina as configurações do aplicativo da AWS SCT.
O exemplo de código a seguir salva as configurações do aplicativo e permite armazenar senhas em seu projeto. Você pode usar essas configurações salvas em outros projetos.
SetGlobalSettings -save: 'true' -settings: '{ "store_password": "true" }' /
-
Criar um novo projeto da AWS SCT.
O exemplo de código a seguir cria o projeto da
oozie
na pastac:\sct
.CreateProject -name: 'oozie' -directory: 'c:\sct' /
-
Adicione a pasta com seus arquivos Apache Oozie de origem ao projeto usando o comando
AddSource
. Certifique-se de usar o valorAPACHE_OOZIE
para o parâmetrovendor
. Forneça também valores para os seguintes parâmetros necessários:name
emappingsFolder
.O exemplo de código a seguir adiciona o Apache Oozie como origem em seu projeto AWS SCT. Este exemplo cria um objeto de origem com o nome
OOZIE
. Use esse nome de objeto para adicionar regras de mapeamento. Depois de executar esse exemplo de código, a AWS SCT usa a pastac:\oozie
para carregar seus arquivos de origem no projeto.AddSource -name: 'OOZIE' -vendor: 'APACHE_OOZIE' -mappingsFolder: 'c:\oozie' /
Você pode usar esse exemplo e os exemplos a seguir no Windows.
-
Conecte-se aos arquivos do Apache Oozie de origem usando o comando
ConnectSource
. Use o nome do objeto de origem que você definiu na etapa anterior.ConnectSource -name: 'OOZIE' -mappingsFolder: 'c:\oozie' /
-
Salve o script da CLI. Em seguida, adicione as informações de conexão do seu serviço AWS Step Functions.
Permissões para usar funções AWS Lambda no pacote de extensões
Para as funções de origem que a AWS Step Functions não oferece suporte, a AWS SCT cria um pacote de extensão. Esse pacote de extensão inclui funções da AWS Lambda que emulam suas funções de origem.
Para usar esse pacote de extensão, crie um perfil (IAM) da AWS Identity and Access Management com as seguintes permissões.
{
"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:::*/*"
]
}
]
}
Para aplicar o pacote de extensão, a AWS SCT precisa de um perfil do IAM com as permissões a seguir.
{
"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::ACCOUNT_NUMBER:role/sct/*"
]
},
{
"Effect": "Allow",
"Action": [
"iam:GetRole",
"iam:ListRolePolicies"
],
"Resource": [
"arn:aws:iam::ACCOUNT_NUMBER:role/lambda_LoadParameterInitialStateRole",
"arn:aws:iam::ACCOUNT_NUMBER:role/lambda_EvaluateJSPELExpressionsRole",
"arn:aws:iam::ACCOUNT_NUMBER:role/stepFunctions_MigratedOozieWorkflowRole"
]
},
{
"Effect": "Allow",
"Action": [
"lambda:GetFunction",
"lambda:CreateFunction",
"lambda:UpdateFunctionCode",
"lambda:DeleteFunction"
],
"Resource": [
"arn:aws:lambda:*:ACCOUNT_NUMBER:function:LoadParameterInitialState",
"arn:aws:lambda:*:ACCOUNT_NUMBER:function:EvaluateJSPELExpressions"
]
}
]
}
Como se conectar a AWS Step Functions como destino
Use o procedimento a seguir para se conectar à AWS Step Functions como destino.
Para se conectar à AWS Step Functions na CLI da AWS SCT
-
Abra seu script de CLI, que inclui as informações de conexão para seus arquivos do Apache Oozie de origem.
-
Adicione as informações sobre sua meta de migração no projeto AWS SCT usando o comando
AddTarget
. Certifique-se de usar o valorSTEP_FUNCTIONS
para o parâmetrovendor
. Forneça também valores para os seguintes parâmetros necessários:name
eprofile
.O exemplo de código a seguir adiciona AWS Step Functions como origem em seu projeto AWS SCT. Este exemplo cria um objeto de destino com o nome
AWS_STEP_FUNCTIONS
. Use esse nome de objeto ao criar regras de mapeamento. Além disso, esse exemplo usa um perfil de serviço AWS SCT que você criou na etapa de pré-requisitos. Certifique-se de substituirprofile_name
pelo nome do seu perfil.AddTarget -name: 'AWS_STEP_FUNCTIONS' -vendor: 'STEP_FUNCTIONS' -profile: '
profile_name
' /Se você não usar o perfil de serviço AWS, certifique-se de fornecer valores para os seguintes parâmetros obrigatórios:
accessKey
,secretKey
,awsRegion
es3Path
. Use esses parâmetros para especificar sua chave de acesso secreta AWS, chave secreta AWS, Região da AWS e o caminho para seu bucket do Amazon S3. -
Conecte-se a AWS Step Functions usando o comando
ConnectTarget
. Use o nome do objeto de destino que você definiu na etapa anterior.O exemplo de código a seguir se conecta ao objeto de destino
AWS_STEP_FUNCTIONS
usando seu perfil de serviço AWS. Certifique-se de substituirprofile_name
pelo nome do seu perfil.ConnectTarget -name: 'AWS_STEP_FUNCTIONS' -profile: '
profile_name
' / -
Salve o script da CLI. Em seguida, adicione regras de mapeamento e comandos de migração. Para obter mais informações, consulte Conversão de fluxos de trabalho do Oozie;.