在您的 AWS 环境中实施 RStudio 并使用 AWS Lake Formation 权限 PlatoBlockchain 数据智能访问您的数据湖。 垂直搜索。 人工智能。

在您的 AWS 环境中实施 RStudio 并使用 AWS Lake Formation 权限访问您的数据湖

R 是一种流行的分析编程语言,数据科学家和分析师使用它来执行数据处理、进行统计分析、创建数据可视化和构建机器学习 (ML) 模型。 RStudio 是 R 的集成开发环境,它为团队提供开源工具和企业级专业软件,以便在整个组织中开发和共享他们的工作。然而,自己构建、保护、扩展和维护 RStudio 既繁琐又繁琐。

在 AWS 中实施 RStudio 环境可提供您在本地部署时所没有的弹性和可扩展性,从而无需管理该基础设施。 您可以根据处理要求选择所需的计算和内存,也可以向上或向下扩展以处理不同规模的分析和 ML 工作负载,而无需进行前期投资。 这使您可以快速试验新的数据源和代码,并将新的分析流程和 ML 模型推广到组织的其他部门。 您还可以无缝集成您的数据湖资源,使它们可供开发人员和数据科学家使用,并通过使用来自的行级和列级访问控制来保护数据 AWS湖形成.

这篇文章介绍了两种在 AWS 上轻松部署和运行 RStudio 以访问存储在数据湖中的数据的方法:

  • 完全托管 亚马逊SageMaker
  • 自托管 亚马逊弹性计算云 (Amazon EC2)
    • 您可以选择使用 EC2 托管方法部署 RStudio 的开源版本,我们还将在本文中进行介绍。 自托管选项要求管理员手动创建 EC2 实例并安装 RStudio,或使用 AWS CloudFormation 在此选项中实施用户访问控制的灵活性也较低,因为在此类实施中所有用户都具有相同的访问级别。

Amazon SageMaker 上的 RStudio

您只需从 SageMaker 中单击即可启动 RStudio Workbench。 通过 SageMaker,客户无需承担构建、安装、保护、扩展和维护 RStudio 的运营开销,他们无需为持续运行的 RStudio Server 付费(如果他们使用 t3.medium),他们只需付费用于 RSession 计算时使用它。 RStudio 用户可以灵活地通过动态切换实例来动态扩展计算。 在 SageMaker 上运行 RStudio 需要管理员建立 SageMaker 域和关联的用户配置文件。 您还需要适当的 RStudio 许可证

在 SageMaker 中,您可以授予 RStudio 管理员和 RStudio 用户级别的访问权限,并具有不同的权限。 只有被授予这两个角色之一的用户配置文件才能访问 SageMaker 中的 RStudio。 有关在 SageMaker 上设置 RStudio 的管理员任务的更多信息,请参阅 在 Amazon SageMaker 上开始使用 RStudio. 该帖子还显示了为每个会话选择 EC2 实例的过程,以及管理员如何限制 RStudio 用户的 EC2 实例选项。

图 1:显示各种 AWS 服务交互的架构图

使用 Lake Formation 行级和列级安全访问

除了允许您的团队在 SageMaker 上启动 RStudio 会话之外,您还可以使用 Lake Formation 中的行级和列级访问控制来保护数据湖。 有关详细信息,请参阅 使用 AWS Lake Formation 的有效数据湖,第 4 部分:实施单元级和行级安全性.

通过 Lake Formation 安全控制,您可以确保每个人都有权访问数据湖中的数据。 考虑 SageMaker 域中的以下两个用户配置文件,每个配置文件具有不同的执行角色:

用户资料 执行角色
rstudiouser-fullaccess AmazonSageMaker-ExecutionRole-FullAccess
rstudiouser-limitedaccess AmazonSageMaker-ExecutionRole-LimitedAccess

以下屏幕截图显示了 rstudiouser-limitedaccess 个人资料详细信息。

图 2:rstudiouser-limitedaccess 角色的配置文件详细信息

图 2:rstudiouser-limitedaccess 角色的配置文件详细信息

以下屏幕截图显示了 rstudiouser-fullaccess 个人资料详细信息。

图 3:rstudiouser-fullaccess 角色的配置文件详细信息

图 3:rstudiouser-fullaccess 角色的配置文件详细信息

这篇文章使用的数据集是 COVID-19 公共数据集. 以下屏幕截图显示了数据示例:

图 4:COVID-19 公共数据集

图 4:COVID-19 公共数据集

创建用户配置文件并将其分配给适当的角色后,您可以访问 Lake Formation 以爬取数据 AWS胶水,创建元数据和表,并授予对表数据的访问权限。 为了 AmazonSageMaker-ExecutionRole-FullAccess 角色,您授予对表中所有列的访问权限,并且对于 AmazonSageMaker-ExecutionRole-LimitedAccess,您使用数据过滤器授予访问权限 USA_Filter. 我们使用这个过滤器来提供行级别和单元级别的列权限(参见 资源中心 以下屏幕截图中的列)。

