Infrastructure as Code を使用してサーバーレスデータレイクを AWS クラウドにデプロイして管理する - AWS 規範ガイダンス

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

Infrastructure as Code を使用してサーバーレスデータレイクを AWS クラウドにデプロイして管理する

作成者: Kirankumar Chandrashekar (AWS) と Abdel Jaidi (AWS)

環境:本稼働

テクノロジー: DataLakes、分析、サーバーレス、 DevOps

ワークロード:その他すべてのワークロード

AWS サービス: Amazon S3、Amazon SQS、AWS CloudFormation、AWSGlue、Amazon CloudWatch、AWSLambda、AWSStep Functions、Amazon DynamoDB

[概要]

このパターンでは、サーバーレスコンピューティングInfrastructure as Code (IaC) を使用して、Amazon Web Services (AWS) クラウドにデータレイクを実装および管理する方法を説明します。このパターンは、 によって開発されたサーバーレスデータレイクフレームワーク (SDLF) ワークショップに基づいていますAWS。

SDLF は、 AWS クラウド上のエンタープライズデータレイクの配信を高速化する再利用可能なリソースのコレクションであり、本番環境への迅速なデプロイに役立ちます。ベストプラクティスに従ってデータレイクの基本構造を実装するために使用されます。

SDLF は、、、 などのAWSサービスを使用してAWS CodePipeline、コードとインフラストラクチャのデプロイ全体で継続的インテグレーション/継続的デプロイ (CI/CD) プロセスを実装AWS CodeBuildしますAWS CodeCommit。

このパターンでは、複数のAWSサーバーレスサービスを使用してデータレイク管理を簡素化します。これには、ストレージ用の Amazon Simple Storage Service (Amazon S3) と Amazon DynamoDB、コンピューティング用の AWS Lambda と AWS Glue、オーケストレーション用の Amazon CloudWatch Events、Amazon Simple Queue Service (Amazon SQS)、AWSStep Functions が含まれます。

AWS CloudFormation および AWSコードサービスは IaC レイヤーとして機能し、再現可能で迅速なデプロイと、簡単なオペレーションと管理を提供します。

前提条件と制限

前提条件

アーキテクチャ

このアーキテクチャ図は、イベント駆動型プロセスを以下のステップで示しています。 

AWS クラウドへのデータレイクの実装と管理。
  1. raw データ S3 バケットにファイルを追加すると、Amazon S3 イベント通知が SQSキューに配置されます。各通知は JSON ファイルとして配信され、S3 バケット名、オブジェクトキー、タイムスタンプなどのメタデータが含まれます。

  2. この通知は、メタデータに基づいてイベントを正しい抽出、変換、ロード (ETL) プロセスにルーティングする Lambda 関数によって使用されます。Lambda 関数は Amazon DynamoDB テーブルに保存されているコンテキスト設定を使用することもできます。このステップにより、データレイク内の複数のアプリケーションを切り離してスケーリングできるようになります。

  3. イベントはETLプロセスの最初の Lambda 関数にルーティングされ、raw データ領域からデータレイクのステージング領域にデータを変換して移動します。最初のステップでは、総合カタログを更新します。これは、データレイクのすべてのファイルメタデータを含む DynamoDB テーブルです。このテーブルの各行には、Amazon S3 に保存されている 1 つのオブジェクトに関する運用メタデータが格納されています。S3 オブジェクトに対して軽い変換を行う Lambda 関数に対して同期呼び出しが行われます。この変換は、計算コストのかからない操作 (ファイルをある形式から別の形式に変換するなど) です。新しいオブジェクトがステージング S3 バケットに追加されているため、包括的なカタログが更新され、 の次のフェーズを待つメッセージがSQSキューに送信されますETL。

  4. CloudWatch イベントルールは、5 分ごとに Lambda 関数をトリガーします。この関数は、メッセージが前のETLフェーズからSQSキューに配信されたかどうかを確認します。メッセージが配信された場合、Lambda 関数はETLプロセスの AWS Step Functions から 2 番目の関数を開始します。

  5. その後、大量の変換がファイルのバッチに適用されます。この重い変換は、 Glue ジョブ、AWSFargate タスク、Amazon EMR ステップ、Amazon AWS SageMaker Notebook への同期呼び出しなど、計算コストの高いオペレーションです。テーブルメタデータは、 Glue AWS カタログを更新する AWSGlue クローラを使用して出力ファイルから抽出されます。ファイルメタデータは DynamoDB の包括的なカタログテーブルにも追加されます。最後に、Deequ を活用したデータ品質ステップも実行されます。

