本文介绍在E-MapReduce控制台上,通过创建集群时在基础配置页面的高级设置区域设置ECS应用角色,实现以免密的方式访问同账号下的其它资源。例如,对象存储OSS和日志服务SLS。
背景信息
- 指定集群只能访问指定OSS的数据目录。
- 指定集群访问指定的外部资源。
前提条件
操作流程
步骤一:新建权限策略
进入新建自定义权限策略页面。
使用云账号登录RAM控制台。
在RAM访问控制页面,选择 。
在权限策略页面,单击创建权限策略。
在创建权限策略页面,单击脚本编辑页签。
输入权限策略内容,然后单击确定。
添加如下策略。
{ "Version": "1", "Statement": [ { "Action": [ "oss:GetObject", "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:emr-logs2", "acs:oss:*:*:emr-logs2/*" ], "Effect": "Allow" } ] }
说明策略中涉及的元素如下所示:
Action:是指对具体资源的操作。本示例是OSS的读取和查询目录的权限。
Resource:是指被授权的具体对象。本示例是访问名为emr-logs2的OSS Bucket及其中的内容。
更多权限策略的基本元素,请参见权限策略基本元素。
输入权限策略名称。
本示例为test-emr。
单击确定。
步骤二:创建RAM角色
在RAM访问控制页面,选择 。
在角色页面,单击创建角色。
创建RAM角色。
单击阿里云服务。
单击下一步。
在配置角色面板,配置以下信息。
参数
描述
角色名称
本示例为test-emr。
选择受信服务
选择云服务器。
单击完成。
可选:修改授信服务。
重要如果您创建的集群是EMR 3.32之后版本、EMR 4.5之后版本或EMR 5.x及之后版本,则无需执行本步骤。
在角色页面,单击刚创建的角色名称。
单击信任策略页签。
单击编辑信任策略。
修改
ecs.aliyuncs.com
为emr.aliyuncs.com
。单击保存信任策略。
添加相应权限。
在角色页面,单击刚创建角色名称的操作列的新增授权。
在新增授权页面,选择自定义策略,添加新建的权限策略。
单击确认新增授权。
单击关闭。
步骤三:创建集群并访问外部资源
在顶部菜单栏处,根据实际情况选择地域和资源组。
单击创建集群,在基础配置页面的高级设置区域,添加步骤二:创建RAM角色中创建的角色名称。创建详情请参见创建集群。
集群创建成功后,通过SSH登录集群,详情请参见登录集群。
执行以下命令,验证授权是否成功。
hdfs dfs -ls oss://<yourBucketName>/
说明示例中的<yourBucketName>为您OSS Bucket的名称。
没有该Bucket访问权限时,无法访问OSS路径。
有该Bucket访问权限时,可以正常访问OSS路径。
常见问题
- Q:创建集群时提示NoPermission。A:您可以参照如下方式排查解决。
- 您创建集群使用的用户是否有创建集群和更换ECS应用角色的权限,如果该RAM用户权限为AliyunEMRDevelopAccess可以修改为AliyunEMRFullAccess。
- 创建集群时ECS应用角色名称是否填写正确。
- 授信策略是否修改为emr.aliyuncs.com。
Q:HDFS无法访问OSS路径。
A:您可以参照如下方式排查解决。
确认访问的OSS Bucket是否和集群在同一个地域(Region),如果不在同一地域(Region),在访问链接中需要添加相应的Endpoint。
确认访问的OSS Bucket是否包含在新建的权限策略中,如果没有,需要修改权限策略。
确认是否在OSS控制台上设置了该Bucket的相关权限。如果设置了相关权限,您可以在OSS控制台上取消相关权限的设置,通过设置权限策略中的Action内容来设置相关权限。