在 Amazon Glue 中使用 Git 版本控制系统 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Amazon Glue 中使用 Git 版本控制系统

注意

Amazon Glue Studio 中目前不支持笔记本电脑进行版本控制。但是,支持 Amazon Glue 作业脚本和可视化 ETL 作业的版本控制。

如果您有远程存储库并希望使用存储库管理Amazon Glue作业,则可以使用Amazon Glue Studio或 Amazon CLI 将更改同步到存储库和中的作业Amazon Glue。以这种方式同步更改时,就是在将作业从 Amazon Glue Studio 推送到存储库,或者从存储库中提取到 Amazon Glue Studio。

通过在 Amazon Glue Studio 中集成 Git,您可以:

  • 与 Git 版本控制系统(例如、 Amazon CodeCommit GitHub GitLab、和 Bitbucket)集成

  • 编辑 Amazon Glue Studio 中的 Amazon Glue 作业(无论是使用可视化作业还是脚本作业)并将它们同步到存储库

  • 参数化作业中的源和目标

  • 从存储库中提取作业并在 Amazon Glue Studio 中进行编辑

  • 使用 Amazon Glue Studio 中的多分支工作流从分支提取和/或推送到分支,以此测试作业

  • 从存储库下载文件并将任务上传到 Amazon Glue Studio 以创建跨账户作业

  • 使用你选择的自动化工具(例如 Jenkins Amazon CodeDeploy等)

本视频演示了如何将 Glue Amazon 与 Git 集成,以及如何构建持续的协作代码管道。

IAM 权限

确保作业具有下列 IAM 权限之一。有关如何设置 IAM 权限的更多信息,请参阅为 Amazon Glue Studio 设置 IAM 权限

  • AWSGlueServiceRole

  • AWSGlueConsoleFullAccess

Git 集成至少需要以下操作:

  • glue:UpdateJobFromSourceControl — 能够使用版本控制系统中存在的作业更新 Amazon Glue

  • glue:UpdateSourceControlFromJob — 能够使用存储在 Amazon Glue 中的作业更新版本控制系统

  • s3:GetObject — 能够在推送到版本控制系统的同时检索作业脚本

  • s3:PutObject — 能够在从源代码控制系统提取作业时更新脚本

先决条件

要将作业推送到源代码控制存储库,您需要:

  • 您的管理员已经创建的存储库

  • 存储库中的一个分支

  • 个人访问令牌(对于 Bitbucket,这是存储库访问令牌)

  • 存储库所有者的用户名

  • 在存储库中设置权限以允许 Amazon Glue Studio 读取和写入存储库

    • GitLab— 将令牌范围设置为 api、read_repository 和 write_repository

    • Bitbucket – 将权限设置为:

      • 工作区成员资格 – 读取、写入

      • 项目 – 写入,管理员读取

      • 存储库 – 读取、写入、管理、删除

注意

使用时 Amazon CodeCommit,不需要个人访问令牌和存储库所有者。请参阅 Git 和 Amazon CodeCommit入门

在 Amazon Glue Studio 中使用源代码控制存储库中的作业

要从源代码控制存储库提取不在 Amazon Glue Studio 中的作业,然后在 Amazon Glue Studio 中使用该作业,先决条件将取决于作业的类型。

