我有一个正在运行的 EMR 集群,我正在尝试将笔记本链接到 github。
我有:
- 添加了对 EMR 角色的 AWS 秘密访问(这是我的第一个错误(
- 为所有 EMR 安全组添加了出站 HTTPS/443
尝试使用我的用户/传递密钥将笔记本链接到私有存储库,但出现以下错误:
Unable to reach repository https://github.com/<my repo>. Ensure network and security groups have valid configurations. Ensure that the repository information provided is correct.
我在文档中看到它谈到了 NAT 和 VPG 选项,而我都没有。这需要吗?文档在细节/配置方面非常轻。
https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-git-considerations.html
任何帮助,不胜感激。
您需要处理 4 件事:
-
Git 存储库和目标分支应该存在
-
配置凭据以使用机密管理器访问 Git
-
您的 EMR 集群必须位于私有子网中,而不是公有子网中。您的VPC 中必须有一个 NAT G/W,此私有子网应使用该 NAT G/W 访问互联网,即为此私有子网配置路由表以将 0.0.0.0/0 映射到 NAT G/W。
-
您需要有 2 个安全组 (SG(:
我。主实例的 SG
入站规则- 允许来自 EMR 笔记本的默认 EC2 安全组中的任何资源的 TCP 端口 18888
出站规则- 无
ii. 笔记本实例的 SG
我。主实例的 SG
入站规则- 无
出站规则- 允许 TCP 端口 18888 访问 EMR 笔记本的默认 EC2 安全组中的任何资源。还允许笔记本通过群集将流量路由到互联网,例如 HTTPS TCP 443 0.0.0.0/0
来源: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-security-groups.html
端到端,如下所示:
1.( 创建"私有"子网。
从头开始,我首先创建了一个专用的 VPC:比如 10.0.16.0/20。
接下来,我创建一个互联网网关。将其附加到上述 VPC。
在此 VPC 中,首先创建一个"公有"子网。 比如 10.0.17.0/24。它是公开的,因为其路由表中有上述互联网网关条目。这是通过在 VPC 部分下创建一个路由表来完成的,该路由表下面有这个互联网网关。然后,此路由表将附加到此子网 10.0.17.0/24,因此现在它处于"公共"状态。
现在,创建另一个子网 10.0.20.0/24。 创建 NAT 网关,并在此子网的路由表中为其创建一个条目。此 NAT 网关必须流入上面创建的公有子网,即 10.0.17.0/24。
现在,您的私有子网 10.0.20.0/24 可以通过与上述公有子网接口的 NAT 网关访问互联网。
2.( 输入"安全组"。 共有 4 个 SG 在起作用,
其中 ElasticMapReduceEditors-Editor 和 ElasticMapReduceEditors-Livy 必须允许出站 0.0.0.0/0。另外两个SG用于主站和从站,即ElasticMapReduce-Master-Private和ElasticMapReduce-Slave-Private
3.( 创建私有 Git 存储库,在 github 配置文件的设置部分下,创建一个个人访问令牌。在提供有关创建 EMR 存储库的详细信息时,请添加此密钥值并保存它。您的笔记本服务角色必须对所有存储库(即"r-*"(具有"GetSecretValue"权限。
此外,请确保在创建/链接存储库时进行配置之前,指定的分支必须存在。
AWS最大的问题是他们是优秀的销售人员,但在售后/维护他们生产的如此多的产品方面却拖延了,他们的文档很糟糕,缺乏端到端的示例,人们不得不依赖SO社区。对不起,朋友,我拖延得太:p我想把它放进一个很好的博客,并在下一个答案中提供链接!