インフラストラクチャをコードとして使用して、サーバーレスデータレイクを AWS クラウドにデプロイして管理します。 - AWS 規範的ガイダンス

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

インフラストラクチャをコードとして使用して、サーバーレスデータレイクを AWS クラウドにデプロイして管理します。

キランクマール・チャンドラシェカール (AWS) とアブデル・ジャイディ (AWS) が作成

環境: 本番稼働用

テクノロジー: データレイク、分析、サーバーレス、 DevOps

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

AWS サービス: Amazon S3; Amazon SQS; AWS CloudFormation; AWS Glue; Amazon CloudWatch; AWS Lambda; AWS Step Functions; Amazon DynamoDB

概要

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

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

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

このパターンでは、複数の AWS サーバーレスサービスを使用してデータレイク管理を簡素化します。これらには、ストレージ用に、Amazon Amazon Amazon Amazon Amazon Amazon、AWS LamAmazon DynamoDB da、AWS Glue、AWS Lambda、AWS Glue、オーケストレーション用に、Amazon Amazon CloudWatch Amazon、AWS Lambda、AWS Glue Service (Amazon SQS)、AWS Step Functions などがあります。

AWS CloudFormation と AWS のコードサービスは IaC レイヤーとして機能し、運用と管理が簡単な、再現性のある迅速なデプロイを実現します。

前提条件と制限

前提条件

 

アーキテクチャ

このアーキテクチャ図は、次の手順によるイベント駆動型プロセスを示しています。 

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

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

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

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

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

テクノロジースタック

  • CloudWatch アマゾンイベント

  • AWS CloudFormation

  • AWS CodePipeline

  • AWS CodeBuild

  • AWS CodeCommit

  • Amazon DynamoDB

  • AWS Glue

  • AWS Lambda

  • Amazon S3

  • Amazon SQS

  • AWS Step Functions

Tools

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

  • AWS CloudFormation — CloudFormation 計画に従い、再現性の高い方法で、AWS インフラストラクチャデプロイを作成し、プロビジョニングします。

  • AWS CodeBuild — CodeBuild は、ソースコードをコンパイルして、単体テストを実行し、デプロイする準備が整ったアーティファクトを生成する完全に管理された構築サービスです。

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

  • AWS CodePipeline — CodePipeline は、ソフトウェア変更を継続的にリリースするために必要な手順のモデル化、視覚化、および自動化ができる継続的なデリバリサービスです。

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

  • AWS Glue は、分析のためにデータを簡単に準備およびロードできるフルマネージド ETL サービスです。

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

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

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

  • Amazon Simple Queue Service (Amazon SQS) は、フルマネージドのメッセージキューイングサービスであり、マイクロサービス、分散システム、およびサーバーレスアプリケーションの疎結合化とスケーリングを容易にします。

  • Deequ — Deequは、大規模なデータセットのデータ品質指標の計算、データ品質制約の定義と検証、データ分布の変化に関する最新情報の入手に役立つツールです。

Code

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。 

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

DevOps エンジニア

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

IaC のバージョン管理

その他のリソース