Todos os produtos
Search
Central de documentação

E-MapReduce:Use uma função de aplicativo ECS personalizada para acessar recursos da nuvem na mesma conta

Última atualização: Jun 27, 2026

Ao anexar uma função de aplicativo ECS personalizada a um cluster EMR, os nós do cluster acessam outros recursos da nuvem — como Object Storage Service (OSS) e Simple Log Service (SLS) — em sua conta Alibaba Cloud sem armazenar credenciais. As políticas anexadas à função definem exatamente quais recursos e operações o cluster pode acessar, oferecendo controle granular.

Importante

Se você estiver criando um cluster com EMR V5.x ou posterior, uma versão secundária posterior ao EMR V4.5 ou uma versão secundária posterior ao EMR V3.32, a atualização da política de confiança na Etapa 2 não é necessária. Para versões anteriores, altere o serviço confiável de ECS para EMR — consulte Etapa 2, subetapa 4.

Pré-requisitos

Antes de começar, verifique se você possui:

Visão geral

A configuração envolve três etapas:

  1. Criar uma política — defina quais recursos o cluster pode acessar e quais operações ele pode executar.

  2. Criar uma função RAM — crie uma função que o ECS possa assumir e anexe a política da etapa 1.

  3. Criar um cluster e verificar o acesso — associe a função RAM durante a criação do cluster e confirme se o acesso funciona.

Etapa 1: Criar uma política

  1. Faça logon no console RAM com sua conta Alibaba Cloud.

  2. No painel de navegação à esquerda, escolha Permissions > Policies e clique em Create Policy.

  3. Na página Create Policy, clique na aba JSON e insira um documento de política no editor. O exemplo a seguir concede acesso somente leitura a um bucket OSS específico:

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "oss:GetObject",
                    "oss:ListObjects"
                ],
                "Resource": [
                    "acs:oss:*:*:examplebucket",
                    "acs:oss:*:*:examplebucket/*"
                ],
                "Effect": "Allow"
            }
        ]
    }

    Substitua examplebucket pelo nome real do seu bucket OSS. O campo Resource exige duas entradas: uma para o próprio bucket (examplebucket) e outra para todos os objetos dentro dele (examplebucket/*). O campo Action concede acesso somente leitura — oss:GetObject para baixar objetos e oss:ListObjects para listá-los. Para detalhes sobre a sintaxe da política e as ações disponíveis, consulte Elementos de política.

  4. Clique em OK e defina o campo Name na seção Basic information. Neste exemplo, o nome é test-emr.

  5. Clique em OK.

Etapa 2: Criar uma função RAM

  1. No painel de navegação à esquerda do console RAM, escolha Identities > Roles e clique em Create Role.

  2. Na etapa Select Role Type, defina Select Trusted Entity como Alibaba Cloud Service e clique em Next.

  3. Na etapa Configure Role, configure os seguintes parâmetros: Clique em OK.

    Parâmetro

    Valor

    RAM Role Name

    Insira um nome para a função. Neste exemplo: test-emr

    Select Trusted Service

    Selecione Elastic Compute Service

  4. (Opcional) Atualize a política de confiança. Em versões anteriores, altere o serviço confiável de ECS para EMR. Sem essa alteração, a criação do cluster falha com um erro NoPermission.

    Importante

    Ignore esta etapa se estiver criando um cluster com EMR V5.x ou posterior, uma versão secundária posterior ao EMR V4.5 ou uma versão secundária posterior ao EMR V3.32. Essas versões não exigem essa alteração.

    1. Na página Roles, clique no nome da função RAM criada.

    2. Clique na aba Trust Policy e depois em Edit Trust Policy.

    3. Altere ecs.aliyuncs.com para emr.aliyuncs.com. Trust policy edit

    4. Clique em Save trust policy document.

  5. Conceda as permissões necessárias à função:

    1. Na página Roles, localize a função criada e clique em Grant Permission na coluna Actions.

    2. No painel Grant Permission, selecione Custom Policy na lista suspensa da seção Policy e escolha a política criada na Etapa 1.

    3. Clique em Grant permissions e depois em Close.

Etapa 3: Criar um cluster e verificar o acesso

  1. Faça logon no console EMR. No painel de navegação à esquerda, clique em EMR on ECS.

  2. Na barra de navegação superior, selecione a região onde o cluster residirá e escolha um grupo de recursos.

  3. Clique em Create Cluster. Na seção Advanced Settings da etapa Basic Configuration, insira o nome da função RAM criada na Etapa 2. Para outras opções de configuração do cluster, consulte Criar um cluster.

    Advanced settings for ECS application role

  4. Após a criação do cluster, faça logon nele via SSH. Consulte Fazer logon em um cluster.

  5. Execute o comando a seguir para verificar se o cluster consegue acessar o bucket OSS especificado na política:

    hdfs dfs -ls oss://<yourBucketName>/

    Substitua <yourBucketName> pelo nome real do seu bucket OSS.

    • Se o conteúdo do bucket for listado, o acesso está funcionando corretamente.

    • Se o acesso for negado, o cluster não tem permissão para acessar o bucket — consulte as Perguntas frequentes abaixo.

Perguntas frequentes

Por que aparece um erro NoPermission ao criar um cluster?

Verifique os itens a seguir nesta ordem:

  1. O usuário RAM que cria o cluster deve ter AliyunEMRFullAccess. Se o usuário tiver AliyunEMRDevelopAccess, altere para AliyunEMRFullAccess.

  2. Confirme se o nome da função de aplicativo ECS especificado é válido e corresponde à função RAM criada.

  3. Caso utilize uma versão do EMR que exija atualização da política de confiança (anterior ao EMR V5.x, EMR V4.5 ou EMR V3.32), confirme se ecs.aliyuncs.com foi alterado para emr.aliyuncs.com na política de confiança.

Por que não consigo acessar um bucket OSS pelo Hadoop Distributed File System (HDFS)?

Verifique os itens a seguir nesta ordem:

  1. O bucket OSS deve estar na mesma região do cluster EMR. Se estiverem em regiões diferentes, adicione o endpoint do bucket às strings de conexão.

  2. O bucket deve estar listado como recurso na política. Caso contrário, atualize o campo Resource na política para incluí-lo.

  3. Se houver permissões no nível do bucket configuradas diretamente no console OSS, essas configurações podem entrar em conflito com a política. Remova as permissões do console OSS e gerencie o acesso exclusivamente pelo campo Action na política RAM.