データはどこで転送できますかAWS DataSync?
- AWS アカウント内でサポートされている転送
- 異なる AWS アカウント間でサポートされている転送
などは公式ドキュメントを参照
EFS to EFSを異なるアカウント間で行いたい場合は、DataSyncエージェント
を使う必要がある
DataSync Agentとなる仮想サーバーが必要となります。
EC2上か、オンプレ上のVMware上など設置する必要がありますが、今回はAWS内(異なるアカウント間)でのデータ転送処理となるため、EC2上にDataSync Agentを作成します。
オンプレ上のデータを対象とする場合には、オンプレのVMware上にDataSync Agentとなる仮想サーバーを建てる必要があります。
この際、DataSyncエージェント
は、転送元(転送したいデータに近い方へ)置くべきとの事
そして、DataSyncのロケーションやタスクを作成するのは、転送先で作成・実行する
今回の各種配置は以下の通り
アカウントA(転送元)
A.1) EFS(source)
A.2) DataSyncエージェント(EC2インスタンス) ※CFで作成
アカウントB(転送先)
B.1) EFS(distribution)
B.2) DataSyncエージェント(アクティベーションしたエージェント---> A.2)
B.3) DataSync ロケーション(移行元: NFS--->B.2)
B.4) DataSync ロケーション(移行先:EFS--->B.1)
B.5) DataSync タスク
手順
- アカウントA(転送元)に、DataSyncエージェントをデプロイする
- アカウントB(転送先)に、DataSyncエージェントを登録し、アクティベーションする
- アカウントB(転送先)の DataSyncで転送元ロケーションを作成する
- アカウントB(転送先)の DataSyncで転送先ロケーションを作成する
- アカウントB(転送先)の DataSyncでタスクを作成する
- 5.で作成したタスクを開始する
やってみた
1. アカウントA(転送元)に、DataSyncエージェントをデプロイする
-
DataSyncエージェント
DataSync Agent用EC2と、サービスポイント用のパブリックエンドポイントとVPCエンドポイント作成用のCloudFormationテンプレートを置いておきます。
CloudFormationテンプレート -
利用するAMI
CloudFormationテンプレートには、デフォルトでAMIを設定していますが、AMIのIDが新しくなるので、使えるAMIのIDを確認するようにします。
執筆時点で使えるAMI
% aws ssm get-parameter --name /aws/service/datasync/ami --region ap-northeast-1
{
"Parameter": {
"Name": "/aws/service/datasync/ami",
"Type": "String",
"Value": "ami-0fd849d47ec1ece18",
"Version": 65,
"LastModifiedDate": "2023-06-26T23:48:39.985000+09:00",
"ARN": "arn:aws:ssm:ap-northeast-1::parameter/aws/service/datasync/ami",
"DataType": "text"
}
}
-
インスタンスタイプ
転送処理量により、以下の2つから選択します。
m5.2xlarge:2000万未満のファイルを転送する場合
m5.4xlarge:2000万超のファイルを転送する場合 -
サービスエンドポイント
DataSync AgentとなるEC2とAWSサービス間で利用されるエンドポイントとなります。
以下の種類があります。- パブリックエンドポイント
DataSyncエージェントからAWSへの通信が、パブリックインターネットを介して行われる - 連邦情報処理規格 (FIPS) エンドポイント
AWS GovCloudにて利用するエンドポイント - Virtual Private Cloud(VPC) エンドポイント
DataSyncエージェントからAWSへの通信が、DataSync用のVPCエンドポイントを介して行われる
Virtual Private Cloud(VPC) エンドポイントを利用する場合は、エージェントのテンプレートのパラメータでUseVPCEndpoint
をtrue
にする事で作成されます。
- パブリックエンドポイント
-
ネットワーク要件
AWS DataSyncネットワーク要件
今回はパブリックエンドポイント
を使います。
パブリックまたは FIPS エンドポイントのネットワーク要件
☆DataSyncエージェントEC2インスタンスに付与しているセキュリティグループが、EFSのTCP 2049へアクセス出来る様にして下さい。
CloudFormationテンプレートでは、DataSyncエージェントEC2インスタンスに付与するセキュリティグループがありますので、そちらがアクセスできる様にします。
2. アカウントB(転送先)に、DataSyncエージェントを登録し、アクティベーションする
エージェントのアドレスには、エージェントのパブリックDNS名を入力します。
アクティベーションは、1度しか行えません。80ポートが自動で閉じる様です。
その為、エージェントを停止させてしまうと、パブリックIPとパブリックDNS名が変わってしまいます。
可能であれば、Route53でドメイン名を作成したものでアクティベーションするか
Elastic IP アドレスを割り当てておきましょう
3. アカウントB(転送先)の DataSyncで転送元ロケーションを作成する
転送元のEFSは、エージェント経由でアクセスするため、ロケーションタイプにはネットワークファイルシステム(NFS)を選択します。
すると、エージェントの選択肢に先程作成したエージェントが選べるはずです。
NFSサーバには、移行元となるEFSのDNS名を入力します。
マウントパスは、移行要件に合わせて設定して下さい。
NSFバージョンは、自動で良いと思います。
4. アカウントB(転送先)の DataSyncで転送先ロケーションを作成する
転送先のEFSは、DataSyncと同じアカウントになるので、ロケーションタイプはAmazon EFS ファイルシステム
となります。
アカウント内にある、EFSファイルシステムが選択肢として出てくるので、移行先となるEFSを選択します。
マウントパスは、移行要件に合わせて設定して下さい。
5. アカウントB(転送先)の DataSyncでタスクを作成する
転送処理のためのタスクを設定します。
具体的設定作業方法については割愛します。公式手順のAWS DataSync転送内容の設定を確認ください。
6. 5.で作成したタスクを開始する
作成したタスクを開始させます。
タスクのステータスが「利用可能」と表示されたら、「開始」を選択します。
[既定値で開始] を選択します。
以上になります。
あとは、進捗状況を確認しつつ、実際に転送が行われているかをファイルシステムを確認しつつ見守りましょう。