

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS CodePipeline CI/CD パイプラインで AWS Glue ジョブをデプロイする
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline"></a>

*Amazon Web Services、Bruno Klein、Luis Henrique、Massao Yamada*

## 概要
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-summary"></a>

このパターンは、AWS CodeCommit と AWS CodePipeline を AWS Glue に統合し、開発者が変更をリモートの AWS CodeCommit リポジトリに反映すると直ちに AWS Lambda を使用してジョブを起動する方法を示しています。 

開発者が抽出、変換、ロード (ETL) リポジトリに変更を送信し、その変更を AWS CodeCommit にプッシュすると、新しいパイプラインが呼び出されます。パイプラインは、これらの変更を含む AWS Glue ジョブを起動する Lambda 関数を開始します。AWS Glue ジョブは ETL タスクを実行します。

このソリューションは、企業、開発者、データエンジニアが変更をコミットしてターゲットリポジトリにプッシュしたらすぐにジョブを開始する場合に役立ちます。より高いレベルの自動化と再現性を実現できるため、ジョブの起動時とライフサイクル中のエラーを回避できます。

## 前提条件と制限
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ [Git](https://git-scm.com/) がローカルマシンにインストールされている
+ [Amazon Cloud 開発キット (Amazon CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) がローカルマシンにインストールされている
+ [Python](https://www.python.org/) がローカルマシンにインストールされている
+ *添付ファイル*セクションのコード

**制限**
+ パイプラインは、AWS Glue ジョブが正常に起動されるとすぐに終了します。ジョブの完了を待たずに行われます。
+ 添付のコードはデモ専用です。

## アーキテクチャ
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-architecture"></a>

**ターゲットテクノロジースタック**
+ AWS Glue
+ AWS Lambda
+ AWS CodePipeline
+ AWS CodeCommit

**ターゲットアーキテクチャ**

![\[開発者が CodeCommit リポジトリに変更を反映すると、直ちに Lambda を使用して Glue ジョブを起動します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/99a67388-5939-4267-8324-b6ca8bfa7962/images/917c9041-b94d-4e95-a3c4-9a1115ead228.png)


 

このプロセスは次の 4 つの手順で構成されます。

1. 開発者またはデータエンジニアは ETL コードを変更してコミットし、その変更を AWS CodeCommit にプッシュします。

1. プッシュによってパイプラインが開始されます。

1. パイプラインは Lambda 関数を開始します。Lambda 関数はリポジトリで `codecommit:GetFile` を呼び出し、ファイルを Amazon Simple Storage Service (Amazon S3) にアップロードします。

1. Lambda 関数は ETL コードで新しい AWS Glue ジョブを起動します。

1. Lambda 関数はパイプラインを終了します。

**自動化とスケール**

添付ファイルのサンプルは、AWS Glue を AWS CodePipeline と統合する方法を示しています。ユーザー自身で使用するためにカスタマイズまたは拡張できるベースラインサンプルを提供します。詳細については、「*エピック*」セクションを参照ください。

## ツール
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-tools"></a>
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/) – AWS CodePipeline はフルマネージド型の[継続的デリバリー](https://aws.amazon.com/devops/continuous-delivery/)サービスで、アプリケーションとインフラストラクチャの更新を迅速かつ信頼できるものにするパイプラインのリリース自動化に役立ちます。
+ [AWS CodeCommit](https://aws.amazon.com/codecommit/) — AWS CodeCommit は、安全な Git ベースのリポジトリをホストするフルマネージド型の[ソース管理](https://aws.amazon.com/devops/source-control/)サービスです。
+ [AWS Lambda](https://aws.amazon.com/lambda/) – AWS Lambda はサーバーをプロビジョニングまたは管理しなくてもコードを実行できるサーバーレスコンピュートサービスです。
+ [AWS Glue](https://aws.amazon.com/glue) – AWS Glue は、分析、機械学習、アプリケーション開発用のデータの検出、準備、結合を容易にするサーバーレスデータ統合サービスです。
+ [Git クライアント](https://git-scm.com/downloads) — Git は GUI ツールを提供し、コマンドラインまたはデスクトップツールを使用して GitHub から必要なアーティファクトをチェックアウトできます。 
+ [AWS CDK](https://aws.amazon.com/cdk/) — AWS CDK は、使い慣れたプログラミング言語を使用してクラウドアプリケーションリソースの定義に役立つオープンソースのソフトウェア開発フレームワークです。

## エピック
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-epics"></a>

### サンプルコードをデプロイする
<a name="deploy-the-sample-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS CLI を設定します。 | AWS コマンドラインインターフェイス (AWS CLI) を設定し、現在の AWS アカウントをターゲットにして認証します。手順については、[AWS CLI ドキュメント](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)を参照してください。 | 開発者、DevOpsエンジニア | 
| サンプルプロジェクトファイルを抽出します。 | 添付ファイルからファイルを抽出し、サンプルプロジェクトファイルを含めるフォルダを作成します。 | 開発者、DevOpsエンジニア | 
| サンプルコードをデプロイします。 | ファイルを抽出したら、抽出場所から以下のコマンドを実行してベースラインサンプルを作成します。<pre>cdk bootstrap<br />cdk deploy<br />git init<br />git remote add origin <code-commit-repository-url><br />git stage .<br />git commit -m "adds sample code"<br />git push --set-upstream origin main</pre>最後のコマンドの後、パイプラインと AWS Glue ジョブのステータスを監視できます。 | 開発者、DevOpsエンジニア | 
| コードをカスタマイズします。 | etl.py ファイルのコードをビジネス要件に合わせてカスタマイズします。ETL コードを改訂、パイプラインステージを変更、またはソリューションを拡張できます。 | データエンジニア | 

## 関連リソース
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-resources"></a>
+ [AWS CDK の使用開始](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)
+ [AWS Glue にジョブを追加する](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
+ [CodePipeline のソースアクション統合](https://docs.aws.amazon.com/codepipeline/latest/userguide/integrations-action-type.html#integrations-source)
+ [CodePipeline の パイプラインで AWS Lambda 関数を呼び出す](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-invoke-lambda-function.html)
+ [AWS Glue プログラミング](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming.html)
+ [AWS CodeCommit GetFile API](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetFile.html)

## アタッチメント
<a name="attachments-99a67388-5939-4267-8324-b6ca8bfa7962"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/99a67388-5939-4267-8324-b6ca8bfa7962/attachments/attachment.zip)」