AWS DataSync を使用して、異なる AWS リージョンの Amazon EFS ファイルシステム間でデータを同期する - AWS 規範ガイダンス

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

AWS DataSync を使用して、異なる AWS リージョンの Amazon EFS ファイルシステム間でデータを同期する

Amazon Web Services、Sarat Chandra Pothula、Aditya Ambati

概要

このソリューションは、異なる AWS リージョンの Amazon Elastic File System (Amazon EFS) インスタンス間で、効率的かつ安全なデータ同期を実現する堅牢なフレームワークを提供します。このアプローチでは、スケーラブルで制御されたクロスリージョンデータレプリケーションを実現します。このソリューションでディザスタリカバリとデータ冗長化戦略を強化できます。

このパターンでは、AWS Cloud Development Kit (AWS CDK) を Infrastructure as Code (IaC) アプローチとして使用し、ソリューションリソースをデプロイします。AWS CDK アプリケーションは、重要な AWS DataSync、Amazon EFS、Amazon Virtual Private Cloud (Amazon VPC)、および Amazon Elastic Compute Cloud (Amazon EC2) リソースをデプロイします。この IaC は、AWS のベストプラクティスに沿った、反復可能でバージョン管理されたデプロイプロセスを提供します。

前提条件と制限

前提条件

制限事項

  • このソリューションは、データ転送速度、サイズ制限、リージョンの可用性など、DataSync と Amazon EFS の制限を継承します。詳細については、「AWS DataSync quotas」と「「Amazon EFS のクォータ」を参照してください。

  • このソリューションは Amazon EFS のみをサポートします。DataSync は、Amazon Simple Storage Service (Amazon S3) や Amazon FSx for Lustre などその他の AWS サービスをサポートします。ただし、このソリューションでは、データを他のサービスと同期するために変更が必要です。

アーキテクチャ

異なるリージョンの EFS ファイルシステムにデータをレプリケートするためのアーキテクチャ図

このソリューションでは、次の AWS CDK スタックをデプロイします。

  • Amazon VPC スタック – このスタックは、プライマリ AWS リージョンとセカンダリ AWS リージョンの両方で、サブネット、インターネットゲートウェイ、NAT ゲートウェイを含む仮想プライベートクラウド (VPC) リソースを設定します。

  • Amazon EFS スタック – このスタックは、Amazon EFS ファイルシステムをプライマリリージョンとセカンダリリージョンにデプロイし、それぞれの VPC に接続します。

  • Amazon EC2 スタック – このスタックは、プライマリリージョンとセカンダリリージョンで EC2 インスタンスを起動します。これらのインスタンスは、共有ストレージへのアクセスを許可する Amazon EFS ファイルシステムをマウントするように設定されています。

  • DataSync ロケーションスタック – このスタックは、DataSyncLocationConstruct というカスタムコンストラクトを使用して、プライマリリージョンとセカンダリリージョンで DataSync ロケーションリソースを作成します。これらのリソースは、データ同期のエンドポイントを定義します。

  • DataSync タスクスタック – このスタックは、DataSyncTaskConstruct というカスタムコンストラクトを使用して、プライマリリージョンで DataSync タスクを作成します。このタスクは、DataSync の送信元と送信先の場所を使用してプライマリリージョンとセカンダリリージョン間でデータを同期するように設定されています。

ツール

AWS サービス

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

  • AWS DataSync」は、ファイルまたはオブジェクトデータを AWS ストレージサービス間で移動したり、AWS ストレージサービス間で移動したりするのに役立つオンラインデータ転送および検出サービスです。

  • Amazon Elastic Compute Cloud (Amazon EC2)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。必要な数の仮想サーバーを起動することができ、迅速にスケールアップまたはスケールダウンができます。

  • Amazon Elastic File System (Amazon EFS) は、AWS クラウドでの共有ファイルシステムの作成と設定に役立ちます。

  • Amazon Virtual Private Cloud (Amazon VPC) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。この仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークに似ていますが、AWS のスケーラブルなインフラストラクチャを使用できるというメリットがあります。

コードリポジトリ

このパターンのコードは、GitHub の「Amazon EFS Cross-Region DataSync Project」リポジトリにあります。

