Amazon DataZone を使用してエンタープライズデータメッシュを構築する AWS CDKAWS CloudFormation - AWS 規範ガイダンス

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

Amazon DataZone を使用してエンタープライズデータメッシュを構築する AWS CDKAWS CloudFormation

Dhrubajyoti Mukherjee、Ravi Kumar、Weizhou Sun、Adjoa Taylor (Amazon Web Services)

概要

Amazon Web Services (AWS) のお客様は、イノベーションを加速し、企業のビジネス価値を推進するための鍵がデータであることを理解しています。この膨大なデータを管理するには、データメッシュなどの分散アーキテクチャを採用します。データメッシュアーキテクチャはプロダクト思考を促進します。これは、お客様、目標、市場を考慮に入れる考え方です。データメッシュは、データへの高速で安全なアクセスを提供するフェデレーテッドガバナンスモデルを確立するのにも役立ちます。

Strategies for building a data mesh-based enterprise solution on AWS」では、Data Mesh Strategy Framework を使用して、組織のデータメッシュ戦略を策定および実装する方法について説明します。Data Mesh Strategy Framework を使用すると、チーム編成とそのやり取りを最適化して、データメッシュジャーニーを加速できます。

このドキュメントでは、Amazon DataZone でエンタープライズデータメッシュを構築する方法に関するガイダンスを提供します。Amazon DataZone は、、オンプレミス、およびサードパーティーのソースに保存されたデータをカタログ化、検出 AWS、共有、管理するためのデータ管理サービスです。このパターンには、 AWS Cloud Development Kit (AWS CDK) と を使用してデータメッシュベースのデータソリューションインフラストラクチャをデプロイするのに役立つコードアーティファクトが含まれています AWS CloudFormation。このパターンは、クラウドアーキテクトと DevOps エンジニアを対象としています。

このパターンの目的とソリューションの範囲については、「追加情報」セクションを参照してください。

前提条件と制限

前提条件

  • 少なくとも 2 つのアクティブな AWS アカウント: 1 つは中央ガバナンスアカウント用、もう 1 つはメンバーアカウント用

  • AWS 開発環境の中央ガバナンスアカウントの管理者認証情報

  • AWS Command Line Interface コマンドライン AWS のサービス から を管理するためにインストールされた (AWS CLI)

  • AWS CDK アプリケーションを管理するためにインストールされた Node.js と Node Package Manager (npm)

  • AWS CDK npm を使用して開発環境にグローバルにインストールされ、 AWS CDK アプリケーションを合成およびデプロイするツールキット

    npm install -g aws-cdk
  • 開発環境にインストールされた Python バージョン 3.12

  • 開発環境にインストールされるか、または npm コンパイラを使用してグローバルにインストールされた TypeScript

    npm install -g typescript
  • 開発環境にインストールされた Docker

  • ソリューションのソースコードを維持するための、Git などのバージョン管理システム (推奨)

  • Python と TypeScript をサポートする統合開発環境 (IDE) またはテキストエディタ (強く推奨)

制限事項

  • このソリューションは、Linux または macOS を実行しているマシンでのみテストされています。

  • 現在のバージョンでは、ソリューションは AWS IAM アイデンティティセンター デフォルトで Amazon DataZone と の統合をサポートしていません。ただし、この統合をサポートするように設定できます。

製品バージョン

  • Python バージョン 3.12

アーキテクチャ

次の図は、データメッシュリファレンスアーキテクチャを示しています。このアーキテクチャは Amazon DataZone に基づいており、Amazon Simple Storage Service (Amazon S3) と をデータソース AWS Glue Data Catalog として使用します。データメッシュの実装で Amazon DataZone AWS のサービス で使用する は、組織の要件によって異なる場合があります。

