3
respostas

gravação na tabela silver.

Olá, ao executar o glue está aparecendo essa mensagem abaixo. Já havia anteriormente gerado as permissão a role

"Error Category: PERMISSION_ERROR; Failed Line Number: 51; An error occurred while calling o323.pyWriteDynamicFrame. class com.amazonaws.services.gluejobexecutor.model.AccessDeniedException:User: arn:aws:sts::682466909497:assumed-role/GlueJobExecutorCoralService-adminEC2Role-ESMZO2SSV2I2/i-0b6903c1643d7fd00 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::742452887276:role/service-role/AWSGlueServiceRole-alura-datalakeaws (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: 2825789a-6199-4b9b-a84e-9d38443ff712; Proxy: null) (Service: AWSGlueJobExecutor; Status Code: 400; Error Code: AccessDeniedException; Request ID: 186202db-65f0-4228-b624-4276f9a51125; Proxy: null)"

3 respostas

Oi! Tudo bem?

O erro indica que o seu job do Glue está sendo executado no modo Job Executors (Coral Service). Nesse modo, a AWS sobe a máquina de execução numa conta gerenciada da própria AWS (682466909497) e essa máquina tenta assumir a sua role AWSGlueServiceRole-alura-datalakeaws. Como a trust policy da sua role permite só glue.amazonaws.com, o sts:AssumeRole vindo dessa outra conta é negado — por isso o AccessDenied.

Peço que teste manter Job Executors e faça um ajuste a trust policy da role:

  1. Abra IAM > Roles e entre em AWSGlueServiceRole-alura-datalakeaws.
  2. Aba Relações de confiança (Trust relationships) > Editar.
  3. Mantenha o bloco que já existe e adicione este segundo bloco, salvando em seguida:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { "Service": "glue.amazonaws.com" },
      "Action": "sts:AssumeRole",
      "Condition": { "StringEquals": { "aws:SourceAccount": "742452887276" } }
    },
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::682466909497:root" },
      "Action": "sts:AssumeRole"
    }
  ]
}

Se quiser restringir ainda mais, você pode trocar o :root pela role exata que aparece no erro (ex.: arn:aws:iam::682466909497:role/GlueJobExecutorCoralService-adminEC2Role-ESMZO2SSV2I2).

Espero que dê certo e fico à disposição.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Como posso mudar para rodar na própria conta criada? Não vi nenhum usuário relatando que teve que incluir a conta gerenciada pela AWS.

apos a alteração gerou erro de permissão novamente.

obs: esse curso precisará passar por alguma mudança? Refiz conforme a instrutora passou.

Error Category: PERMISSION_ERROR; Failed Line Number: 24; An error occurred while calling o157.getDynamicFrame. class com.amazonaws.services.gluejobexecutor.model.AccessDeniedException:User: arn:aws:sts::742452887276:assumed-role/AWSGlueServiceRole-alura-datalakeaws/GlueJobRunnerSession is not authorized to perform: lakeformation:GetDataAccess on resource: arn:aws:glue:us-east-1:742452887276:table/wm-datalakeaws/bronzebronze because no identity-based policy allows the lakeformation:GetDataAccess action (Service: AWSLakeFormation; Status Code: 400; Error Code: AccessDeniedException; Request ID: 24ff80f6-3384-4b7c-ac80-8d6e91af5c19; Proxy: null) (Service: AWSGlueJobExecutor; Status Code: 400; Error Code: AccessDeniedException; Request ID: 74dca6b8-1801-4792-a0e5-e05e7f271bec; Proxy: null)

depois que inclui todas as permissões funcinou, mas não ficou legal dessa forma.

Creio que esse curso terá que passar por uma reformulação, o codigo eu consegui adaptar e fazer funcionar para realizar o upload. Mas o gerenciamento na AWS preciso entender melhor. Na epoca que a instrutora ministrou o curso funcionou, mas agora não funciona mais o gerenciamento.


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::datalake-aws-wld/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "lakeformation:GetDataAccess",
            "Resource": "*"
        }
    ]
}