图 5:AmazonSageMaker-ExecutionRole -Full/Limited Access 角色的 AWS Lake Formation 权限

图 5:AmazonSageMaker-ExecutionRole -Full/Limited Access 角色的 AWS Lake Formation 权限

如以下屏幕截图所示,第二个角色的访问权限有限。 与此角色关联的用户只能访问 continent, date, total_cases, total_deaths, new_cases, new_deathsiso_codecolumns.

图 6:AmazonSageMaker-ExecutionRole-Limited Access 角色的 AWS Lake Formation 列级权限

图 6:AmazonSageMaker-ExecutionRole-Limited Access 角色的 AWS Lake Formation 列级权限

通过附加到每个用户配置文件的角色权限,我们可以看到 Lake Formation 如何强制执行适当的行级和列级权限。 您可以从 启动应用 创建的用户列表中的下拉菜单,然后选择 RStudio.

在以下屏幕截图中,我们以 rstudiouser-limitedaccess user.

图 7:从 Amazon SageMaker 控制台为 rstudiouser-limitedaccess 用户启动 RStudio 会话

图 7:从 Amazon SageMaker 控制台为 rstudiouser-limitedaccess 用户启动 RStudio 会话

您可以看到 RStudio Workbench 主页以及会话、项目和已发布内容的列表。

图 8:rstudiouser-limitedaccess 用户的 R Studio Workbench 会话

图 8:rstudiouser-limitedaccess 用户的 R Studio Workbench 会话

选择会话名称以在 SageMaker 中启动会话。 安装 Paws(请参阅本文前面的指南),以便您可以访问相应的 AWS 服务。 现在您可以运行查询以通过以下方式从数据集中提取所有字段 亚马逊雅典娜, 使用命令 “SELECT * FROM "databasename.tablename",并将查询输出存储在 亚马逊简单存储服务 (Amazon S3)存储桶。

图 9:R Studio 会话中的 Athena Query 执行

图 9:R Studio 会话中的 Athena Query 执行

以下屏幕截图显示了 S3 存储桶中的输出文件。

图 10:Amazon S3 存储桶中的 Athena 查询执行结果

图 10:Amazon S3 存储桶中的 Athena 查询执行结果

以下屏幕截图显示了这些输出文件中的数据,使用 亚马逊 S3 选择.

图 11:使用 Amazon S3 Select 查看输出数据

图 11:使用 Amazon S3 Select 查看输出数据

只有美国数据和列洲、日期、 total_cases, total_deaths, new_cases, new_deathsiso_code 显示在结果中 rstudiouser-limitedaccess 用户。

让我们重复相同的步骤 rstudiouser-fullaccess 用户。

图 12:从 Amazon SageMaker 控制台为 rstudiouser-fullaccess 用户启动 RStudio 会话

图 12:从 Amazon SageMaker 控制台为 rstudiouser-fullaccess 用户启动 RStudio 会话

您可以看到 RStudio Workbench 主页以及会话、项目和已发布内容的列表。

图 13:rstudiouser-fullaccess 用户的 R Studio Workbench 会话

图 13:rstudiouser-fullaccess 用户的 R Studio Workbench 会话

让我们运行相同的查询 “SELECT * FROM "databasename.tablename" 使用雅典娜。

图 14:R Studio 会话中的 Athena Query 执行

图 14:R Studio 会话中的 Athena Query 执行

以下屏幕截图显示了 S3 存储桶中的输出文件。

图 15:Amazon S3 存储桶中的 Athena 查询执行结果

图 15:Amazon S3 存储桶中的 Athena 查询执行结果

以下屏幕截图显示了这些输出文件中的数据,使用 亚马逊 S3 选择.

图 16:使用 Amazon S3 Select 查看输出数据

图 16:使用 Amazon S3 Select 查看输出数据

如本例所示, rstudiouser-fullaccess 用户有权访问数据集中的所有列和行。

在 Amazon EC2 上自托管

如果您想开始在 AWS 上试用 RStudio 的开源版本,您可以在 EC2 实例上安装 Rstudio。 本文中提供的此 CloudFormation 模板预置 EC2 实例并使用用户数据脚本安装 RStudio。 您可以多次运行模板以根据需要预置多个 RStudio 实例,并且可以在任何 AWS 区域中使用它。 部署 CloudFormation 模板后,它会为您提供从 Web 浏览器访问 RStudio 的 URL。 Amazon EC2 使您能够向上或向下扩展以处理数据大小的变化以及运行分析所需的计算能力。

创建用于安全访问的键值对

AWS 使用公钥加密来保护您的 EC2 实例的登录信息。 您在 KeyPair 启动 CloudFormation 模板时的参数。 然后,如果需要,您可以稍后使用相同的密钥登录到预配置的 EC2 实例。

在运行 CloudFormation 模板之前,请确保您在计划使用的 AWS 账户中拥有 Amazon EC2 密钥对。 如果没有,请参考 使用 Amazon EC2 创建密钥对 有关创建一个的说明。

启动 CloudFormation 模板登录到 CloudFormation 控制台中的 us-east-1 区域并选择启动堆栈。