メンバーアカウントと中央ガバナンスアカウントの 5 ステップワークフロー。
  1. プロデューサーアカウントでは、raw データは現在の形式で消費に適しているか、 を使用して消費のために変換されます AWS Glue。データの技術メタデータは Amazon S3 に保存され、 AWS Glue データクローラーを使用して評価されます。データ品質は、AWS Glue Data Quality を使用して測定されます。データカタログのソースデータベースは、Amazon DataZone カタログにアセットとして登録されます。Amazon DataZone カタログは、Amazon DataZone データソースジョブを使用して中央ガバナンスアカウントでホストされます。

  2. 中央ガバナンスアカウントは、Amazon DataZone ドメインと Amazon DataZone データポータルをホストします。データプロデューサーとコンシューマー AWS アカウント の は、Amazon DataZone ドメインに関連付けられています。データプロデューサーとコンシューマーの Amazon DataZone プロジェクトは、対応する Amazon DataZone ドメインユニットで編成されます。

  3. データアセットのエンドユーザーは、 AWS Identity and Access Management (IAM) 認証情報またはシングルサインオン (IAM Identity Center を介した統合) を使用して Amazon DataZone データポータルにログインします。エンドユーザーは、Amazon DataZone データカタログ内のアセット情報 (データ品質情報、ビジネスメタデータ、技術メタデータなど) を検索、フィルタリング、表示します。

  4. 目的のデータアセットを見つけたエンドユーザーは、Amazon DataZone サブスクリプション機能を使用してアクセスをリクエストします。プロデューサーチームのデータ所有者は通知を受け取り、Amazon DataZone データポータルでサブスクリプションリクエストを評価します。データ所有者は、その有効性に基づいてサブスクリプションリクエストを承認または拒否します。

  5. サブスクリプションリクエストが付与および受理されると、以下のアクティビティのために、コンシューマーアカウントでアセットがアクセスされます。

    • Amazon SageMaker AI を使用した AI/ML モデル開発

    • Amazon Athena と Amazon Quick Suite を使用した分析とレポート

ツール

AWS のサービス

  • Amazon Athenaは、標準 SQL を使用して Amazon Simple Storage Service (Amazon S3) 内のデータを直接分析できるようにするインタラクティブなクエリサービスです。

  • AWS Cloud Development Kit (AWS CDK) は、コードで AWS クラウド インフラストラクチャを定義およびプロビジョニングするのに役立つソフトウェア開発フレームワークです。

  • AWS CloudFormation は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および 全体のライフサイクルを通じてリソースを管理するのに役立ちます AWS リージョン。

  • Amazon DataZone は、 全体、オンプレミス、およびサードパーティーソースに保存されているデータのカタログ化、検出 AWS、共有、管理を支援するデータ管理サービスです。

  • Amazon Quick Suite は、視覚化、分析、レポート生成に使用できるクラウドスケールのビジネスインテリジェンス (BI) サービスです。

  • Amazon SageMaker AI はマネージド型の機械学習 (ML) サービスで、ML モデルの構築とトレーニングを行い、それらを本番稼働環境に対応したホスティング環境にデプロイします。

  • Amazon Simple Storage Service (Amazon S3) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

  • Amazon Simple Queue Service (Amazon SQS)」は、安全で耐久性があり、配信ソフトウェアシステムとコンポーネントを統合および分離できる利用可能なホスト型キューを提供します。

  • Amazon Simple Storage Service (Amazon S3) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

コードリポジトリ

このソリューションは、GitHub の data-mesh-datazone-cdk-cloudformation リポジトリで入手できます。

エピック

タスク説明必要なスキル

リポジトリのクローン作成

リポジトリのクローンを作成するには、ローカル開発環境 (Linux または macOS) で次のコマンドを実行します。

git clone https://github.com/aws-samples/data-mesh-datazone-cdk-cloudformation
クラウドアーキテクト、DevOps エンジニア

環境の作成

Python 仮想環境を作成するには、次のコマンドを実行します。

python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
クラウドアーキテクト、DevOps エンジニア

アカウントをブートストラップする

を使用して中央ガバナンスアカウントをブートストラップするには AWS CDK、次のコマンドを実行します。

