

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将基于 Git 的存储库与 EMR Notebooks 关联


可以将基于 Git 的存储库与 Amazon EMR Notebooks 关联，以将 Notebooks 保存在版本控制的环境中。一个 Notebook 最多可与三个存储库关联。支持以下基于 Git 的服务：
+ [Amazon CodeCommit](https://www.amazonaws.cn/codecommit)
+ [GitHub](https://www.github.com)
+ [Bitbucket](https://bitbucket.org/)
+ [GitLab](https://about.gitlab.com/)

**注意**  
EMR Notebooks 在控制台中作为 Amazon EMR Studio Workspaces 提供。通过控制台中的**创建 Workspace** 按钮，可以创建新的 Notebooks。要访问或创建 Workspaces，EMR Notebooks 用户需要额外的 IAM 角色权限。有关更多信息，请参阅 [Amazon EMR Notebooks 是控制台中的 Amazon EMR Studio Workspaces](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 和 [Amazon EMR 控制台](https://docs.amazonaws.cn/emr/latest/ManagementGuide/whats-new-in-console.html)。

将基于 Git 的存储库与您的 Notebook 相关联后，将会获得以下优势。
+ **版本控制**：您可以在版本控制系统中记录代码更改，以便查看更改历史记录并有选择地撤消一些更改。
+ **协作**：在不同 Notebook 中工作的同事可以通过基于 Git 的远程存储库共享代码。Notebooks 可以从远程存储库克隆或合并代码，然后将更改推送回这些远程存储库。
+ **代码重用** — 许多演示数据分析或机器学习技术的 Jupyter 笔记本都可以在公共托管的存储库中找到，例如。 GitHub可以将您的 Notebooks 与存储库关联，以便重用包含在该存储库中的 Jupyter Notebooks。

要将基于 Git 的存储库与 EMR Notebooks 结合使用，请在 Amazon EMR 控制台中添加存储库作为资源，关联需要身份验证的存储库的凭证，然后将这些存储库与 Notebooks 链接起来。您可在 Amazon EMR 控制台中查看存储在账户中的存储库列表以及各个存储库的详细信息。在创建基于 Git 的现有存储库时，可以将这些存储库与 Notebook 关联。

**Topics**
+ [

# 将 EMR Notebook 与存储库集成的先决条件和注意事项
](emr-managed-notebooks-git-considerations.md)
+ [

# 将基于 Git 的存储库添加到 Amazon EMR
](emr-git-repo-add.md)
+ [

# 从 EMR Studio Workspace 更新或删除基于 Git 的存储库
](emr-git-repo-delete.md)
+ [

# 在 EMR Studio 中链接或取消链接基于 Git 的存储库
](emr-git-repo-link.md)
+ [

# 在 EMR Studio 中创建具有关联 Git 存储库的新 Notebook
](emr-git-repo-create-notebook.md)
+ [

# 在 EMR Studio Notebook 中使用 Git 存储库
](emr-git-repo-open.md)

# 将 EMR Notebook 与存储库集成的先决条件和注意事项
先决条件和注意事项

在计划将基于 Git 的存储库与 EMR Notebooks 集成时，请考虑以下有关提交、权限和托管的最佳实践。

**注意**  
EMR Notebooks 在控制台中作为 Amazon EMR Studio Workspaces 提供。通过控制台中的**创建 Workspace** 按钮，可以创建新的 Notebooks。要访问或创建 Workspaces，EMR Notebooks 用户需要额外的 IAM 角色权限。有关更多信息，请参阅 [Amazon EMR Notebooks 是控制台中的 Amazon EMR Studio Workspaces](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 和 [Amazon EMR 控制台](https://docs.amazonaws.cn/emr/latest/ManagementGuide/whats-new-in-console.html)。

## Amazon CodeCommit


如果您使用 CodeCommit 存储库，则必须使用 Git 凭据和 HTTPS CodeCommit。不支持 SSH 密钥和带有 Amazon CLI 凭据助手的 HTTPS。 CodeCommit 不支持个人访问令牌 (PATs)。有关更多信息，请参阅 [IAM 用户指南中的 IAM 与 CodeCommit Git 证书、SSH 密钥和 Amazon 访问密钥一起使用](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_ssh-keys.html)，以及*用户指南*中的[使用 Git 凭证的 HTTPS *Amazon CodeCommit 用户*设置](https://docs.amazonaws.cn/codecommit/latest/userguide/setting-up-gc.html)。

## 访问和权限注意事项


在将存储库与 Notebook 关联之前，请确保集群、EMR Notebooks 的 IAM 角色和安全组具有正确的设置和权限。您还可以按照[为 EMR Notebooks 配置私有托管的 Git 存储库](#emr-managed-notebooks-private-git-repo)中的说明配置在专用网络中托管的基于 Git 的存储库。
+ **集群互联网访问**：启动的网络接口只有一个私有 IP 地址。这意味着 Notebook 连接到的集群必须位于具有网络地址转换 (NAT) 网关的私有子网中，或者必须能够通过虚拟私有网关访问 Internet。有关更多信息，请参阅 [Amazon VPC 选项](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-clusters-in-a-vpc.html)。

  Notebook 的安全组必须包含出站规则，以便允许 Notebook 将流量从集群路由到 Internet。建议您创建自己的安全组。有关更多信息，请参阅[为 EMR Notebooks 指定 EC2 安全组](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-managed-notebooks-security-groups.html)。
**重要**  
如果网络接口启动到公有子网中，它将无法通过互联网网关（IGW）与互联网通信。
+ **的权限 Amazon Secrets Manager** — 如果您使用 Secrets Manager 存储用于访问仓库的机密，则[EMR Notebooks 的服务角色](emr-managed-notebooks-service-role.md)必须附加允许`secretsmanager:GetSecretValue`执行该操作的权限策略。

## 为 EMR Notebooks 配置私有托管的 Git 存储库
配置私有托管的 Git 存储库

使用以下说明为 EMR Notebooks 配置私有托管的存储库。您必须提供一个配置文件，其中包含有关您的 DNS 和 Git 服务器的信息。Amazon EMR 使用此信息配置将流量路由到您的私有托管存储库的 EMR Notebooks。

**先决条件**

在为 EMR Notebooks 配置私有托管的 Git 存储库之前，您必须具备以下条件：
+ 保存 EMR 笔记本文件 Amazon S3 Control 的位置。

**为 EMR Notebooks 配置一个或多个私有托管的 Git 存储库**

1. 使用提供的模板创建配置文件。为要在配置中指定的每个 Git 服务器包括以下值：
   + **`DnsServerIpV4`**-您的 DNS 服务器 IPv4 的地址。如果您同时提供 `DnsServerIpV4` 和 `GitServerIpV4List` 的值，则 `DnsServerIpV4` 的值优先，并将用于解析您的 `GitServerDnsName`。
**注意**  
要使用私有托管的 Git 存储库，您的 DNS 服务器必须允许来自 EMR Notebooks 的入站访问。我们强烈建议您保护您的 DNS 服务器，防止其它未经授权的访问。
   + **`GitServerDnsName`**：您的 Git 服务器的 DNS 名称。例如 `"git.example.com"`。
   + **`GitServerIpV4List`**-属于您的 Git 服务器 IPv4的地址列表。

   ```
   [
       {
           "Type": "PrivatelyHostedGitConfig",
           "Value": [
               {
                   "DnsServerIpV4": "<10.24.34.xxx>",
                   "GitServerDnsName": "<enterprise.git.com>",
                   "GitServerIpV4List": [
                       "<xxx.xxx.xxx.xxx>",
                       "<xxx.xxx.xxx.xxx>"
                   ]
               },
               {
                   "DnsServerIpV4": "<10.24.34.xxx>",
                   "GitServerDnsName": "<git.example.com>",
                   "GitServerIpV4List": [
                       "<xxx.xxx.xxx.xxx>",
                       "<xxx.xxx.xxx.xxx>"
                   ]
               }
           ]
       }
   ]
   ```

1. 将配置文件另存为 `configuration.json`。

1. 将配置文件上载到名为 `life-cycle-configuration` 的文件夹中的指定 Amazon S3 存储位置。例如，如果您的默认 S3 位置是 `s3://amzn-s3-demo-bucket/notebooks`，则您的配置文件应位于 `s3://amzn-s3-demo-bucket/notebooks/life-cycle-configuration/configuration.json`。
**重要**  
我们强烈建议您将 `life-cycle-configuration` 文件夹的访问权限限制为仅您的 EMR Notebooks 管理员以及 EMR Notebooks 的服务角色。您还应该确保 `configuration.json` 免受未经授权的访问。有关说明，请参阅[使用用户策略控制对存储桶的访问](https://docs.amazonaws.cn/AmazonS3/latest/userguide/walkthrough1.html)或 [Amazon S3 的安全最佳实践](https://docs.amazonaws.cn/AmazonS3/latest/userguide/security-best-practices.html)。

   有关上载说明，请参阅《Amazon Simple Storage Service 用户指南》**中的[创建文件夹](https://docs.amazonaws.cn/AmazonS3/latest/userguide/using-folders.html#create-folder)和[上载对象](https://docs.amazonaws.cn/AmazonS3/latest/userguide/upload-objects.html)。

# 将基于 Git 的存储库添加到 Amazon EMR


有关如何将基于 Git 的存储库添加到旧控制台中的 EMR Notebook 或控制台中的 EMR Studio Workspace，请参阅以下各节的内容。

**注意**  
EMR Notebooks 在控制台中作为 Amazon EMR Studio Workspaces 提供。通过控制台中的**创建 Workspace** 按钮，可以创建新的 Notebooks。要访问或创建 Workspaces，EMR Notebooks 用户需要额外的 IAM 角色权限。有关更多信息，请参阅 [Amazon EMR Notebooks 是控制台中的 Amazon EMR Studio Workspaces](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 和 [Amazon EMR 控制台](https://docs.amazonaws.cn/emr/latest/ManagementGuide/whats-new-in-console.html)。

------
#### [ Console ]

EMR Notebooks 便是新控制台中的 EMR Studio Workspaces，因此您可以按照 [将基于 Git 的存储库链接到 EMR Studio Workspace](emr-studio-git-repo.md) 中的说明将最多三个 Git 存储库关联到 Workspace。

此外，您也可以使用 JupyterLab Git 扩展程序。从 Jupyterlab Notebook 的左侧边栏中选择 **Git** 图标来访问扩展程序。有关扩展的信息，请参阅 [jupyterl](https://github.com/jupyterlab/jupyterlab-git) GitHub ab-git 存储库。

要将 Git 存储库关联到 Workspace，Studio 管理员必须配置 Studio 以允许 Git 存储库链接。有关更多信息，请参阅 [为基于 Git 的存储库建立访问和权限](emr-studio-enable-git.md)。

------

# 从 EMR Studio Workspace 更新或删除基于 Git 的存储库


要了解如何从旧控制台中的 EMR Notebook 或控制台中的 EMR Studio Workspace 删除基于 Git 的存储库，请参阅以下各节的内容。

**注意**  
EMR Notebooks 在控制台中作为 Amazon EMR Studio Workspaces 提供。通过控制台中的**创建 Workspace** 按钮，可以创建新的 Notebooks。要访问或创建 Workspaces，EMR Notebooks 用户需要额外的 IAM 角色权限。有关更多信息，请参阅 [Amazon EMR Notebooks 是控制台中的 Amazon EMR Studio Workspaces](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 和 [Amazon EMR 控制台](https://docs.amazonaws.cn/emr/latest/ManagementGuide/whats-new-in-console.html)。

------
#### [ Console ]

EMR Notebooks 便是新控制台中的 EMR Studio Workspaces，因此您可以参考 [将基于 Git 的存储库链接到 EMR Studio Workspace](emr-studio-git-repo.md) 来获取有关在 Workspace 中使用 Git 存储库的更多信息。但是目前，您无法从 Workspace 中删除 Git 存储库。

------

# 在 EMR Studio 中链接或取消链接基于 Git 的存储库


按照以下步骤将基于 Git 的存储库链接到或取消链接到旧控制台中的 EMR Notebook，或控制台中的 EMR Studio Workspaces。

**注意**  
EMR Notebooks 在控制台中作为 Amazon EMR Studio Workspaces 提供。通过控制台中的**创建 Workspace** 按钮，可以创建新的 Notebooks。要访问或创建 Workspaces，EMR Notebooks 用户需要额外的 IAM 角色权限。有关更多信息，请参阅 [Amazon EMR Notebooks 是控制台中的 Amazon EMR Studio Workspaces](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 和 [Amazon EMR 控制台](https://docs.amazonaws.cn/emr/latest/ManagementGuide/whats-new-in-console.html)。

------
#### [ Console ]

EMR Notebooks 便是新控制台中的 EMR Studio Workspaces，因此您可以参考 [将基于 Git 的存储库链接到 EMR Studio Workspace](emr-studio-git-repo.md) 来获取有关在 Workspace 中使用 Git 存储库的更多信息。但是目前，您无法从 Workspace 中删除 Git 存储库。

------

## 了解存储库状态


Git 存储库在存储库列表中可能具有以下任何状态。有关将 EMR Notebooks 与 Git 存储库关联的更多信息，请参阅[在 EMR Studio 中链接或取消链接基于 Git 的存储库](#emr-git-repo-link)。


| Status | 含义 | 
| --- | --- | 
|  链接  |  Git 存储库正在链接到 Notebook。当存储库处于 **Linking (正在链接)** 状态时，您无法停止 Notebook。  | 
|  已链接  |  Git 存储库将链接到 Notebook。如果存储库具有 **Linked (已链接)** 状态时，则它已连接到远程存储库。  | 
|  链接失败  |  Git 存储库未能链接到 Notebook。您可以重新尝试链接它。  | 
|  正在取消链接  |  正在从 Notebook 取消 Git 存储库的链接。当存储库处于 **Unlinking (正在取消链接)** 状态时，您无法停止 Notebook。从 Notebook 取消 Git 存储库的链接只会断开它与远程存储库的连接，而不会从 Notebook 中删除任何代码。  | 
|  取消链接失败  |  未能从 Notebook 取消 Git 存储库的链接。您可以重新尝试取消该存储库的链接。  | 

# 在 EMR Studio 中创建具有关联 Git 存储库的新 Notebook


**注意**  
EMR Notebooks 在控制台中作为 Amazon EMR Studio Workspaces 提供。通过控制台中的**创建 Workspace** 按钮，可以创建新的 Notebooks。要访问或创建 Workspaces，EMR Notebooks 用户需要额外的 IAM 角色权限。有关更多信息，请参阅 [Amazon EMR Notebooks 是控制台中的 Amazon EMR Studio Workspaces](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 和 [Amazon EMR 控制台](https://docs.amazonaws.cn/emr/latest/ManagementGuide/whats-new-in-console.html)。

**在 Amazon EMR 旧控制台中创建一个 Notebook 并将之关联到 Git 存储库**

1. 按照 [在 EMR Studio 中创建 Notebook](emr-managed-notebooks-create.md) 中的说明进行操作。

1. 对于 **Security group (安全组)**，选择 **Use your own security group (使用您自己的安全组)**。
**注意**  
Notebook 的安全组必须包含出站规则，以允许 Notebook 通过集群将流量路由到 Internet。建议您创建自己的安全组。有关更多信息，请参阅[为 EMR Notebooks 指定 EC2 安全组](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-managed-notebooks-security-groups.html)。

1. 对于 **Git repositories (Git 存储库)**，选择要与 Notebook 关联的存储库****。

   1. 选择作为资源存储在您账户中的存储库，然后选择 **Save (保存)**。

   1. 要在账户中添加新存储库作为资源，请选择 **add a new repository (添加新存储库)**。在新窗口中完成 **Add repository (添加存储库)** 工作流。

# 在 EMR Studio Notebook 中使用 Git 存储库


**注意**  
EMR Notebooks 在控制台中作为 Amazon EMR Studio Workspaces 提供。通过控制台中的**创建 Workspace** 按钮，可以创建新的 Notebooks。要访问或创建 Workspaces，EMR Notebooks 用户需要额外的 IAM 角色权限。有关更多信息，请参阅 [Amazon EMR Notebooks 是控制台中的 Amazon EMR Studio Workspaces](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 和 [Amazon EMR 控制台](https://docs.amazonaws.cn/emr/latest/ManagementGuide/whats-new-in-console.html)。

**打开笔记本时，可以选择 “在** Jupyter **中打开” JupyterLab 或 “在 Jupyter** 中打开”。

如果您选择在 Jupyter 中打开 Notebook，则会显示 Notebook 中的可扩展文件和文件夹的列表。您可以在 Notebook 单元格中手动运行 Git 命令，如下所示。

```
!git pull origin primary
```

要打开任何额外的存储库，请导航到其它文件夹。

如果您选择使用 JupyterLab 界面打开笔记本，则可以使用预安装的 JupyterLab Git 扩展。有关扩展程序的更多信息，请参阅 [jupyterlab-git](https://github.com/jupyterlab/jupyterlab-git)。