

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

# AWS DataSync を使用して、異なる AWS リージョンの Amazon EFS ファイルシステム間でデータを同期する
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync"></a>

*Amazon Web Services、Sarat Chandra Pothula、Aditya Ambati*

## 概要
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-summary"></a>

このソリューションは、異なる 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 のベストプラクティスに沿った、反復可能でバージョン管理されたデプロイプロセスを提供します。

## 前提条件と制限
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ AWS コマンドラインインターフェイス (AWS CLI) バージョン 2.9.11 以降が[インストール済み](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)および[設定済み](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ AWS CDK バージョン 2.114.1 以降が[インストール済み](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install)および[ブートストラップ済み](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap)
+ NodeJS バージョン 20.8.0 以降が[インストール済み](https://nodejs.org/en/download)

**制限事項**
+ このソリューションは、データ転送速度、サイズ制限、リージョンの可用性など、DataSync と Amazon EFS の制限を継承します。詳細については、「[AWS DataSync quotas](https://docs.aws.amazon.com/datasync/latest/userguide/datasync-limits.html)」と「[「Amazon EFS のクォータ](https://docs.aws.amazon.com/efs/latest/ug/limits.html)」を参照してください。
+ このソリューションは Amazon EFS のみをサポートします。DataSync は、Amazon Simple Storage Service (Amazon S3) や Amazon FSx for Lustre など[その他の AWS サービス](https://docs.aws.amazon.com/datasync/latest/userguide/working-with-locations.html)をサポートします。ただし、このソリューションでは、データを他のサービスと同期するために変更が必要です。

## アーキテクチャ
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-architecture"></a>

![\[異なるリージョンの EFS ファイルシステムにデータをレプリケートするためのアーキテクチャ図\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/e28ba6c2-ab8b-4812-932e-f038106d5496/images/18b35ae9-a22e-43e7-b7a3-30e40321c44e.png)


このソリューションでは、次の 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 の送信元と送信先の場所を使用してプライマリリージョンとセカンダリリージョン間でデータを同期するように設定されています。

## ツール
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-tools"></a>

**AWS サービス**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) は、AWS クラウドインフラストラクチャをコードで定義してプロビジョニングするのに役立つソフトウェア開発フレームワークです。
+ 「[AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html)」は、ファイルまたはオブジェクトデータを AWS ストレージサービス間で移動したり、AWS ストレージサービス間で移動したりするのに役立つオンラインデータ転送および検出サービスです。
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。必要な数の仮想サーバーを起動することができ、迅速にスケールアップまたはスケールダウンができます。
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) は、AWS クラウドでの共有ファイルシステムの作成と設定に役立ちます。
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。この仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークに似ていますが、AWS のスケーラブルなインフラストラクチャを使用できるというメリットがあります。

**コードリポジトリ**

このパターンのコードは、GitHub の「[Amazon EFS Cross-Region DataSync Project](https://github.com/aws-samples/aws-efs-crossregion-datasync/tree/main)」リポジトリにあります。

## ベストプラクティス
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-best-practices"></a>

「[TypeScript で AWS CDK を使用し、IaC プロジェクトを作成する際のベストプラクティス](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/introduction.html)」で説明されているベストプラクティスに従ってください。

## エピック
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-epics"></a>

### AWS CDK アプリをデプロイする
<a name="deploy-the-aws-cdk-app"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| プロジェクトリポジトリのクローンを作成します。 | 次のコマンドを入力して、「[Amazon EFS Cross-Region DataSync Project](https://github.com/aws-samples/aws-efs-crossregion-datasync/tree/main)」リポジトリのクローンを作成します。<pre>git clone https://github.com/aws-samples/aws-efs-crossregion-datasync.git</pre> | AWS DevOps | 
| npm の依存関係をインストールします。 | 次のコマンドを入力します。<pre>npm ci</pre> | AWS DevOps | 
| プライマリリージョンとセカンダリリージョンを選択します。 | クローン作成されたリポジトリで、`src/infa` ディレクトリに移動します。`Launcher.ts` ファイルで、`PRIMARY_AWS_REGION` と `SECONDARY_AWS_REGION` の値を更新します。対応する[リージョンコード](https://docs.aws.amazon.com/general/latest/gr/datasync.html#datasync-region)を使用します。<pre>const primaryRegion = { account: account, region: '<PRIMARY_AWS_REGION>' };<br />const secondaryRegion = { account: account, region: '<SECONDARY_AWS_REGION>' };</pre> | AWS DevOps | 
|  環境を開始する。 | 次のコマンドを入力して、使用する AWS アカウントと AWS リージョンをブートストラップします。<pre>cdk bootstrap <aws_account>/<aws_region></pre>詳細については、AWS CDK ドキュメントの「[ブートストラップ](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)」を参照してください。 | AWS DevOps | 
| AWS CDK スタックを一覧表示します。 | 次のコマンドを入力して、アプリ内の AWS CDK スタックのリストを表示します。<pre>cdk ls</pre> | AWS DevOps | 
| AWS CDK スタックを合成します。 | 次のコマンドを入力して、AWS CDK アプリで定義された各スタックの AWS CloudFormation テンプレートを生成します。<pre>cdk synth</pre> | AWS DevOps | 
| AWS CDK アプリをデプロイします。 | 次のコマンドを入力して、変更を手動で承認することなく、すべてのスタックを AWS アカウントにデプロイします。<pre>cdk deploy --all --require-approval never</pre> | AWS DevOps | 

### デプロイを検証する
<a name="validate-the-deployment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| プライマリリージョンの EC2 インスタンスにログインします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.html) | AWS DevOps | 
| 一時ファイルを作成します。 | 次のコマンドを入力して、Amazon EFS マウントパスで一時ファイルを作成します。<pre>sudo dd if=/dev/zero \<br />of=tmptst.dat \<br />bs=1G \<br />seek=5 \<br />count=0<br /><br />ls -lrt tmptst.dat</pre> | AWS DevOps | 
| DataSync タスクを開始します。 | 次のコマンドを入力して、プライマリリージョンからセカンダリリージョンに一時ファイルをレプリケートします。ここで、`<ARN-task>` は DataSync タスクの Amazon リソースネーム (ARN) です。<pre>aws datasync start-task-execution \<br />    --task-arn <ARN-task></pre>コマンドは、タスク実行の ARN を次の形式で返します。`arn:aws:datasync:<region>:<account-ID>:task/task-execution/<exec-ID>` | AWS DevOps | 
| データ転送のステータスを確認します。 | 次のコマンドを入力して、DataSync 実行タスクを記述します。ここで、`<ARN-task-execution>` はタスク実行の ARN です。<pre>aws datasync describe-task-execution \<br />    --task-execution-arn <ARN-task-execution></pre>DataSync タスクは、`PrepareStatus`、`TransferStatus`、`VerifyStatus` すべての値が `SUCCESS` になると完了します。 | AWS DevOps | 
| セカンダリリージョンの EC2 インスタンスにログインします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.html) | AWS DevOps | 
| アプリケーションを検証します。 | 次のコマンドを入力して、一時ファイルが Amazon EFS ファイルシステムに存在することを確認します。<pre>ls -lrt<br />tmptst.dat</pre> | AWS DevOps  | 

## 関連リソース
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-resources"></a>

**AWS ドキュメント**
+ [AWS CDK API リファレンス](https://docs.aws.amazon.com/cdk/api/v2/python/modules.html)
+ [Amazon EFS による AWS DataSync 転送の設定](https://docs.aws.amazon.com/datasync/latest/userguide/create-efs-location.html)
+ [AWS DataSync 転送に関する問題のトラブルシューティング](https://docs.aws.amazon.com/datasync/latest/userguide/troubleshooting-datasync-locations-tasks.html)

**その他の AWS リソース**
+ [AWS DataSync のよくある質問](https://aws.amazon.com/datasync/faqs/)