goodbyegangsterのブログ

備忘録的な

AWS DataSyncを触ってみたメモ

AWS DataSync は、AWSで用意されているデータ転送サービスです。AWS上のストレージ系サービスやオンプレ上のストレージを対象に、データ転送処理を実施してくれます。

対象とできるストレージは、現在のところ下記となっています。

今回は、S3上データをFSx for Windowsまで、データ転送処理を実施してみます。

構成図

イメージはこんな感じです。

f:id:goodbyegangster:20200330204326p:plain

DataSyncを利用するには、DataSync Agentとなる仮想サーバーが必要となります。EC2上か、オンプレ上のVMware上に設置する必要があります。今回はAWS内でのデータ転送処理となるため、EC2上にDataSync Agentを作成しています。オンプレ上のデータを対象とする場合には、オンプレのVMware上にDataSync Agentとなる仮想サーバーを建てる必要があります。

Important

We don't recommend using a DataSync agent that is deployed as an EC2 instance to read data from an on-premises source location. This approach doesn't deliver maximum throughput.

Deploy Your Agent as an EC2 Instance to Read Files from In-Cloud

オンプレのデータを対象とする場合、EC2上の転送Agentでも通信できれば恐らく機能するのでしょうが、非推奨となっています。

DataSyncの設定

Getting Startの公式ページを参考、必要となる設定内容を確認します。

AWS DataSync の使用開始

DataSync Agentの作成

DataSync AgentとなるEC2を作成します。以下が考慮点です。

利用するAMI

以下のコマンドより確認できます。

$ aws ssm get-parameter --name /aws/service/datasync/ami --region ap-northeast-1
{
  "Parameter": {
    "Name": "/aws/service/datasync/ami",
    "Type": "String",
    "Value": "ami-0ddfeff6e10d8c311",
    "Version": 8,
    "LastModifiedDate": "2020-02-20T04:11:57.102000+09:00",
    "ARN": "arn:aws:ssm:ap-northeast-1::parameter/aws/service/datasync/ami"
  }
}

AWS DataSync エージェントのデプロイ

利用するインスタンスタイプ

転送処理量により、以下の2つから選択します。

  • m5.2xlarge
    • 2000万未満のファイルを転送する場合
  • m5.4xlarge
    • 2000万超のファイルを転送する場合

Amazon EC2 インスタンスの要件

付与するセキュリティグループ

必要となるネットワーク要件を、以下より確認できます。

f:id:goodbyegangster:20200330204526p:plain

ネットワークの要件

サービスエンドポイントの作成

サービスエンドポイント とは、DataSync AgentとなるEC2とAWSサービス間で利用されるエンドポイントとなります。以下の種類があります。

  • パブリックエンドポイント
    • DataSyncエージェントからAWSへの通信が、パブリックインターネットを介して行われる
  • 連邦情報処理規格 (FIPS) エンドポイント
    • AWS GovCloudにて利用するエンドポイント
  • Virtual Private Cloud(VPC) エンドポイント
    • DataSyncエージェントからAWSへの通信が、DataSync用のVPCエンドポイントを介して行われる

今回は Virtual Private Cloud(VPC) エンドポイント を利用します。

そのため、DataSync向けVPCエンドポイントを作成します。DataSync用VPCエンドポイントにアタッチするセキュリティグループを作成した後、 com.amazonaws.region.datasync のインターフェース型VPCエンドポイントを作成します。

Choose a VPC Endpoint

用意するセキュリティグループでは、以下のInbound Ruleとする必要があります。

Source Protocol
DataSync Anget 22/tcp
DataSync Anget 443/tcp
DataSync Anget 1024-1064/tcp

Configuring DataSync to Use Private IP Addresses for Data Transfer


DataSync Agent用EC2と、サービスポイント用VPCエンドポイント作成用のCloudFormationテンプレートを置いておきます。

cloudformation/datasync-agent at master · goodbyegangster/cloudformation · GitHub

DataSync Agentのアクティベート

