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.
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:
Um cluster criado — consulte Criar um cluster
Funções atribuídas à sua conta Alibaba Cloud — consulte Atribuir funções a uma conta Alibaba Cloud
Um bucket OSS na mesma região onde você planeja criar o cluster EMR — consulte Criar buckets
Visão geral
A configuração envolve três etapas:
Criar uma política — defina quais recursos o cluster pode acessar e quais operações ele pode executar.
Criar uma função RAM — crie uma função que o ECS possa assumir e anexe a política da etapa 1.
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
Faça logon no console RAM com sua conta Alibaba Cloud.
No painel de navegação à esquerda, escolha Permissions > Policies e clique em Create Policy.
-
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
examplebucketpelo nome real do seu bucket OSS. O campoResourceexige duas entradas: uma para o próprio bucket (examplebucket) e outra para todos os objetos dentro dele (examplebucket/*). O campoActionconcede acesso somente leitura —oss:GetObjectpara baixar objetos eoss:ListObjectspara listá-los. Para detalhes sobre a sintaxe da política e as ações disponíveis, consulte Elementos de política. Clique em OK e defina o campo Name na seção Basic information. Neste exemplo, o nome é
test-emr.Clique em OK.
Etapa 2: Criar uma função RAM
No painel de navegação à esquerda do console RAM, escolha Identities > Roles e clique em Create Role.
Na etapa Select Role Type, defina Select Trusted Entity como Alibaba Cloud Service e clique em Next.
-
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-emrSelect Trusted Service
Selecione Elastic Compute Service
-
(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.
ImportanteIgnore 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.
Na página Roles, clique no nome da função RAM criada.
Clique na aba Trust Policy e depois em Edit Trust Policy.
Altere
ecs.aliyuncs.comparaemr.aliyuncs.com.
Clique em Save trust policy document.
-
Conceda as permissões necessárias à função:
Na página Roles, localize a função criada e clique em Grant Permission na coluna Actions.
No painel Grant Permission, selecione Custom Policy na lista suspensa da seção Policy e escolha a política criada na Etapa 1.
Clique em Grant permissions e depois em Close.
Etapa 3: Criar um cluster e verificar o acesso
Faça logon no console EMR. No painel de navegação à esquerda, clique em EMR on ECS.
Na barra de navegação superior, selecione a região onde o cluster residirá e escolha um grupo de recursos.
-
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.

Após a criação do cluster, faça logon nele via SSH. Consulte Fazer logon em um cluster.
-
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:
O usuário RAM que cria o cluster deve ter
AliyunEMRFullAccess. Se o usuário tiverAliyunEMRDevelopAccess, altere paraAliyunEMRFullAccess.Confirme se o nome da função de aplicativo ECS especificado é válido e corresponde à função RAM criada.
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.comfoi alterado paraemr.aliyuncs.comna 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:
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.
O bucket deve estar listado como recurso na política. Caso contrário, atualize o campo
Resourcena política para incluí-lo.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
Actionna política RAM.