对于可视化作业:

  • 您需要与作业名称相匹配的文件夹和作业定义 JSON 文件

    例如,请参阅下面的作业定义。存储库中的分支应包含路径 my-visual-job/my-visual-job.json,其中文件夹和 JSON 文件与作业名称匹配

    { "name" : "my-visual-job", "description" : "", "role" : "arn:aws:iam::aws_account_id:role/Rolename", "command" : { "name" : "glueetl", "scriptLocation" : "s3://foldername/scripts/my-visual-job.py", "pythonVersion" : "3" }, "codeGenConfigurationNodes" : "{\"node-nodeID\":{\"S3CsvSource\":{\"AdditionalOptions\":{\"EnableSamplePath\":false,\"SamplePath\":\"s3://notebook-test-input/netflix_titles.csv\"},\"Escaper\":\"\",\"Exclusions\":[],\"Name\":\"Amazon S3\",\"OptimizePerformance\":false,\"OutputSchemas\":[{\"Columns\":[{\"Name\":\"show_id\",\"Type\":\"string\"},{\"Name\":\"type\",\"Type\":\"string\"},{\"Name\":\"title\",\"Type\":\"choice\"},{\"Name\":\"director\",\"Type\":\"string\"},{\"Name\":\"cast\",\"Type\":\"string\"},{\"Name\":\"country\",\"Type\":\"string\"},{\"Name\":\"date_added\",\"Type\":\"string\"},{\"Name\":\"release_year\",\"Type\":\"bigint\"},{\"Name\":\"rating\",\"Type\":\"string\"},{\"Name\":\"duration\",\"Type\":\"string\"},{\"Name\":\"listed_in\",\"Type\":\"string\"},{\"Name\":\"description\",\"Type\":\"string\"}]}],\"Paths\":[\"s3://dalamgir-notebook-test-input/netflix_titles.csv\"],\"QuoteChar\":\"quote\",\"Recurse\":true,\"Separator\":\"comma\",\"WithHeader\":true}}}" }

对于脚本作业:

  • 您需要文件夹、作业定义的 JSON 文件和脚本

  • 该文件夹和 JSON 文件应与作业名称相匹配。脚本名称需要匹配作业定义中 scriptLocation 以及文件扩展名

    例如,在下面的作业定义中,存储库中的分支应包含路径 my-script-job/my-script-job.jsonmy-script-job/my-script-job.py。脚本名称应与包括脚本的扩展名的 scriptLocation 中的名称相匹配

    { "name" : "my-script-job", "description" : "", "role" : "arn:aws:iam::aws_account_id:role/Rolename", "command" : { "name" : "glueetl", "scriptLocation" : "s3://foldername/scripts/my-script-job.py", "pythonVersion" : "3" } }

限制

将版本控制存储库连接到 Amazon Glue

您可以输入版本控制存储库的详细信息并在 Amazon Glue Studio 作业编辑器的 Version Control(版本控制)选项卡中管理它们。要与 Git 存储库集成,您必须在每次登录 Amazon Glue Studio 时连接到存储库。