テクノロジースタック

  • Amazon CloudWatch イベント

  • AWS CloudFormation

  • AWS CodePipeline

  • AWS CodeBuild

  • AWS CodeCommit

  • Amazon DynamoDB

  • AWS Glue

  • AWS Lambda

  • Amazon S3

  • Amazon SQS

  • AWS Step Functions

ツール

  • Amazon CloudWatch Events – CloudWatch イベントは、 AWSリソースの変更を記述するシステムイベントのほぼリアルタイムのストリームを提供します。

  • AWS CloudFormation — AWSインフラストラクチャのデプロイを予測どおりに繰り返し作成およびプロビジョニングする CloudFormation のに役立ちます。

  • AWS CodeBuild - CodeBuild は、ソースコードをコンパイルし、ユニットテストを実行し、すぐにデプロイできるアーティファクトを生成するフルマネージド型のビルドサービスです。

  • AWS CodeCommit - は、アセット (ソースコードやバイナリファイルなど) をプライベートに保存および管理するために使用できる、 によってホストAWSされるバージョン管理サービス CodeCommit です。

  • AWS CodePipeline – CodePipeline は、ソフトウェアの変更を継続的にリリースするために必要なステップをモデル化、視覚化、自動化するために使用できる継続的デリバリーサービスです。

  • Amazon DynamoDB – DynamoDB はフルマネージド型の NoSQL データベースサービスで、高速で予測可能なパフォーマンスとスケーラビリティを提供します。 

  • AWS Glue – AWS Glue は、分析用のデータの準備とロードを容易にするフルマネージドETLサービスです。

  • AWS Lambda – Lambda は、サーバーのプロビジョニングや管理を行わずにコードの実行をサポートします。Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケールします。 

  • Amazon S3 – Amazon Simple Storage Service (Amazon S3) は、拡張性の高いオブジェクトストレージサービスです。Amazon S3 は、ウェブサイト、モバイルアプリケーション、バックアップ、データレイクなど、幅広いストレージソリューションに使用できます。

  • AWS Step Functions - AWS Step Functions は、Lambda AWS 関数と複数のAWSサービスをビジネスクリティカルなアプリケーションに簡単にシーケンスできるようにするサーバーレス関数オーケストレーターです。

  • Amazon SQS – Amazon Simple Queue Service (Amazon SQS) は、マイクロサービス、分散システム、サーバーレスアプリケーションの分離とスケーリングに役立つフルマネージド型のメッセージキューイングサービスです。

  • Deequ – Deequ は、大規模なデータセットのデータ品質メトリクスの計算、データ品質制約の定義と検証、データ分布の変化に関する最新情報の把握に役立つツールです。

コードリポジトリ

のソースコードとリソースSDLFは、 AWS Labs GitHub リポジトリ にあります。

エピック

タスク説明必要なスキル

データレイクの IaC を管理するための CI/CD パイプラインを設定します。

AWS マネジメントコンソールにサインインし、SDLFワークショップの「初期設定」セクションのステップに従います。これにより、データレイクの IaC をプロビジョニングして管理する CodeCommit リポジトリ、 CodeBuild 環境、 CodePipeline パイプラインなどの初期 CI/CD リソースが作成されます。

DevOps エンジニア
タスク説明必要なスキル

ローカルマシンで CodeCommit リポジトリのクローンを作成します。

SDLF ワークショップの「基盤のデプロイ」セクションのステップに従います。これにより、IaC をホストする Git リポジトリをローカル環境に複製できます。 

詳細については、 CodeCommit ドキュメントの CodeCommit 「リポジトリへの接続」を参照してください。

DevOps エンジニア

CloudFormation テンプレートを変更します。

ローカルワークステーションとコードエディタを使用して、ユースケースや要件に応じて CloudFormation テンプレートを変更します。それらをローカルにクローンされた Git リポジトリにコミットします。 

詳細については、 AWS CloudFormation ドキュメントのAWS CloudFormation 「 テンプレートの使用」を参照してください。

DevOps エンジニア

変更を CodeCommit リポジトリにプッシュします。

インフラストラクチャコードはバージョン管理下に置かれ、コードベースへの変更が追跡されるようになりました。変更を CodeCommit リポジトリにプッシュすると、 によって CodePipeline 自動的にインフラストラクチャに適用され、 に配信されます CodeBuild。 

重要: AWSSAMCLIで を使用する場合は CodeBuild、 コマンドsam packagesam deploy コマンドを実行します。を使用する場合はCLI、 AWS コマンドaws cloudformation packageaws cloudformation deploy コマンドを実行します。

DevOps エンジニア

関連リソース

IaC をプロビジョニングするため CI/CD パイプラインを設定する

IaC のバージョン管理

その他のリソース