亚马逊电子病历 很高兴地宣布与 Amazon Simple Storage Service 集成 (Amazon S3) 访问授予可简化 Amazon S3 权限管理并允许您大规模实施细粒度访问。 通过此集成,您可以跨所有 Amazon EMR 部署选项扩展对 Apache Spark 作业的基于作业的 Amazon S3 访问,并强制执行细粒度的 Amazon S3 访问,以实现更好的安全状况。
在本文中,我们将介绍如何使用 Amazon S3 访问授权的几种不同场景。 在开始演示 Amazon EMR 和 Amazon S3 访问授权集成之前,我们将设置和配置 S3 访问授权。 然后,我们将使用 AWS CloudFormation 下面的模板用于在 Amazon Elastic Compute Cloud 上创建 Amazon EMR (Amazon EC2) 集群、一个 EMR Serverless 应用程序和两个不同的工作角色。
设置完成后,我们将运行几个场景来说明如何将 Amazon EMR 与 S3 访问授权结合使用。 首先,我们将在 Amazon EC2 上的 EMR 上运行批处理作业,以导入 CSV 数据并转换为 Parquet。 其次,我们将使用 Amazon EMR Studio 和交互式 EMR Serverless 应用程序来分析数据。 最后,我们将展示如何设置 Amazon S3 访问授权的跨账户访问。 许多客户在整个组织甚至组织外部使用不同的帐户来共享数据。 Amazon S3 访问授权让您可以轻松授予对数据的跨账户访问权限,即使在按不同前缀进行过滤时也是如此。
除了这篇文章之外,您还可以了解有关 Amazon S3 访问授权的更多信息: 使用 Amazon S3 访问授权扩展数据访问.
先决条件
在启动 AWS CloudFormation 堆栈之前,请确保您具备以下条件:
- 提供对 AWS 服务的访问的 AWS 账户
- 最新版本的 AWS 命令行界面 (命令行界面)
- AWS 身份和访问管理 (AWS IAM) 用户,拥有用于配置 AWS CLI 的访问密钥和密钥,以及在 AWS CloudFormation 中创建 IAM 角色、IAM 策略和堆栈的权限
- 如果您想测试跨账户功能,则需要第二个 AWS 账户
演练
使用 AWS CloudFormation 创建资源
为了使用 Amazon S3 访问授予,您需要一个具有 Amazon EMR 6.15.0 或更高版本的集群。 有关更多信息,请参阅将 Amazon S3 访问授权与 Amazon EMR 集群,一个 EKS 集群上的 Amazon EMR和一个 Amazon EMR 无服务器应用程序。 出于本文的目的,我们假设您的组织中有两种不同类型的数据访问用户:对存储桶中的数据具有读写访问权限的分析工程师和具有只读访问权限的业务分析师。 我们将利用两个不同的 AWS IAM 角色,但如果您愿意,您也可以将自己的身份提供商直接连接到 IAM Identity Center。
这是第一部分的架构。 AWS CloudFormation 堆栈创建以下 AWS 资源:
- 具有私有和公有子网的虚拟私有云 (VPC) 堆栈,可与 EMR Studio、路由表和网络地址转换 (NAT) 网关结合使用。
- 用于存储日志文件、Spark 代码和 Jupyter 笔记本等 EMR 工件的 Amazon S3 存储桶。
- 包含用于 S3 访问授权的示例数据的 Amazon S3 存储桶。
- 配置为使用的 Amazon EMR 集群 运行时角色 和 S3 访问授权。
- 配置为使用 S3 访问授权的 Amazon EMR 无服务器应用程序。
- Amazon EMR Studio,用户可以使用 EMR Serverless 应用程序登录并创建工作区笔记本。
- 我们将使用两个 AWS IAM 角色来运行 EMR 作业:一个用于具有写入访问权限的 Amazon EC2,另一个用于具有读取访问权限的 Serverless。
- S3 访问授权将使用一个 AWS IAM 角色来访问存储桶数据(即,向 S3 访问授权注册位置时要使用的角色。S3 访问授权使用此角色创建临时凭证)。
首先,请完成以下步骤:
AWS CloudFormation 堆栈大约需要 10-15 分钟才能完成。 堆栈完成后,转到输出选项卡,您将在其中找到以下步骤所需的信息。
创建 Amazon S3 访问授权资源
首先,我们将在我们的账户中创建 Amazon S3 访问授予资源。 我们创建一个 S3 访问授予实例,一个 S3 访问授予位置,它引用由 AWS CloudFormation 堆栈创建的数据存储桶,该数据存储桶只能由我们的数据存储桶 AWS IAM 角色访问,并向我们的读取器和写入器角色授予不同级别的访问权限。
要创建必要的 S3 访问授予资源,请以管理用户身份使用以下 AWS CLI 命令,并将箭头之间的任何字段替换为 CloudFormation 堆栈的输出。
接下来,我们创建一个新的 S3 访问授予位置。 什么是位置? Amazon S3 访问授权的工作原理是出售具有特定 S3 前缀访问范围的 AWS IAM 凭证。 S3 访问授予位置将与创建这些临时会话的 AWS IAM 角色关联。
在我们的示例中,我们将 AWS IAM 角色的范围限定为使用 AWS CloudFormation 堆栈创建的存储桶,并授予对该堆栈创建的数据存储桶角色的访问权限。 转到输出选项卡以查找要替换为以下代码片段的值:
注意 AccessGrantsLocationId
响应中的值。 在接下来的步骤中,我们将需要它,我们将逐步创建必要的 S3 访问权限,以限制对存储桶的读写访问。
- 对于读/写用户,使用
s3-control create-access-grant
允许对“output/*”前缀进行READWRITE访问: - 对于读取用户,使用
s3control create-access-grant
再次只允许对同一前缀进行读访问:
演示场景 1:EC2 Spark 作业上的 Amazon EMR 生成 Parquet 数据
现在我们已经设置了 Amazon EMR 环境并通过 S3 访问授权授予了对我们角色的访问权限,需要注意的是,我们的 EMR 集群和 EMR 无服务器应用程序的两个 AWS IAM 角色的 IAM 策略仅允许访问我们的 EMR 工件存储桶。 他们没有对我们的 S3 数据存储桶的 IAM 访问权限,而是使用 S3 访问授权来获取仅限于存储桶和前缀的短期凭证。 具体来说,角色被授予 s3:GetDataAccess 和 s3:GetDataAccessGrantsInstanceForPrefix
通过在我们区域中创建的特定 S3 访问授予实例请求访问的权限。 这使您能够以高度范围和精细的方式在一个地方轻松管理您的 S3 访问,从而增强您的安全状况。 通过将 S3 访问授权与 Amazon Elastic Kubernetes Service 上的 EMR 上的工作角色相结合 (亚马逊EKS)和 EMR 无服务器以及 Amazon EMR 步骤的运行时角色 从 EMR 6.7.0 开始,您可以轻松管理单个作业或查询的访问控制。 S3 访问授权在 EMR 6.15.0 及更高版本上可用。 首先,我们作为分析工程师在 EC2 上的 EMR 上运行 Spark 作业,将一些示例数据转换为 Parquet。
为此,请使用中提供的示例代码 转换器.py。 下载文件并将其复制到 EMR_ARTIFACTS_BUCKET
由 AWS CloudFormation 堆栈创建。 我们将使用 ReadWrite AWS IAM 角色提交作业。 请注意,对于 EMR 集群,我们将 S3 访问授权配置为在 S3 访问授权未提供访问权限时回退到 IAM 角色。 这 DATA_WRITER_ROLE
通过 IAM 策略具有对 EMR 工件存储桶的读取访问权限,因此它可以读取我们的脚本。 和以前一样,将所有值替换为 <>
符号来自 输出 CloudFormation 堆栈的选项卡。
作业完成后,我们应该在中看到一些 Parquet 数据 s3://<DATA_BUCKET>/output/weather-data/
。 您可以在作业状态中查看作业的状态 步骤 的选项卡 电子病历控制台.
演示场景 2:EMR Studio 与交互式 EMR Serverless 应用程序一起分析数据
现在,让我们继续登录 EMR Studio,并使用 ReadOnly 运行时角色连接到您的 EMR Serverless 应用程序,以分析场景 1 中的数据。首先,我们需要在您的 Serverless 应用程序上启用交互式端点。
- 点击 EMRStudioURL ,在 输出选项卡 您的 AWS CloudFormation 堆栈。
- 选择 应用领域 在下面 无服务器 左侧的部分。
- 点击 EMR博客 应用程序,然后 操作 下拉菜单,以及 配置e.
- 展开 交互端点 部分并确保 启用交互式端点 被检查。
- 向下滚动并单击 配置应用程序 保存您的更改。
- 返回应用程序页面,选择 EMR博客 应用程序,然后 开始申请 按钮。
接下来,在我们的 Studio 中创建一个新的工作区。
- 工作区 在左侧,然后 创建工作区 按钮。
- 输入工作区名称,保留其余默认值,然后选择 创建工作区.
- 创建工作区后,它应该在几秒钟内在新选项卡中启动。
现在将您的工作区连接到 EMR Serverless 应用程序。
- 点击 电子病历计算 左侧的按钮,如以下代码所示。
- EMR 无服务器 作为计算类型。
- 选择 EMR博客 应用程序和运行时角色 EMR博客.
- 附。 窗口将刷新,您可以打开一个新窗口 火花 笔记本并按照下面的操作进行操作。 要自己执行代码,请下载 AccessGrantsReadOnly.ipynb 笔记本 并使用以下命令将其上传到您的工作区 上传文件 文件浏览器中的按钮。
让我们快速读取一下数据。
我们将进行一个简单的计数(*):
您还可以看到,如果我们尝试将数据写入输出位置,则会收到 Amazon S3 错误。
虽然您也可以通过 AWS IAM 策略授予类似的访问权限,但对于以下情况,Amazon S3 访问权限非常有用:您的组织已经无法通过 IAM 管理访问权限,想要将 S3 访问权限映射到 IAM Identity Center 委托人或角色,或者之前使用过 EMR文件系统 (EMRFS) 角色映射。 S3 访问授予凭据也是临时的,可提供更安全的数据访问。 此外,如下所示,跨账户访问还受益于 S3 Access Grants 的简单性。
演示场景3 – 跨账户访问
其他更常见的访问模式之一是跨帐户访问数据。 随着数据网格的出现,这种模式变得越来越普遍,其中数据生产者和消费者分散在不同的 AWS 账户中。
以前,在配置 Spark 作业时,跨账户访问需要设置复杂的跨账户承担角色操作和自定义凭据提供程序。 有了S3访问授权,我们只需要执行以下操作:
- 在第二个数据使用者账户中创建 Amazon EMR 作业角色和集群
- 数据生产者账户使用新的实例资源策略向数据消费者账户授予访问权限
- 数据生产者帐户为数据消费者工作角色创建访问授权
就是这样! 如果您有第二个帐户,请继续部署 这个 AWS CloudFormation 堆栈 在数据消费者帐户中,创建新的 EMR Serverless 应用程序和作业角色。 如果没有,只需按照下面的操作即可。 AWS CloudFormation 堆栈应在一分钟内完成创建。 接下来,让我们继续授予数据使用者对数据生产者帐户中的 S3 访问授予实例的访问权限。
- 更换
<DATA_PRODUCER_ACCOUNT_ID>
和<DATA_CONSUMER_ACCOUNT_ID>
以及相关的 12 位 AWS 账户 ID。 - 您可能还需要更改命令和策略中的区域。
- 然后向数据使用者帐户中的 EMR Serverless 作业角色授予对输出文件夹的读取访问权限。
现在我们已经做到了这一点,我们可以从数据生产者帐户中的存储桶中读取数据消费者帐户中的数据。 我们将运行一个简单的 COUNT(*)
再次。 更换 <APPLICATION_ID>
, <DATA_CONSUMER_JOB_ROLE>
及 <DATA_CONSUMER_LOG_BUCKET>
使用在第二个账户中创建的 AWS CloudFormation 堆栈上的输出选项卡中的值。
并更换 <DATA_PRODUCER_BUCKET>
使用您第一个帐户中的存储桶。
等待作业达到完成状态,然后从存储桶中获取标准输出日志,替换 <APPLICATION_ID>
, <JOB_RUN_ID>
从上述工作中,以及 <DATA_CONSUMER_LOG_BUCKET>
.
如果您使用的是基于 UNIX 的计算机并且具有 拉链 安装后,您可以作为管理用户使用以下命令。
请注意,此命令仅使用 AWS IAM 角色策略,而不使用 Amazon S3 访问授权。
否则,您可以使用 获取作业运行的仪表板 命令并在浏览器中打开生成的 URL,以在 Spark UI 的“执行器”选项卡中查看驱动程序标准输出日志。
打扫干净
为了避免您的 AWS 账户中的示例资源在未来产生费用,请务必执行以下步骤:
- 您必须手动删除在帖子第一部分中创建的 Amazon EMR Studio 工作区
- 清空由 AWS CloudFormation 堆栈创建的 Amazon S3 存储桶
- 确保您使用以下命令删除在上述步骤中创建的 Amazon S3 访问授予、资源策略和 S3 访问授予位置:
delete-access-grant
,delete-access-grants-instance-resource-policy
,delete-access-grants-location
及delete-access-grants-instance
命令。 - 删除每个账户中创建的 AWS CloudFormation 堆栈
与 AWS IAM 角色映射的比较
2018 年,EMR 引入了 EMRFS 角色映射,通过为 EMRFS 配置多个 IAM 角色来提供存储级授权。 角色映射虽然有效,但除了维护这些身份与其相应的 IAM 角色之间的映射之外,还需要在 EMR 集群上本地管理用户或组。 结合 EC2 上的 EMR 上的运行时角色 和工作角色 EKS 上的 EMR 和 EMR 无服务器,现在可以更轻松地按作业直接向相关主体授予对 S3 上数据的访问权限。
结论
在本文中,我们向您展示了如何通过 Amazon EMR 设置和使用 Amazon S3 访问授权,以便轻松管理 Amazon EMR 工作负载的数据访问。 借助 S3 访问授权和 EMR,您可以轻松配置 IAM 身份对 S3 上数据的访问权限,或使用 IAM Identity Center 中的公司目录作为身份源。 从 EMR 版本 3 开始,S2 访问授权在 EC6.15.0 上的 EMR、EKS 上的 EMR 和 EMR Serverless 上受支持。
要了解更多信息, 请参阅 S3 访问授权 和 电子病历文档 并随时在评论中提出任何问题!
关于作者
达蒙·科特西 是 Amazon Web Services 的首席开发者倡导者。 他构建工具和内容来帮助数据工程师的生活变得更轻松。 工作之余,他还在闲暇时间搭建数据管道、拆分日志。
- :具有
- :是
- :不是
- :在哪里
- $UP
- 1
- 10
- 100
- 107
- 11
- 1232
- 15%
- 20
- 2018
- 500
- 7
- 8
- a
- 关于
- 以上
- ACCESS
- 访问管理
- 访问数据
- 无障碍
- 访问
- 账号管理
- 账户
- 承认
- 横过
- 操作
- 行动
- 增加
- 地址
- 行政
- 主张
- 再次
- 向前
- 所有类型
- 让
- 允许
- 沿
- 还
- Amazon
- Amazon EC2
- Amazon Elastic Kubernetes服务
- 亚马逊电子病历
- 亚马逊网络服务
- an
- 分析师
- 分析
- 分析
- 和
- 宣布
- 另一个
- 任何
- 阿帕奇
- Apache Spark
- 应用领域
- 应用领域
- 约
- 架构
- 保健
- AS
- 问
- 相关
- 承担
- At
- 授权
- 可使用
- 避免
- AWS
- AWS CloudFormation
- 背部
- 基础
- BE
- 成为
- before
- 开始
- 如下。
- 好处
- 更好
- 之间
- 浏览器
- 建立
- 商业
- 但是
- 按键
- by
- CAN
- 案件
- Center
- 更改
- 更改
- 检查
- 点击
- 客户
- 云端技术
- 簇
- 码
- 组合
- 结合
- 相当常见
- 完成
- 完成
- 复杂
- 计算
- 配置
- 配置
- 分享链接
- 消费者
- 消费者
- 内容
- 继续
- 控制
- 兑换
- 公司
- 相应
- 成本
- 创建信息图
- 创建
- 创建
- 创造
- 资历
- 习俗
- 合作伙伴
- data
- 数据访问
- 分散
- 默认
- 默认
- 部署
- 部署
- 开发商
- 不同
- 直接
- do
- 文件
- 完成
- 向下
- 下载
- 司机
- e
- 每
- 更容易
- 容易
- 易
- 效果
- 有效
- 出现
- enable
- 端点
- 执行
- 工程师
- 工程师
- 增强
- 确保
- 环境中
- 错误
- 醚(ETH)
- 甚至
- 例子
- 执行
- 秋季
- 时尚
- 感觉
- 少数
- 字段
- 文件
- 档
- 过滤
- 终于
- 找到最适合您的地方
- 完
- (名字)
- 遵循
- 以下
- 针对
- 自由的
- 止
- 未来
- 网关
- 生成
- 得到
- 给
- Go
- 去
- 得到了
- 授予
- 授予
- 补助金
- 团队
- 组的
- 便利
- 硬
- 有
- he
- 帮助
- 高度
- 他的
- 蜂房
- 创新中心
- How To
- HTML
- HTTPS
- i
- IAM
- ID
- 身份
- 身分
- 身份和访问管理
- IDS
- if
- 进口
- 重要
- in
- 日益
- 个人
- 信息
- 例
- 代替
- 积分
- 互动
- 接口
- 成
- 介绍
- IT
- 工作
- 工作机会
- JPG
- 只是
- 键
- Kubernetes
- 后来
- 最新
- 发射
- 学习用品
- 离开
- 各级
- 喜欢
- 极限
- Line
- 生活
- 当地
- 圖書分館的位置
- 日志
- 登录
- 机
- 维持
- 使
- 管理
- 颠覆性技术
- 管理的
- 手动
- 许多
- 地图
- 制图
- 可能..
- 网格
- 分钟
- 分钟
- 更多
- 多
- 必须
- 姓名
- 必要
- 需求
- 网络
- 全新
- 下页
- 没有
- 注意
- 笔记本
- 笔记本电脑
- 现在
- of
- on
- 一旦
- 一
- 仅由
- 打开
- 附加选项
- or
- 秩序
- 组织
- 其他名称
- 我们的
- 产量
- 输出
- 学校以外
- 己
- 页
- 部分
- 特别
- 模式
- 模式
- 允许
- 权限
- 地方
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 满意
- 政策
- 政策
- 帖子
- 先前
- 校长
- 校长
- 私立
- 制片人
- 生产者
- 提供
- 提供
- 提供者
- 供应商
- 提供
- 优
- 国家
- 目的
- 查询
- 有疑问吗?
- 快速
- 达到
- 阅读
- 读者
- 指
- 地区
- 注册
- 释放
- 相应
- 其余
- 更换
- 请求
- 必须
- 资源
- 资源
- 响应
- 导致
- 角色
- 角色
- 路线
- 运行
- 运行
- 同
- 保存
- 鳞片
- 脚本
- 情景
- 范围
- 脚本
- 其次
- 秒
- 秘密
- 部分
- 安全
- 保安
- 看到
- 选择
- 无服务器
- 服务
- 特色服务
- 招生面试
- 集
- 设置
- 格局
- Share
- 应该
- 显示
- 显示
- 如图
- 侧
- 类似
- 简易
- 简单
- 简化
- 情况
- 片段
- So
- 一些
- 来源
- 火花
- 具体的
- 特别是
- 拆分
- SQL
- 堆
- 堆栈
- 开始
- 开始
- 启动
- 州/领地
- 个人陈述
- Status
- 步骤
- 仍
- 存储
- 工作室
- 提交
- 子网
- 成功
- 支持
- 肯定
- 系统
- 采取
- 需要
- 模板
- 临时
- test
- 这
- 其
- 然后
- 博曼
- 他们
- Free Introduction
- 那些
- 通过
- 次
- 至
- 工具
- 翻译
- 尝试
- 二
- 类型
- 类型
- ui
- 下
- 网址
- 使用
- 用过的
- 用户
- 用户
- 使用
- 运用
- 利用
- 折扣值
- 价值观
- 版本
- 通过
- 查看
- 在线会议
- 走
- 步行
- 希望
- 方法..
- we
- 天气
- 卷筒纸
- Web服务
- 井
- 什么是
- 什么是
- ,尤其是
- 这
- 而
- 将
- 窗口
- 工作
- 合作
- 写
- 作家
- 雅姆
- 年
- 您
- 您一站式解决方案
- 你自己
- 和风网