要连接 Git 版本控制系统,请执行以下操作:

  1. 在 Amazon Glue Studio 中,开始新作业,然后选择 Version Control(版本控制)选项卡。

    
            屏幕截图显示了选中 Version Control(版本控制)选项卡的作业。
  2. 版本控制系统中,通过单击下拉菜单从可用选项中选择 Git 服务。

    • Amazon CodeCommit

    • GitHub

    • GitLab

    • Bitbucket

  3. 根据您选择的 Git 版本控制系统,需要填写的字段有所不同。

    对于 Amazon CodeCommit

    通过为作业选择存储库和分支来完成存储库配置:

    • 存储库-如果您在中设置了存储库 Amazon CodeCommit,请从下拉菜单中选择存储库。您的存储库将自动填充到列表中

    • 分支 — 从下拉菜单中选择分支

    • 文件夹可选 - 输入保存作业的文件夹的名称。如果留空,则会自动创建文件夹。文件夹名称默认为作业名称

    对于 GitHub

    填写以下字段以完成 GitHub 配置:

    • 个人访问令牌 — 这是 GitHub 存储库提供的令牌。有关个人访问令牌的更多信息,请参阅 GitHub 文档

    • 存储库所有者-这是 GitHub 存储库的所有者。

    通过从中选择存储库和分支来完成存储库配置 GitHub。

    • 存储库-如果您在中设置了存储库 GitHub,请从下拉菜单中选择存储库。您的存储库将自动填充到列表中

    • 分支 — 从下拉菜单中选择分支

    • 文件夹可选 - 输入保存作业的文件夹的名称。如果留空,则会自动创建文件夹。文件夹名称默认为作业名称

    对于 GitLab

    • 个人访问令牌 — 这是 GitLab 存储库提供的令牌。有关个人访问令牌的更多信息,请参阅 GitLab 个人访问令牌

    • 存储库所有者-这是 GitLab 存储库的所有者。

    通过从中选择存储库和分支来完成存储库配置 GitLab。

    • 存储库-如果您在中设置了存储库 GitLab,请从下拉菜单中选择存储库。您的存储库将自动填充到列表中

    • 分支 — 从下拉菜单中选择分支

    • 文件夹可选 - 输入保存作业的文件夹的名称。如果留空,则会自动创建文件夹。文件夹名称默认为作业名称

    对于 Bitbucket

    • 应用程序密码 — Bitbucket 使用应用程序密码而不是存储库访问令牌。有关应用程序密码的更多信息,请参阅应用程序密码

    • 存储库所有者 – 这是 Bitbucket 存储库的所有者。在 Bitbucket 中,所有者是存储库的创建者。

    从 Bitbucket 中选择工作区、储存库、分支和文件夹以完成存储库配置。

    • 工作区 – 如果您已在 Bitbucket 中设置工作区,请从下拉菜单中选择工作区。您的工作区会自动填充

    • 存储库 – 如果您在 Bitbucket 中设置了存储库,则从下拉菜单中选择存储库。您的存储库会自动填充

    • 分支 – 从下拉菜单中选择分支。您的分支会自动填充

    • 文件夹可选 - 输入保存作业的文件夹的名称。如果留空,则会使用作业名称自动创建文件夹。

  4. 在 Amazon Glue Studio 作业的顶部,选择 Save(保存)

推送 Amazon Glue 作业到源存储库

输入版本控制系统的详细信息后,可以在 Amazon Glue Studio 中编辑作业并将作业推送到您的源存储库。如果您不熟悉 Git 概念,如推送和提取,请参阅 Git 和 Amazon CodeCommit入门上的此教程。

要将作业推送到存储库,您需要输入版本控制系统的详细信息并保存作业。

  1. 在 Amazon Glue Studio 作业中,选择 Actions(操作)。这将打开其他菜单选项。

    
              屏幕截图显示了已打开 Actions(操作)菜单的作业。Push to repository(推送到存储库)选项可见。
  2. 选择 Push to repository(推送到存储库)。

    此操作将保存作业。推送到存储库时,Amazon Glue Studio 推送上次保存的更改。如果存储库中的作业被您或其他用户修改,并且与 Amazon Glue Studio 中的作业不同步,则在您从 Amazon Glue Studio 推送作业时,存储库中的作业会被保存在 Amazon Glue Studio 中的作业覆盖。

  3. 选择 Confirm(确认)以完成操作。这会在存储库中创建新的提交。如果您正在使用 Amazon CodeCommit,则确认消息将显示指向最新提交的链接 Amazon CodeCommit。

从源存储库提取 Amazon Glue 作业

将 Git 存储库的详细信息输入到 Version control(版本控制)选项卡之后,您也可以从存储库中提取作业并在 Amazon Glue Studio 中进行编辑。

  1. 在 Amazon Glue Studio 作业中,选择 Actions(操作)。这将打开其他菜单选项。

    
              屏幕截图显示了已打开 Actions(操作)菜单的作业。Push to repository(推送到存储库)选项可见。
  2. 选择 Pull from repository(从存储库中提取)。

  3. 选择确认。这会从存储库中获取最新的提交,并在 Amazon Glue Studio 中更新您的作业。

  4. 在 Amazon Glue Studio 中编辑您的作业。如果您进行了更改,则可以通过选择 Actions(操作)下拉菜单中的 Push to repository(推送到存储库)来将作业同步到存储库。