はじめに
AWS DataSyncを使用してAzureやGoogle Cloudといった他のクラウドベンダーのストレージのデータをAWSのストレージサービスに転送する場合、基本的にはDataSyncエージェントを個別に導入して使用する必要があります。
ですが、今回2025年5月29日に、他のクラウドベンダーのストレージのデータをDataSyncを使用してAmazon S3に転送する場合に限っては、エージェントレスで直接データ転送を行うことが可能となった旨、AWS社より発表がありました。
まだ使用範囲が限定的な機能拡張ではありますが、エージェントレスで転送可能になったことは、従来よりも利便性の向上に繋がると思いましたので、稼働確認テストを実施してみました。
DataSyncを使用したAmazon S3へのデータ転送
従来のエージェントを使用した構成の場合
これまでは、他のクラウドベンダーの提供するストレージから、Amazon S3へデータ転送を行う場合、DataSyncエージェントを導入する必要がありました。導入においては、下記2つのスタイルのいずれかから、各々のネットワーク帯域などを考慮の上、選択します。
-
転送元のクラウドベンダー側に仮想サーバーを用意し、そこにエージェントをインストール
(以下は、AzureのBlob Storage(*1)からAmazon S3へのデータ転送を行う場合の構成イメージサンプルです。)
-
転送先のAWSリージョンにEC2を用意し、そこにエージェントをインストール
(以下は、AzureのBlob Storage(*1)からAmazon S3へのデータ転送を行う場合の構成イメージサンプルです。)
(*1):Blob(Binary large object)は、Azureのオブジェクトストレージ。詳細は下記リンク先を参照。
エージェントのインストール手順は下記ドキュメントに記載されていますが、どちらの方式を採るにしても結構面倒な手順となっています。EC2においても無料のtc2.microとかは使用できません。
エージェントを導入するということは、転送元のクラウドベンダー、もしくは、AWS側に仮想サーバーを稼働させる必要があるので、仮想サーバーのワークロードにかかるコストも必要となってきます。
エージェントレス化に伴うメリット
今回の機能拡張により、エージェントが不要になるということは、エージェントの利用にかかる仮想サーバーの稼働コストが不要になりますので、データ転送の利便性が向上するだけでなく、コストの観点でもメリットがあると考えます。
現時点ではあくまでもAmazon S3へのデータ転送に限った機能拡張であり、Amazon EFS等へのデータ転送については従来通りDataSyncエージェントの導入が必要になります。
検証構成
今回は、AzureのBlob Storage内のデータをAmazon S3にインターネット経由で転送するという、至ってシンプルな構成としています。転送するデータは単純なテキストファイル(sample.txt)としました。
AzureもAWSも共に東京リージョンを利用します。
検証環境作成
AzureのBlob StorageからAmazon S3へのAWS DataSyncを使用したデータ転送を行うための環境作成は、基本的に下記ドキュメントに記載の流れに従い、設定していきます。
転送元Azure側の設定
Azure Blob Storageのプロビジョニング
Azure環境を使用するので、Azureのアカウントを事前に作成しておく必要があります。アカウントを作成後は、以下の要領で作成します。
- Resoure Groupを作成
- 上記Resource Groupの中にBlog Storageをプロビジョニング
Blob Storageのプロビジョニング方法については、数年前に投稿した下記の記事も参考ください。
Azure Blob Storage作成後のイメージは下記のようになります。(下記はサンプル)
転送元のファイルは、Azure Blob Storageのホット層、もしくは、クール層にある場合にのみ、AWS DataSyncによるコピーが可能です。
ホット層、クール層とは、Amazon S3のストレージクラスでいうところの標準アクセス、標準ー低頻度アクセスに相当します。
SASトークンの設定
Azure Blob Storageからデータ転送を行うためには、Azure Blob Storageに対するアクセスが許可されていることが必要になります。アクセス許可は、SAS(Shared Access Signature)トークンというものを使用して行います。SASの詳細については、下記リンク先を参照ください。
AWS DataSyncを使用したデータ転送を行うためには、アカウントレベルもしくはコンテナーレベルでのアクセスに対するSASトークンの設定が必要になります。今回はアカウントレベルでのアクセスに対するSASトークンの設定を行いました。
上記イメージ図における赤枠箇所には必ずチェックを入れるようにしてください。ここにチェックが入っていないと、AWS DataSyncがAzure Blob Storageにアクセスできず、Amazon S3へのデータ転送が失敗します。特に「使用できるリソースの種類」の箇所はデフォルトでは何もチェックが入っていないので要注意です。(エージェント使用有無は関係ありません。)
SASトークンは、下記の図における開始日時と有効期限の日時の時間内に限り、使用可能です。その為、なるべく長い時間となるように設定しておかれることをお奨めします。
上記の図において、「SASと接続文字列を生成する」ボタンを押下して、SASトークンを表示しコピーしておきます。このSASトークンは、後続のAWS DataSync側の設定時に必要となります。
SASトークンの有効期限が切れると、AWS DataSyncの転送は失敗します。その際は開始日時と終了日時を修正し、新しいSASトークンを生成したうえで再実行ください。
コンテナーの作成
後続のAWS DataSyncの設定作業の中で、Azure Blob StorageコンテナーのURLの入力が求められます。ここでは、転送元となるコンテナーの設定を行います。作成したBlob Storage画面の左側のメニューから「データストレージ」→「コンテナー」と遷移すると、コンテナーの一覧が表示されます。デフォルトでは「$logs」というフォルダのみが作成されています。ここでは、新規に「mycontainer」という名前のコンテナーを作成します。
コンテナー作成後、コンテナーのURLを表示するためには、上記画面右端の「...」を右クリックするとメニューが表示されるので、「コンテナーのプロパティ」を選択します。すると、下記画面のように「コンテナーのプロパティ」画面が表示されるので、赤枠箇所の「クリップボードにコピー」を押下し、表示されているコンテナーのURLをコピーして、メモ帳に控えておきます。
今回、画面コピーを採取するのを失念してしまいましたが、転送用のsample.txtファイルは、この「mycontainer」という名前のコンテナーに事前にアップロードしておきます。
転送先AWS側の設定
AWS DataSyncのセットアップ
AWSマネジメントコンソールに入り、「AWS DataSync」のトップ画面に遷移します。下記図の右側にある「データ転送タスクを設定する」箇所において、「設定するデータ転送を選択します」のプルダウンメニューから「他のクラウドとAWSの間」(赤枠部分)を選択し、「今すぐ始める」ボタンを押下します。
転送元ロケーションの設定
最初に転送元の情報を選択、入力していきます。ロケーションタイプの所は、プルダウンメニューから「Microsoft Azure Blob Storage」を選択します。
コンテナURLの所は、先のAzure Blob Storageの設定作業の中でコピーしておいたURLを貼り付け、下にスクロールします。
従来は全てのデータ転送において、DataSyncエージェントが必要でしたが、Amazon S3へ転送する場合にはエージェントレスでも可能となったため、「エージェントを使用する - 新規」というチェックボックスが新たに追加されています。今回は、エージェントレスでの検証のため、このチェックボックスにチェックは入れません。
認証にはSASトークンを使用するので、赤枠箇所で囲んでいるものを選択します。SASトークンの入力箇所には、事前にコピーしておいたSASトークンを貼り付けます。
転送先ロケーションの設定
次は転送先のAmazon S3に対する設定を行います。リージョンと転送先のS3バケツURLを指定します。
IAMロールには、DataSyncがS3バケツへアクセス許可を付与するためのロールを指定します。これは自動で生成することが可能です。
DataSync構成の設定
今回の機能拡張により、新たに「拡張モード」という項目が追加となりました。これは、先の転送元ロケーションの設定において、「エージェントを使用する - 新規」チェックボックスにチェックを入れない場合に使用可能なモードになります。
※ 現状は、Amazon S3とのデータ転送を行う場合のみ使用可能。
以降の設定項目はサンプルです。
DataSyncの転送は、スケジュールすることも可能です。(日単位、時間単位、分単位など)
今回はスケジュールの設定していません。
通常は不要ですが、今回は検証目的のため、転送処理時のレポートとログを出力するようにしています。
設定内容確認
これまで設定してきた内容に問題がないか否かを確認し、一番下までスクロールし右下の「タスクを作成する」ボタンを押下します。
その後、下記画面のようにタスクのステータスが「利用可能」と表示されれば、タスクの作成は正常終了しています。
検証実施
ここから、実際にAzure Blob StorageからAmazon S3にAWS DataSyncを使用して、エージェントレスで転送が可能かを検証していきます。先の画面右上にある「開始」プルダウンメニューを押下し、「デフォルトから開始する」を選択します。実行後に表示される「実行の詳細を表示する」をクリックします。
表示直後は下記画面のように実行ステータスは「起動中」となっています。
なお、画面上にリフレッシュボタンはありませんが、この画面は動的に表示が更新されます。しばらく待つと、下記画面のように実行ステータスが「成功」と表示されましたので、無事にエージェントレスでのAmazon S3へのファイル転送は成功したことが確認できました。
転送時間やスループット等も画面上から確認可能です。次に、転送ログがS3バケツの中身を見ていきます。
CloudWatchログ
先の画面の右上の「CloudWatchでログを表示」ボタンを押下すると、下記のようなCloudWatchログが表示されます。
最初はステータスが「LAUNCHING」となっていますが、数秒後に「SUCCESS」と表示されているのが確認できます。
S3バケツ内の確認
下記画面の赤枠箇所に見られるように、今回Azure Blob Storageから転送したsample.txtファイルが表示されていることが確認できます。
転送処理レポート
転送処理レポートはS3バケツ内に「Summary-Reports」というフォルダが新規作成され、その中に今回の「DataSyncタスクID」フォルダ→「タスク履歴ID」.jsonといったネーミングのJSONファイルとして保管されます。
JSONファイルの中身については、下記セクションを開いて参照ください。
exec-0d4f5aef3a00814d5.summary-v2.json
{
"AccountId": "xxxxxxxxxxx",
"TaskExecutionId": "exec-0d4f5aef3a00814d5",
"TaskMode": "ENHANCED",
"SourceLocation": {
"LocationType": "Microsoft Azure Blob Storage",
"LocationId": "loc-05a367284535e3d2e",
"CreationTime": "2025-06-30T12:33:58.589Z"
},
"DestinationLocation": {
"LocationType": "Amazon S3",
"LocationId": "loc-068f23cb32adac7cb",
"CreationTime": "2025-06-30T12:33:59.186Z"
},
"StartTime": "2025-06-30T12:35:59.755Z",
"EndTime": "2025-06-30T12:36:06.137Z",
"TotalTime": 6382,
"OverallStatus": "SUCCESS",
"Result": {
"FilesTransferred": 1,
"FilesDeleted": 0,
"FilesVerified": 1,
"FilesSkipped": 0,
"BytesWritten": 8,
"BytesTransferred": 8,
"BytesCompressed": 8,
"EstimatedBytesToTransfer": 8,
"EstimatedFilesToDelete": 0,
"EstimatedFilesToTransfer": 1,
"FilesPrepared": 1,
"FilesListed": {
"AtSource": 1,
"AtDestinationForDelete": 0
},
"FilesFailed": {
"Prepare": 0,
"Transfer": 0,
"Verify": 0,
"Delete": 0
},
"PrepareDuration": 0,
"PrepareStatus": "SUCCESS",
"TransferDuration": 0,
"TransferStatus": "SUCCESS",
"VerifyDuration": 0,
"VerifyStatus": "SUCCESS"
},
"Options": {
"VerifyMode": "ONLY_FILES_TRANSFERRED",
"OverwriteMode": "ALWAYS",
"Atime": "BEST_EFFORT",
"Mtime": "PRESERVE",
"Uid": "NONE",
"Gid": "NONE",
"PreserveDeletedFiles": "PRESERVE",
"PreserveDevices": "NONE",
"PosixPermissions": "NONE",
"BytesPerSecond": -1,
"TaskQueueing": "ENABLED",
"LogLevel": "BASIC",
"TransferMode": "CHANGED",
"SecurityDescriptorCopyFlags": "NONE",
"ObjectTags": "PRESERVE"
},
"Filters": {
"Includes": [],
"Excludes": []
},
"TaskReportConfig": {
"Destination": {
"S3": {
"Subdirectory": "logs/",
"S3BucketArn": "arn:aws:s3:::duelist2021-backet",
"BucketAccessRoleArn": "arn:aws:iam::xxxxxxxxxxx:role/service-role/AWSDataSyncTaskReportS3BucketAccess-duelist2021-backet-ap--75e04"
}
},
"OutputType": "SUMMARY_ONLY"
}
}
想定ユースケース
現時点では、Amazon S3へのデータ転送を行うケースに限定されますが、下記のようなユースケースが考えられます。
-
古いAWSアカウントを削除し、新しいAWSアカウントを作成するケース
- AWSアカウントを削除すると、該当アカウントに紐づくAWSリソースは使用不可となるため、それまでにAmazon S3内のデータを新しいアカウントのS3に移行が必要になるといったパターンです。
-
従来使用してきた他ベンダーのクラウド利用を廃止し、今後はAWSを使用していくことに決めたケース
- 今回実施したケースのように、AzureからAWSに乗り換えるといったようなパターンです。
※ 私はどちらのクラウドも好きなので、今後も両方使用していきますが。。
- 今回実施したケースのように、AzureからAWSに乗り換えるといったようなパターンです。
さいごに
今回は2025年5月29日にAWS社より発表された、他のクラウドベンダーのストレージのデータをAWS DataSyncを使用してAmazon S3へ転送する場合には、エージェントレスで転送を可能にする機能拡張に関して、Azure Blob StorageからAmazon S3へデータ転送を行うといったシナリオで稼働検証を行い、その有用性を確認しました。
まだ、現時点ではAmazon S3へのデータ転送を行うケースに範囲が限定された機能拡張ではありますが、今後はAmazon EFSやAmazon Fx for Windows等へのデータ転送の際にもエージェントレスでデータ転送ができるようになる未来が来ることを祈ってやみません。