启动堆栈按钮

您必须在 CloudFormation 模板中输入几个参数:

  • InitialUser 和 InitialPassword – 用于登录 RStudio 会话的用户名和密码。 默认值为 rstudioRstudio@123
  • 实例类型 – 部署 RStudio 服务器的 EC2 实例类型。 该模板目前接受 t2、m4、c4、r4、g2、p2 和 g3 实例系列中的所有实例,并且可以轻松合并其他实例系列。 默认值为 t2.micro。
  • 密钥对 – 用于登录 EC2 实例的密钥对。
  • VpcId 和 SubnetId ——由数百家创建、维护和提供物联网(IoT)全球开放标准的公司所组成的 亚马逊虚拟私有云(Amazon VPC) 以及在其中启动实例的子网。

输入这些参数后,部署 CloudFormation 模板。 完成后,可以使用以下资源:

  • 一个安装了 RStudio 的 EC2 实例。
  • 具有连接到其他 AWS 服务所需权限的 IAM 角色。
  • 具有为 RStudio 服务器打开端口 8787 的规则的安全组。

登录到 RStudio

现在您已准备好使用 RStudio! 前往 输出 CloudFormation 堆栈的选项卡并复制 RStudio URL 值(格式为 http://ec2-XX-XX-XXX-XX.compute-1.amazonaws.com:8787/)。 在 Web 浏览器中输入该 URL。 这将打开您的 RStudio 会话,您可以使用运行 CloudFormation 模板时提供的相同用户名和密码登录该会话。

从 RStudio 访问 AWS 服务

访问 RStudio 会话后,您应该安装适用于 AWS (Paws) 的 R 包。 这使您可以连接到许多 AWS 服务,包括数据湖中的服务和资源。 要安装 Paws,请输入并运行以下 R 代码:

install.packages("paws")

要使用 AWS 服务,请创建一个客户端并从该客户端访问该服务的操作。 访问 AWS API 时,您必须提供您的凭证和区域。 Paws 使用 AWS 身份验证链搜索凭证和区域:

  • 显式提供的访问密钥、密钥、会话令牌、配置文件或区域
  • R 环境变量
  • 操作系统环境变量
  • AWS 共享凭证和配置文件 .aws/credentials.aws/config
  • 容器 IAM 角色
  • 实例 IAM 角色

因为您在附加了 IAM 角色的 EC2 实例上运行,所以 Paws 会自动使用您的 IAM 角色凭证来验证 AWS API 请求。

# To interact with an Amazon S3 service, first create an S3 client then list the objects within your bucket by invoking: rstudio-XXXXXXXXXX
s3 <- paws::s3(config = list(region = 'us-east-1'))s3$list_objects(Bucket = "rstudio-XXXXXXXXXX")
# Let’s see how we can interactively query data from your data lake using Amazon Athena.
athena <- paws::athena(config = list(region = 'us-east-1'))
athena$start_query_execution(QueryString = "SELECT * FROM "databasename.tablename" limit 10;",QueryExecutionContext = list(Database = "databasename", Catalog = "catalogname"),ResultConfiguration = list(OutputLocation = "S3 Bucket",EncryptionConfiguration = list(EncryptionOption = "SSE_S3")), WorkGroup = "workgroup name")
$QueryExecutionId[1] 
"17ccec8a-d196-4b4c-b31c-314fab8939f3"

对于生产环境,我们建议使用中概述的可扩展 Rstudio 解决方案 本博客.

结论

您学习了如何在 AWS 中部署您的 RStudio 环境。 我们展示了在 Amazon SageMaker 上使用 RStudio 的优势以及如何开始使用。 您还学习了如何通过使用 Amazon EC2 的自托管安装快速开始试验开源版本的 RStudio。 我们还演示了如何将 RStudio 集成到您的数据湖架构中,并使用 Lake Formation 的行级和单元级安全功能对数据湖表实施细粒度的访问控制。

在我们的下一篇文章中,我们将演示如何将 R 脚本容器化并使用 AWS Lambda.


关于作者

在您的 AWS 环境中实施 RStudio 并使用 AWS Lake Formation 权限 PlatoBlockchain 数据智能访问您的数据湖。 垂直搜索。 人工智能。文卡塔坎帕纳 是 AWS Health and Human Services 团队的高级解决方案架构师,常驻加利福尼亚州萨克拉门托。 在担任该职位期间,他通过 AWS 上架构完善的解决方案帮助公共部门客户实现其使命目标。

在您的 AWS 环境中实施 RStudio 并使用 AWS Lake Formation 权限 PlatoBlockchain 数据智能访问您的数据湖。 垂直搜索。 人工智能。Dawn Heisey-Grove 博士 是亚马逊网络服务的州和地方政府团队的公共卫生分析负责人。 在这个职位上,她负责帮助州和地方公共卫生机构创造性地思考如何实现他们的分析挑战和长期目标。 她的职业生涯一直在寻找利用现有或新数据支持公共卫生监测和研究的新方法。

时间戳记:

更多来自 AWS机器学习