cdk bootstrap aws://<GOVERNANCE_ACCOUNT_ID>/<AWS_REGION>

にサインインし AWS マネジメントコンソール、中央ガバナンスアカウントコンソールを開き、 AWS CDK 実行ロールの Amazon リソースネーム (ARN) を取得します。

クラウドアーキテクト、DevOps エンジニア

DzDataMeshMemberStackSet.yaml ファイルのコンストラクト

DzDataMeshMemberStackSet.yaml ファイルをコンストラクトするには、リポジトリのルートディレクトリから次の bash スクリプトを開始します。

./lib/scripts/create_dz_data_mesh_member_stack_set.sh
クラウドアーキテクト、DevOps エンジニア

テンプレートの作成を確認

CloudFormation テンプレートファイルが のlib/cfn-templates/DzDataMeshMemberStackSet.yaml場所に作成されていることを確認します。

クラウドアーキテクト、DevOps エンジニア
タスク説明必要なスキル

設定ファイルの変更

config/Config.ts ファイルで、次のパラメータを変更します。

DZ_APPLICATION_NAME - Name of the application. DZ_STAGE_NAME - Name of the stage. DZ_DOMAIN_NAME - Name of the Amazon DataZone domain DZ_DOMAIN_DESCRIPTION - Description of the Amazon DataZone domain DZ_DOMAIN_TAG - Tag of the Amazon DataZone domain DZ_ADMIN_PROJECT_NAME - Name of the Amazon DataZone project for administrators DZ_ADMIN_PROJECT_DESCRIPTION - Description of the Amazon DataZone project for administrators CDK_EXEC_ROLE_ARN - ARN of the cdk execution role DZ_ADMIN_ROLE_ARN - ARN of the administrator role

残りのパラメータは空のままにします。

クラウドアーキテクト、DevOps エンジニア

Amazon DataZone 用語集の設定を更新

lib/utils/glossary_config.json ファイルで Amazon DataZone 用語集の設定を更新するには、次の設定例を使用します。

{ "GlossaryName": "PII Data", "GlossaryDescription": "If data source contains PII attributes", "GlossaryTerms": [{ "Name": "Yes", "ShortDescription": "Yes", "LongDescription": "Yes Glossary Term" }, { "Name": "No", "ShortDescription": "No", "LongDescription": "No Glossary Term" } ] }
クラウドアーキテクト、DevOps エンジニア

Amazon DataZone メタデータフォームの設定を更新

lib/utils/metadata_form_config.json file で Amazon DataZone メタデータフォームの設定を更新するには、次の設定例を使用します。

{ "FormName": "ScheduleDataRefresh", "FormDescription": "Form for data refresh schedule", "FormSmithyModel": "@amazon.datazone#displayname(defaultName: \"Data Refresh Schedule\")\nstructure ScheduleDataRefresh {\n @documentation(\"Schedule of Data Refresh\")\n @required\n @amazon.datazone#searchable\n @amazon.datazone#displayname(defaultName: \"Data Refresh Schedule\")\n data_refresh_schedule: String\n}" }
クラウドアーキテクト、DevOps エンジニア

AWS 認証情報をエクスポートします。

管理者権限を持つ IAM ロールの開発環境に AWS 認証情報をエクスポートするには、次の形式を使用します。

export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_SESSION_TOKEN=
クラウドアーキテクト、DevOps エンジニア

テンプレートの合成

CloudFormation テンプレートを合成するには、次のコマンドを実行します。

npx cdk synth
クラウドアーキテクト、DevOps エンジニア

ソリューションのデプロイ

ソリューションをデプロイするには、次のコマンドを実行します。

npx cdk deploy --all
クラウドアーキテクト、DevOps エンジニア
タスク説明必要なスキル

テンプレートのデプロイ

次の入力パラメータを使用して、メンバーアカウントの lib/cfn-templates/DzDataMeshCfnStackSetExecutionRole.yaml にある CloudFormation テンプレートをデプロイします。

  • GovernanceAccountID – ガバナンスアカウントのアカウント ID

  • DataZoneKMSKeyID ‒ Amazon DataZone メタデータを暗号化する AWS Key Management Service (AWS KMS) キーの ID

  • NotificationQueueName – ガバナンスアカウントの Amazon SQS 通知キューの名前

