AWS Glue 交互式会话 允许工程师在交互式笔记本中构建、测试和运行数据准备和分析工作负载。 交互式会话提供隔离的开发环境,负责底层计算集群,并允许配置以停止闲置资源。
Glue 交互式会话提供默认推荐配置,还允许用户 自定义会话 以满足他们的需求。 例如,您可以配置更多工作线程来试验更大的数据集,或为长时间运行的工作负载设置空闲超时。 由于可以根据工作负载灵活地更改这些选项,因此您可能需要确保选项在特定范围内更改并应用控制机制。
在这篇文章中,我们介绍了部署 可重复使用的解决方案 对三个选项强制执行 AWS Glue 交互式会话限制:连接、工作线程数量和最大空闲时间。 第一个选项解决了对流量应用自定义检查和控制的需求,例如通过强制交互式会话仅在 VPC 内运行。 另外两个对成本和使用进行限制 AWS胶水 通过对每个会话的工作人员数量和空闲时间施加上限来控制资源。 您可以进一步扩展 AWS Glue 中其他属性或服务的解决方案。
解决方案概述
建议的架构基于无服务器组件构建,并在创建新的 AWS Glue 交互式会话时运行。
工作流程步骤如下:
- 数据工程师通过以下方式创建新的 AWS Glue 交互式会话: AWS管理控制台 或者在本地的 Jupyter 笔记本中。
- 交互式会话产生一个新事件 AWS 云跟踪 等加工。为
CreateSession
具有所有相关信息的事件,以便在会话启动后立即识别和检查会话。 - An 亚马逊EventBridge 规则过滤 CloudTrail 事件并调用 AWS Lambda 功能来检查
CreateSession
事件。 - Lambda 函数检查
CreateSession
事件并检查所有定义的边界条件。 目前,使用此解决方案可配置的边界仅限于最大工作人员数量、空闲超时(以分钟为单位)以及强制连接的部署。 - 如果不满足任何定义的边界条件,例如为会话配置了太多工作人员,则根据提供的配置,该函数会立即结束交互式会话并通过以下方式发送电子邮件: 亚马逊简单通知服务 (亚马逊社交网络)。 如果会话尚未开始,该函数将等待会话开始后再采取任何操作。
- 如果会话停止,则会向 SNS 主题发送电子邮件。 交互式会话笔记本中没有关于会话结束原因的信息。 因此,通过 SNS 主题向数据工程师提供额外的上下文信息。
- 如果该功能失败,会话将记录在 死信队列 内 Amazon Simple Queue服务 (亚马逊 SQS)。 此外,队列受到监控,如果有消息,它将触发 亚马逊CloudWatch 报警。
以下步骤将引导您完成如何构建和部署解决方案。 该代码可在 GitHub回购.
先决条件
对于本演练,您应该具有以下先决条件:
已部署资源概览
所有必要的资源都定义在 AWS CloudFormation 文件位于 cfn/template.yaml
。 为了部署这些资源,我们使用 AWS无服务器应用程序模型 (AWS SAM),它使我们能够方便地构建和打包所有依赖项,并为我们管理 AWS CloudFormation 步骤。
CloudFormation 堆栈部署以下资源:
- Lambda 函数及其库,均定义在目录 src/functions 下。 功能就是控制。 它将验证会话是否在定义的限制内启动。
- EventBridge 规则。 此事件侦听 CloudTrail,如果出现新的交互式会话,将触发控制 Lambda 函数。
- 附加到 Lambda 函数的 SQS 死信队列 (DLQ)。 这会保留触发 Lambda 函数失败的事件的记录。
- 两个 CloudWatch 警报监控 Lambda 函数故障和 DLQ 中的消息。
如果启用通过电子邮件通知,则会部署另外两个资源:
此外,AWS CloudFormation 部署了所有必要的 AWS身份和访问管理 (IAM) 角色和政策,以及 AWS密钥管理服务 (AWS KMS) 密钥,以确保交换的数据是加密的。
部署解决方案
为了促进部署生命周期(包括用户本地环境的设置),我们提供了一个描述所有必要步骤的 Makefile。 确保您已续订 AWS 凭证并有权访问您的账户。 欲了解更多信息,请参阅 配置和凭证文件设置.
- 浏览 Makefile 并根据需要通过修改变量的值来调整 Region 和堆栈名称
AWS_REGION
和STACK_NAME
. - 在
KILL_SESSION = "True"
如果要立即停止已发现越界的交互会话。 允许的值为 True 或 False; 默认值为 True。 - 在
NOTIFICATION_EMAIL_ADDRESS = <your.email@provider.com>
,在Makefile
如果您想在发现会话超出边界时收到通知。 - 为您的控件设置值:
ENFORCE_VPC_CONNECTION
停止不在 VPC 内运行的会话(正确或错误)。MAX_WORKERS
设置会话的最大工作人员数量(数字)。MAX_IDLE_TIMEOUT_MINUTES
定义会话的最大空闲时间(以分钟为单位)(数字)。
- 安装所有必备库:
这些将安装在该存储库内新创建的 Python 虚拟环境下的目录中
.venv
. - 部署新堆栈:
该命令将完成以下任务:
- 检查是否满足先决条件。
- 演出
pytest unittest
在 Python 文件上。 - 验证 CloudFormation 模板。
- 构建工件(Lambda 函数和 Lambda 层)。
- 通过 AWS SAM 部署资源。
测试解决方案
请参阅 介绍适用于 Jupyter 的 AWS Glue 交互式会话 有关运行交互式会话的信息。 如果您按照帖子中的说明进行操作(请参阅 运行您的第一个代码单元并编写您的 AWS Glue 笔记本),交互式会话的初始化应该会失败,并出现类似于以下内容的错误。
单元格中的代码示例:
收到的输出:
如果您启用了电子邮件功能,您还应该收到一封电子邮件通知。
您还可以在 AWS Glue 控制台上检查您的会话 ID 是否未列出。
清理
通过运行以下命令清理已部署的资源:
请注意,根据推荐的帖子部署的资源, 介绍适用于 Jupyter 的 AWS Glue 交互式会话,不会被前面的命令删除。
限制
CloudTrail 事件到 EventBridge 的交付保证是尽力而为。 这意味着 CloudTrail 将尝试将所有事件传送到 EventBridge,但在极少数情况下,可能无法传送事件。 欲了解更多信息,请参阅 来自 AWS 服务的事件.
结论
本文介绍了如何构建、部署和测试解决方案以在 AWS Glue 交互式会话上强制实施边界条件,以便对工作线程数量、空闲超时和 AWS Glue 连接实施限制。
您可以根据需要调整此解决方案,并进一步扩展它以允许对其他选项进行控制。
要了解有关如何使用 AWS Glue 交互式会话的更多信息,请参阅 介绍适用于 Jupyter 的 AWS Glue 交互式会话 和 使用 AWS Glue 交互式会话使用 PyCharm 编写 AWS Glue 作业.
作者简介
尼古拉斯·雅各布·贝尔 是一名高级云应用程序架构师,主要关注数据工程和机器学习,常驻瑞士。 他与企业客户密切合作,设计数据平台并构建高级分析/ml 用例。
卢卡·马扎费罗 是 Amazon Web Services 的高级 DevOps 架构师。 他喜欢让基础设施自动化、可重复且安全。 空闲时间他喜欢做饭,尤其是披萨。
张克猛 是一位云应用架构师,专注于机器学习和用户体验,总部位于瑞士。 她与客户密切合作,设计用户体验并构建高级分析/机器学习用例。
马克·沃尔泽是 Amazon Web Services 的高级全球数据架构师,与客户合作开发创新的大数据解决方案,以解决业务问题并加快 AWS 服务的采用。 工作之余,他喜欢跑步、游泳以及一切与科技相关的事情。
加尔·海恩 是 AWS Glue 的产品经理,主要关注 AI/ML、数据工程和 BI,居住在加利福尼亚州。 她热衷于深入了解客户的业务需求,并与工程师合作设计易于使用的数据产品。
- :具有
- :是
- :不是
- $UP
- 1
- 10
- 100
- 7
- a
- 关于
- ACCESS
- 账号管理
- 操作
- 适应
- 额外
- 地址
- 采用
- 高级
- AI / ML
- 报警
- 所有类型
- 让
- 允许
- 允许
- 还
- Amazon
- 亚马逊网络服务
- an
- 分析
- 和
- 任何
- 应用领域
- 使用
- 应用
- 架构
- 保健
- 参数
- AS
- At
- 作者
- 自动化
- 可使用
- AWS
- AWS CloudFormation
- AWS胶水
- 基于
- BE
- 很
- before
- 最佳
- 大
- 大数据运用
- 博客
- 都
- 边界
- 建立
- 建
- 商业
- 但是
- by
- 加州
- 调用
- CAN
- 关心
- 案件
- 例
- 细胞
- 更改
- 变
- 查
- 支票
- 密切
- 云端技术
- 簇
- 码
- 合作
- 完成
- 组件
- 计算
- 条件
- 配置
- 地都
- 安慰
- 约束
- 上下文
- 控制
- 控制
- 成本
- 创建信息图
- 创建
- 创建
- 凭据
- 资历
- 目前
- 习俗
- 合作伙伴
- data
- 数据工程师
- 资料准备
- 深
- 默认
- 定义
- 交付
- 提升
- 交货
- 根据
- 部署
- 部署
- 部署
- 部署
- 部署
- 描述
- 设计
- 开发
- 发展
- 研发支持
- DevOps的
- 易
- 努力
- 或
- 邮箱地址
- 启用
- 使
- 加密
- 结束
- 执行
- 强制执行
- 工程师
- 工程师
- 工程师
- 确保
- 企业
- 企业客户
- 环境
- 环境中
- 错误
- 特别
- 醚(ETH)
- 活动
- 事件
- 例子
- 例外
- 交换
- 体验
- 实验
- 延长
- 促进
- 失败
- 失败
- 失败
- false
- 专栏
- 文件
- 档
- 过滤器
- 发现
- 姓氏:
- 高度灵活
- 专注焦点
- 遵循
- 以下
- 如下
- 针对
- 发现
- Free
- 止
- 功能
- 进一步
- 此外
- GAL
- 得到
- 全球
- 保证
- 有
- he
- 他的
- 创新中心
- How To
- HTML
- HTTP
- HTTPS
- IAM
- ID
- 鉴定
- 身分
- 空闲
- if
- 立即
- 进口
- in
- 包含
- 信息
- 基础设施
- 启动
- 创新
- 内
- 说明
- 互动
- 成
- 所调用
- 孤立
- IT
- 它的
- 工作
- 工作机会
- JPG
- Jupyter笔记本
- 键
- 大
- 层
- 学习用品
- 学习
- 库
- 自学资料库
- 生命周期
- 喜欢
- 有限
- 范围
- 已发布
- 本地
- 当地
- 位于
- 记录
- 机
- 机器学习
- 使
- 颠覆性技术
- 经理
- 管理
- 许多
- 最多
- 可能..
- 手段
- 机制
- 满足
- 的话
- 条未读消息
- 一半
- 可能
- 分钟
- 监控
- 监控
- 更多
- 姓名
- 必要
- 需求
- 打印车票
- 需要
- 全新
- 新
- 没有
- 笔记本
- 通知
- 数
- 发生
- of
- on
- 仅由
- 操作
- 附加选项
- 附加选项
- or
- 秩序
- 其他名称
- 输出
- 产量
- 学校以外
- 包
- 多情
- 为
- 比萨饼
- 平台
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 乐趣
- 政策
- 帖子
- 准备
- 先决条件
- 当下
- 以前
- 问题
- 过程
- 产生
- 产品
- 产品经理
- 核心产品
- 建议
- 提供
- 提供
- 提供
- 规定
- 蟒蛇
- 罕见
- 准备
- 原因
- 建议
- 记录
- 地区
- 有关
- 相应
- 去除
- 续约
- 知识库
- 资源
- 角色
- 第
- 运行
- 运行
- 运行
- Sam
- 部分
- 担保
- 看到
- 发送
- 前辈
- 发送
- 无服务器
- 特色服务
- 会议
- 招生面试
- 集
- 格局
- 她
- 应该
- 类似
- 简易
- 方案,
- 解决方案
- 解决
- 一些
- 不久
- 火花
- 具体的
- 速度
- 堆
- 开始
- 开始
- 个人陈述
- Status
- 步骤
- Stop 停止
- 停止
- 强烈
- 肯定
- 游泳的
- 瑞士
- 采取
- 服用
- 任务
- 专业技术
- 模板
- test
- 这
- 其
- 那里。
- 因此
- 博曼
- 事
- Free Introduction
- 那些
- 三
- 通过
- 次
- 至
- 也有
- 主题
- 交通
- 变换
- 触发
- 引发
- true
- 二
- 类型
- 下
- 相关
- 理解
- us
- 用法
- 使用
- 用例
- 用户
- 用户
- 运用
- ux
- 验证
- 价值观
- 通过
- 在线会议
- 等待
- 等候
- 演练
- 想
- 是
- we
- 卷筒纸
- Web服务
- ,尤其是
- 每当
- 这
- 而
- 将
- 中
- 工作
- 工人
- 工人
- 工作流程
- 合作
- 但
- 您
- 您一站式解决方案
- 和风网