ベストプラクティス

TypeScript で AWS CDK を使用し、IaC プロジェクトを作成する際のベストプラクティス」で説明されているベストプラクティスに従ってください。

エピック

タスク説明必要なスキル

プロジェクトリポジトリのクローンを作成します。

次のコマンドを入力して、「Amazon EFS Cross-Region DataSync Project」リポジトリのクローンを作成します。

git clone https://github.com/aws-samples/aws-efs-crossregion-datasync.git
AWS DevOps

npm の依存関係をインストールします。

次のコマンドを入力します。

npm ci
AWS DevOps

プライマリリージョンとセカンダリリージョンを選択します。

クローン作成されたリポジトリで、src/infa ディレクトリに移動します。Launcher.ts ファイルで、PRIMARY_AWS_REGIONSECONDARY_AWS_REGION の値を更新します。対応するリージョンコードを使用します。

const primaryRegion = { account: account, region: '<PRIMARY_AWS_REGION>' }; const secondaryRegion = { account: account, region: '<SECONDARY_AWS_REGION>' };
AWS DevOps

環境を開始する。

次のコマンドを入力して、使用する AWS アカウントと AWS リージョンをブートストラップします。

cdk bootstrap <aws_account>/<aws_region>

詳細については、AWS CDK ドキュメントの「ブートストラップ」を参照してください。

AWS DevOps

AWS CDK スタックを一覧表示します。

次のコマンドを入力して、アプリ内の AWS CDK スタックのリストを表示します。

cdk ls
AWS DevOps

AWS CDK スタックを合成します。

次のコマンドを入力して、AWS CDK アプリで定義された各スタックの AWS CloudFormation テンプレートを生成します。

cdk synth
AWS DevOps

AWS CDK アプリをデプロイします。

次のコマンドを入力して、変更を手動で承認することなく、すべてのスタックを AWS アカウントにデプロイします。

cdk deploy --all --require-approval never
AWS DevOps
タスク説明必要なスキル

プライマリリージョンの EC2 インスタンスにログインします。

  1. AWS Systems Manager の機能であるセッションマネージャーを使用して、プライマリリージョンの EC2 インスタンスにログインします。手順については、「Connect to your Linux instance with AWS Systems Manager Session Manager」を参照してください。

  2. ディレクトリを Amazon EFS マウントパスに変更します。

    cd /mnt/efs
AWS DevOps

一時ファイルを作成します。

次のコマンドを入力して、Amazon EFS マウントパスで一時ファイルを作成します。

sudo dd if=/dev/zero \ of=tmptst.dat \ bs=1G \ seek=5 \ count=0 ls -lrt tmptst.dat
AWS DevOps

DataSync タスクを開始します。

次のコマンドを入力して、プライマリリージョンからセカンダリリージョンに一時ファイルをレプリケートします。ここで、<ARN-task> は DataSync タスクの Amazon リソースネーム (ARN) です。

aws datasync start-task-execution \ --task-arn <ARN-task>

コマンドは、タスク実行の ARN を次の形式で返します。

arn:aws:datasync:<region>:<account-ID>:task/task-execution/<exec-ID>

AWS DevOps

データ転送のステータスを確認します。

次のコマンドを入力して、DataSync 実行タスクを記述します。ここで、<ARN-task-execution> はタスク実行の ARN です。

aws datasync describe-task-execution \ --task-execution-arn <ARN-task-execution>

DataSync タスクは、PrepareStatusTransferStatusVerifyStatus すべての値が SUCCESS になると完了します。

AWS DevOps

セカンダリリージョンの EC2 インスタンスにログインします。

  1. AWS Systems Manager の機能であるセッションマネージャーを使用して、セカンダリリージョンの EC2 インスタンスにログインします。手順については、「Connect to your Linux instance with AWS Systems Manager Session Manager」を参照してください。

  2. ディレクトリを Amazon EFS マウントパスに変更します。

    cd /mnt/efs
AWS DevOps

アプリケーションを検証します。

次のコマンドを入力して、一時ファイルが Amazon EFS ファイルシステムに存在することを確認します。

ls -lrt tmptst.dat
AWS DevOps

関連リソース

AWS ドキュメント

その他の AWS リソース