クラウドアーキテクト、DevOps エンジニア

ARN の更新

メンバーアカウントの CloudFormation StackSet 実行ロール ARNs のリストを更新するには、次のコードを使用します。

DZ_MEMBER_STACK_SET_EXEC_ROLE_LIST - List of Stack set execution role arns for the member accounts.
クラウドアーキテクト、DevOps エンジニア

合成とデプロイ

CloudFormation テンプレートを合成してソリューションをデプロイするには、次のコマンドを実行します。

npx cdk synth npx cdk deploy --all
クラウドアーキテクト、DevOps エンジニア

メンバーアカウントの関連付け

メンバーアカウントを中央ガバナンスアカウントに関連付けるには、次の手順を実行します。

  1. 中央ガバナンスアカウントのコンソールにログインし、https://console.aws.amazon.com/datazone/ で Amazon DataZone コンソールを開きます。

  2. 作成したドメインを選択します。

  3. [関連付けられているアカウント] タブまでスクロールし、[関連付けをリクエスト] を選択します。

  4. AWS アカウント ID を指定し、RAM ポリシーとして AWSRAMPermissionDataZonePortalReadWrite を選択します。

  5. [関連付けをリクエスト] を選択します。

  6. アカウントが正常にブートストラップされたという E メール通知を受信するまで待ちます。

クラウドアーキテクト、DevOps エンジニア

パラメータの更新

config/Config.ts の設定ファイルでメンバーアカウント固有のパラメータを更新するには、次の形式を使用します。

export const DZ_MEMBER_ACCOUNT_CONFIG: memberAccountConfig = { '123456789012' : { PROJECT_NAME: 'TEST-PROJECT-123456789012', PROJECT_DESCRIPTION: 'TEST-PROJECT-123456789012', PROJECT_EMAIL: 'user@xyz.com' } }
クラウドアーキテクト、DevOps エンジニア

テンプレートを合成してデプロイ

CloudFormation テンプレートを合成してソリューションをデプロイするには、次のコマンドを実行します。

npx cdk synth npx cdk deploy --all
クラウドアーキテクト、DevOps エンジニア

メンバーアカウントの追加

データソリューションで追加のメンバーアカウントを作成して設定するには、これまでの手順をメンバーアカウントごとに繰り返します。

このソリューションでは、データプロデューサーとコンシューマーは区別されません。

クラウドアーキテクト、DevOps エンジニア
タスク説明必要なスキル

メンバーアカウントの関連付けを解除

アカウントの関連付けを解除するには、次の手順を実行します。

  1. コンソールにサインインし、Amazon DataZone コンソールを開きます。

  2. [ドメインを表示] を選択します。

  3. 作成したドメインを選択します。

  4. [アカウントの関連付け] タブを選択します。

  5. 関連付けを解除するメンバーアカウントを選択します。

  6. [関連付けを解除] を選択し、「disassociate」と入力して確定します。

  7. すべてのメンバーアカウントに対してステップ 3~6 を繰り返します。

クラウドアーキテクト、DevOps エンジニア

スタックインスタンスの削除

CloudFormation スタックインスタンスを削除するには、次の手順を実行します。

  1. https://console.aws.amazon.com/cloudformation/ で CloudFormation コンソールを開きます。

  2. ナビゲーションペインから [StackSets] を選択します。

  3. StackSet-DataZone-DataMesh-Member という名前のスタックセットを選択し、[スタックインスタンス] タブを選択します。

  4. メンバーシップから削除するメンバーアカウントの AWS アカウント ID をコピーします。 

  5. [アクション] を選択し、[StackSet からスタックを削除] を選択します。デフォルトのオプションはそのまま使用します。

  6. [アカウント番号] フィールドに、アカウント ID を入力します。 

  7. [リージョンの指定] ドロップダウンリストで、 AWS リージョンを選択します。 

  8. [次へ] を選択し、[送信] を選択します。 

  9. [オペレーション] タブで、オペレーションが成功したことを確認します。スタックの削除には時間がかかる場合があります。

  10. すべてのメンバーアカウントに対してステップ 2~9 を繰り返します。

