EMR 3.32之后版本、EMR 4.5之后版本,以及EMR 5.x系列版本,将Metaservice服务替换为ECS应用角色,在EMR集群创建和扩容时自动分配给EMR集群中的每个ECS实例。在EMR集群之上运行的应用程序通过该角色来获得与其他云服务交互的权限,实现以免AccessKey的方式访问阿里云资源,避免了在配置文件中暴露AccessKey的风险。
前提条件
已授权该角色,详情请参见阿里云账号角色授权。
权限内容
默认角色AliyunECSInstanceForEMRRole包含系统权限策略为AliyunECSInstanceForEMRRolePolicy,OSS以及DLF相关权限内容如下。
名称(Action) | 说明 |
oss:GetObject | 上传文件或文件夹对象。 |
oss:ListObjects | 获取文件或文件夹对象。 |
oss:PutObject | 查询文件列表信息。 |
oss:DeleteObject | 删除某个文件。 |
oss:ListBuckets | 列举所有存储空间(Bucket)。 |
oss:AbortMultipartUpload | 终止MultipartUpload事件。 |
oss:ListMultipartUploads | 列举所有执行中的Multipart Upload事件。 |
oss:RestoreObject | 解冻归档类型(Archive)或冷归档(Cold Archive)的文件(Object)。 |
oss:GetBucketInfo | 查看存储空间(Bucket)的相关信息。 |
oss:ListObjectVersions | 用于列出Bucket中包括删除标记(Delete Marker)在内的所有Object的版本信息。 |
oss:DeleteObjectVersion | 删除指定版本Object。 |
oss:PostDataLakeStorageFileOperation | OSS-HDFS访问权限。 |
ots:CreateTable | 根据给定的表结构信息创建相应的数据表。 |
ots:DeleteTable | 删除本实例下指定的表。 |
ots:GetRow | 根据指定的主键读取单行数据。 |
ots:PutRow | 插入数据到指定的行。 |
ots:UpdateRow | 更新指定行的数据。 |
ots:DeleteRow | 删除一行数据。 |
ots:GetRange | 读取指定主键范围内的数据。 |
ots:BatchWriteRow | 批量插入、修改或删除一个或多个表中的若干行数据。 |
ots:BatchGetRow | 批量读取一个表或多个表中的若干行数据。 |
ots:ComputeSplitPointsBySize | 将全表的数据在逻辑上划分成接近指定大小的若干分片,返回这些分片之间的分割点以及分片所在机器的提示。 |
ots:StartLocalTransaction | 为分区键值创建一个局部事务,并获取局部事务ID。 |
ots:CommitTransaction | 提交局部事务。 |
ots:AbortTransaction | 丢弃局部事务。 |
dlf:BatchCreatePartitions | 批量创建分区。 |
dlf:BatchCreateTables | 批量创建数据表。 |
dlf:BatchDeletePartitions | 批量删除分区。 |
dlf:BatchDeleteTables | 批量删除表。 |
dlf:BatchGetPartitions | 批量获取分区列表。 |
dlf:BatchGetTables | 批量获取数据表列表。 |
dlf:BatchUpdatePartitions | 批量更新分区信息。 |
dlf:BatchUpdateTables | 批量更新数据表。 |
dlf:CreateDatabase | 创建数据库。 |
dlf:CreateFunction | 创建函数。 |
dlf:CreatePartition | 创建分区。 |
dlf:CreateTable | 创建数据表。 |
dlf:DeleteDatabase | 删除数据库。 |
dlf:DeleteFunction | 删除函数。 |
dlf:DeletePartition | 删除分区。 |
dlf:DeleteTable | 删除数据表。 |
dlf:GetDatabase | 获取数据库。 |
dlf:GetFunction | 获取函数。 |
dlf:GetPartition | 获取分区。 |
dlf:GetTable | 获取数据表。 |
dlf:ListCatalogs | 获取数据目录列表。 |
dlf:ListDatabases | 获取数据库列表。 |
dlf:ListFunctionNames | 获取函数名称列表。 |
dlf:ListFunctions | 获取函数列表。 |
dlf:ListPartitionNames | 获取分区名称列表。 |
dlf:ListPartitions | 获取分区列表。 |
dlf:ListPartitionsByExpr | 按条件获取元数据表分区列表。 |
dlf:ListPartitionsByFilter | 按条件获取元数据表分区列表。 |
dlf:ListTableNames | 获取数据表名称列表。 |
dlf:ListTables | 获取数据表列表。 |
dlf:RenamePartition | 修改分区名称。 |
dlf:RenameTable | 修改数据表名称。 |
dlf:UpdateDatabase | 更新数据库信息。 |
dlf:UpdateFunction | 更新函数信息。 |
dlf:UpdateTable | 更新数据表信息。 |
dlf:UpdateTableColumnStatistics | 更新元数据表统计信息。 |
dlf:GetTableColumnStatistics | 获取元数据表统计信息。 |
dlf:DeleteTableColumnStatistics | 删除元数据表统计信息。 |
dlf:UpdatePartitionColumnStatistics | 更新分区统计信息。 |
dlf:GetPartitionColumnStatistics | 获取分区统计信息。 |
dlf:DeletePartitionColumnStatistics | 删除分区统计信息。 |
dlf:BatchGetPartitionColumnStatistics | 批量获取表分区统计信息。 |
dlf:CreateLock | 创建元数据锁。 |
dlf:UnLock | 解锁指定的元数据锁。 |
dlf:AbortLock | 终止元数据锁。 |
dlf:RefreshLock | 刷新元数据锁。 |
dlf:GetLock | 获取元数据锁。 |
dlf:GetAsyncTaskStatus | 获取异步任务状态。 |
dlf:DeltaGetPermissions | 获取权限列表。 |
dlf:GetPermissions | 获取数据权限信息。 |
dlf:GetServiceInfo | 获取服务信息。 |
dlf:GetRoles | 获取数据权限中角色信息。 |
dlf:CheckPermissions | 数据权限校验。 |
请谨慎编辑和删除默认角色AliyunECSInstanceForEMRRole,否则会造成集群创建失败或作业运行失败。
使用ECS应用角色获取临时凭证
基于STS临时凭证可以获取本账号下其他云资源的访问权限,详情请参见使用实例RAM角色访问其他云资源。