上記で作成したDataSync Agentをアクティベーションします。

DataSync Agentに80/tcpでアクセスできる環境 から、 AWSコンソールにログインしてDataSync管理ページを開きます。アクティベーション中にDataSync AgentのWEBページにアクセスする事となり、アクティベーション処理をする端末は DataSync Agentに80/tcpでアクセスできる環境 という条件があります。今回の手順では、同一サブネット内に存在するActiveDirectoryのドメインコントローラーDesktop上のブラウザを利用しました。

DataSync管理ページにて、作成したVPCエンドポイントの情報と、DataSync AgentのPrivate IPアドレスを入力します。

f:id:goodbyegangster:20200330204541p:plain

正常に通信できている場合、アクティベーションキーが取得されるため、Agentを登録できるようなります。以下のページが表示されるので、 Create agent をクリックします。

f:id:goodbyegangster:20200330204553p:plain

なお、DataSync Agentの80/tcpポートは、アクティベーション処理が終了すると、閉じられるとのことです。

データ転送の実行

DataSyncを利用する環境が整ったので、実際にデータ転送処理を実施します。

ロケーションの作成

転送処理を設定するには、データ送信元とデータ送信先となるロケーションの定義を実施する必要があります。

まず、データ送信元となるS3のロケーション定義を作成します。ロケーション定義作成の前に、DataSyncのサービスが該当S3バケットにアクセスするためのIAM Roleを作成します。以下はそのIAM Role作成用のCloudFormationテンプレートです。

https://github.com/goodbyegangster/cloudformation/tree/master/datasync-location-s3-iam-role

以下がS3ロケーション定義作成用のAWS CLIコマンドです。

$ aws datasync create-location-s3 \
--s3-bucket-arn 'arn:aws:s3:::xxxxx' \
--s3-storage-class 'STANDARD' \
--s3-config 'BucketAccessRoleArn=arn:aws:iam::123456789012:role/xxxxx' \
--subdirectory /xxxxx

aws datasync create-location-s3


続いて、送信先となるFSx for Windowsのロケーション定義を作成します。実際に作成するのは、FSx for Windows用のロケーション定義ではなく、SMBアクセス用の定義となります。ここで定義した内容にて、DataSync AgentがSMBアクセスしてくれます。

$ aws datasync create-location-smb \
--agent-arns 'arn:aws:datasync:ap-northeast-1:123456789012:agent/agent-xxxxx' \
--server-hostname 'xx.xx.xx.xx' \
--subdirectory '/xxxxx' \
--mount-options 'Version=AUTOMATIC' \
--domain 'example.com' --user 'FSxAdmin' --password 'Passw0rd'

aws datasync create-location-smb

パラメーターに関するメモ。

server-hostname

FSx for Windowsで提供されるENIのIPアドレスを登録します。FSx for Windowsで提供されるドメイン名(xxxxx.example.comみたいな)も設定可能ですが、その場合、DataSync Agentからそのドメイン名が名前解決できる必要があります。普通は名前解決できないですから、ENIのIPアドレスを設定するのが良いかと。

利用するユーザー

利用するユーザーは、FSx for Windowsの管理者権限を所持している必要があります。ActiveDirectoryのDomainAdminグループ、またはFSx for Windows作成時に指定した管理者グループ内のユーザーである必要があります。

タスクの作成

では、実際に転送処理のためのタスクを設定します。が、画面を見れば凡そ分かる内容なので、具体的設定作業方法についてはばっさり割愛します。公式手順のこちらを確認ください。

タスク設定の構成

現時点で利用できる機能で気になった点のみピックアップしておきます。

タスクの開始

作成したタスクを手動で開始したい場合、以下のマニュアルより。AWSコンソール上で Start をクリックするだけですが。

タスクの開始

モニタリング

タスクの実行、成功、失敗、または転送されたデータ量等に関しては、Cloudwatch EventやMetricsが出力されるので、それを利用できます。

タスクのモニタリング