クラウドアーキテクト、DevOps エンジニア

すべてのリソースを破棄

リソースを破棄するには、ローカル開発環境 (Linux または macOS) で次の手順を実行します。

  1. リポジトリのルートディレクトリに移動します。 

  2. AWS CDK スタックの作成に使用した IAM ロールの AWS 認証情報をエクスポートします。 

  3. 以下のコマンドを実行して、クラウドリソースを破棄します。

    npx cdk destroy --all
クラウドアーキテクト、DevOps エンジニア

関連リソース

追加情報

目的

このパターンを実装すると、次のことが可能になります。

  • データの分散所有権 – 中央チームのデータ所有権を、組織のソースシステム、ビジネスユニット、ユースケースを表す各チームに移行します。

  • プロダクト思考 – 組織内のデータアセットを検討する際に、顧客、市場、その他の要因を考慮するプロダクトベースの考え方を導入します。

  • フェデレーテッドガバナンス – 組織のデータ製品全体のセキュリティガードレール、コントロール、コンプライアンスを改善します。

  • マルチアカウントおよびマルチプロジェクトのサポート – 組織のビジネスユニットまたはプロジェクト全体で、効率的で安全なデータ共有とコラボレーションをサポートします。

  • 一元的なモニタリングと通知 – Amazon CloudWatch を使用してデータメッシュのクラウドリソースをモニタリングし、新しいメンバーアカウントが関連付けられた場合は各ユーザーに通知します。

  • スケーラビリティと拡張性 – 組織の進化に合わせて、データメッシュに新しいユースケースを追加します。

ソリューションの範囲

このソリューションを使用すると、小規模から開始して、データメッシュジャーニーの進行に合わせてスケールできます。多くの場合、メンバーアカウントがデータソリューションを採用すると、組織、プロジェクト、またはビジネスユニットに固有のアカウント設定が含まれます。このソリューションは、以下の機能をサポートすることで、これらの多様な AWS アカウント 設定に対応します。

  • Amazon DataZone のデータソースとしての AWS Glue データカタログ

  • Amazon DataZone データドメインと関連するデータポータルの管理

  • データメッシュベースのデータソリューションへのメンバーアカウント追加を管理

  • Amazon DataZone プロジェクトと環境の管理

  • Amazon DataZone 用語集とメタデータフォームの管理

  • データメッシュベースのデータソリューションユーザーに対応する IAM ロールの管理

  • データメッシュベースのデータソリューションユーザーへの通知

  • プロビジョニングされたクラウドインフラストラクチャのモニタリング

    このソリューションでは、 AWS CDK と CloudFormation を使用してクラウドインフラストラクチャをデプロイします。を使用して以下 CloudFormation を実行します。

    • クラウドリソースをより低い抽象化レベルで定義してデプロイ。

    • からクラウドリソースをデプロイします AWS マネジメントコンソール。このアプローチを使用すると、開発環境なしでインフラストラクチャをデプロイできます。

    データメッシュソリューションは、 AWS CDK を使用して、より高い抽象化レベルでリソースを定義します。その結果、このソリューションでは、該当するクラウドリソースのデプロイに関連するツールを選択することにより、分離されたモジュール式によるスケーラブルなアプローチを実現できます。

次のステップ

Amazon DataZone でデータメッシュを構築するためのガイダンスについては、 AWS エキスパートにお問い合わせください。

このソリューションにはモジュール性があるため、データファブリックやデータレイクなど、さまざまなアーキテクチャでデータ管理ソリューションを構築できます。さらに、組織の要件に応じて、このソリューションを他の Amazon DataZone データソースにも拡張できます。