[アップデート] AWS DataSyncがAmaozn FSx for NetApp ONTAPをサポートしました

FSx for ONTAPと様々なリソース間のデータ連携が簡単にできるようになりました
2022.06.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

簡単にFSx for ONTAPファイルシステムからS3バケットにデータ移行したいな

こんにちは、のんピ(@non____97)です。

皆さんは簡単にFSx for ONTAPファイルシステムからS3バケットにデータ移行したいなと思ったことはありますか? 私はあります。

FSx for ONTAPファイルシステムからS3バケットにファイルをコピーするパターンは以下の2つがあると考えます。

  1. Lambda関数でFSx for ONTAPファイルシステムのファイルを取得してS3バケットにアップロード Lambda関数でFSx for ONTAPファイルシステムのファイルを取得してS3バケットにアップロード

  2. DataSync AgentがインストールされたEC2インスタンスを使ってS3バケットにアップロード DataSync AgentがインストールされたEC2インスタンスを使ってS3バケットにアップロード

いずれのパターンの場合、以下のような懸念点があります。

  • 1つ目のパターンの懸念点
    • Lambda関数のローカルディスクが10GBなので、扱えるファイルサイズが10GBまで
    • Lambda関数の最大実行時間が15分であるので、時間内にS3へのアップロードが完了しない場合がある
  • 2つ目のパターンの懸念点
    • DataSync AgentをインストールしたEC2インスタンスを管理する必要がある
    • 2xlarge以上のEC2インスタンスを起動させる必要があるため、コストがかかる

これは困った

頭を悩ませていると、AWS DataSyncがAmaozn FSx for NetApp ONTAPをサポートしたとアナウンスがありました。

DataSyncによるストレージサービス間のデータ転送にはDataSync Agentが不要なので、わざわざLambda関数やEC2インスタンスを用意する必要がなくなりました。

構成図は以下のようになります。

DataSyncで直接S3バケットにアップロード

Lambda関数やEC2インスタンスを用意する必要がなくなったので、かなりシンプルになりました。

これはありがたい

早速試してみたので、紹介します。

いきなりまとめ

  • DataSyncのロケーションにFSx for ONTAPファイルシステムを選択できるようになった
  • DataSync AgentをインストールしたEC2インスタンスを用意しなくても、FSx for ONTAPファイルシステムとAWSのストレージ間でファイルコピーが可能
  • FSx for ONTAPのスナップショットはコピーされない
  • FSx for ONTAPファイルシステムからS3バケットにファイルをコピーする際はインターネットへのルートやVPCエンドポイントは不要

検証の環境

検証を行う環境の構成は以下の通りです。

構成図

Private SubnetのFSx for ONTAPファイルシステムとS3バケット間でファイルのコピーができることを確認します。

なお、FSx for ONTAPファイルシステムのサブネットのルートにはNAT GatewayやInternet Gatewayへのルートはありません。また、DataSyncのVPCエンドポイントも存在していません。

FSx for ONTAPファイルシステムからS3バケットへのファイルコピー

テスト用ファイルの作成

それでは、DataSyncを使ったFSx for ONTAPファイルシステムからS3バケットへのファイルコピーを行います。

まず、テスト用ファイルをFSx for ONTAPファイルシステムに作成します。

# FSx for ONTAPのSMB共有をマウントしていないことを確認
PS C:\Windows\system32> Get-PSDrive

Name           Used (GB)     Free (GB) Provider      Root                                                  CurrentLocation
----           ---------     --------- --------      ----                                                  ---------------
Alias                                  Alias
C                  15.56         14.44 FileSystem    C:\                                                  Windows\system32
Cert                                   Certificate   \
D                   0.03          8.99 FileSystem    D:\
E                   0.03          8.99 FileSystem    E:\
Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
Variable                               Variable
WSMan                                  WSMan

# FSx for ONTAPのSMB共有をマウント
PS C:\Windows\system32> net use Z: \\SINGLE-AZ-SVM.fsx-dev.classmethod.jp\smb_encryption
\\SINGLE-AZ-SVM.fsx-dev.classmethod.jp\smb_encryption のパスワードが無効です。

'SINGLE-AZ-SVM.fsx-dev.classmethod.jp' のユーザー名を入力してください: fsx-dev.classmethod.jp\FSxAdmin
SINGLE-AZ-SVM.fsx-dev.classmethod.jp のパスワードを入力してください:
コマンドは正常に終了しました。

# FSx for ONTAPのSMB共有をマウントされたことを確認
PS C:\Windows\system32> Get-PSDrive

Name           Used (GB)     Free (GB) Provider      Root                                                  CurrentLocation
----           ---------     --------- --------      ----                                                  ---------------
Alias                                  Alias
C                  15.56         14.44 FileSystem    C:\                                                  Windows\system32
Cert                                   Certificate   \
D                   0.03          8.99 FileSystem    D:\
E                   0.03          8.99 FileSystem    E:\
Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
Variable                               Variable
WSMan                                  WSMan
Z                   0.00          0.95 FileSystem    \\SINGLE-AZ-SVM.fsx-dev.classmet...

# FSx for ONTAPのSMB共有をマウントしたドライブを確認
PS C:\Windows\system32> ls z:


    ディレクトリ: Z:\


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/05/28     12:39                aws-backup-test

PS C:\Windows\system32> ls Z:\aws-backup-test\aws-backup-test.txt


    ディレクトリ: Z:\aws-backup-test


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/05/25      0:23             36 aws-backup-test.txt

# FSx for ONTAPのスナップショットが作成されていることを確認
PS C:\Windows\system32> ls Z:\.snapshot


    ディレクトリ: Z:\.snapshot

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/05/28     12:39                backup-0b1a1f475e7f88a0b
d-----        2022/05/25      0:21                daily.2022-05-27_0010
d-----        2022/05/25      0:21                daily.2022-05-28_0010
d-----        2022/05/28     12:39                every_10_min.2022-06-28_2140
d-----        2022/05/28     12:39                every_10_min.2022-06-28_2150
d-----        2022/05/28     12:39                every_10_min.2022-06-28_2200
d-----        2022/05/28     12:39                every_10_min.2022-06-28_2210
d-----        2022/05/28     12:39                every_10_min.2022-06-28_2220
d-----        2022/05/28     12:39                every_10_min.2022-06-28_2230
d-----        2022/05/25      0:21                hourly.2022-05-28_0305
d-----        2022/05/25      0:21                hourly.2022-05-28_0405
d-----        2022/05/25      0:21                hourly.2022-05-28_0505
d-----        2022/05/28      5:30                hourly.2022-05-28_0605
d-----        2022/05/28      5:30                hourly.2022-05-28_0705
d-----        2022/05/28      7:59                hourly.2022-05-28_0805
d-----        2022/05/28      7:59                manual_snapshot_2022-05-28_0910
d-----        2022/05/20      5:52                weekly.2022-05-22_0015

PS C:\Windows\system32> ls Z:\.snapshot\every_10_min.2022-06-28_2230


    ディレクトリ: Z:\.snapshot\every_10_min.2022-06-28_2230


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/05/28     12:39                aws-backup-test

# Z:\datasync-test にテストファイルを10個作成
PS C:\Windows\system32> cd z:
PS Z:\> mkdir datasync-test


    ディレクトリ: Z:\


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/06/28     22:49                datasync-test

PS Z:\> cd .\datasync-test\
PS Z:\datasync-test> (0..10) | foreach{
  $format = "{0:000}" -f $_
  $fileName = "datasync-test_$format.txt"
  $value = @"
    datasync-test_$format
"@
  New-Item -path . -ItemType "file" -Name $fileName -Value "$value"
}

    ディレクトリ: Z:\datasync-test


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/06/28     22:50             21 datasync-test_000.txt
-a----        2022/06/28     22:50             21 datasync-test_001.txt
-a----        2022/06/28     22:50             21 datasync-test_002.txt
-a----        2022/06/28     22:50             21 datasync-test_003.txt
-a----        2022/06/28     22:50             21 datasync-test_004.txt
-a----        2022/06/28     22:50             21 datasync-test_005.txt
-a----        2022/06/28     22:50             21 datasync-test_006.txt
-a----        2022/06/28     22:50             21 datasync-test_007.txt
-a----        2022/06/28     22:50             21 datasync-test_008.txt
-a----        2022/06/28     22:50             21 datasync-test_009.txt
-a----        2022/06/28     22:50             21 datasync-test_010.txt

S3バケットの作成

次に送信元のS3バケットを作成します。

リージョンはFSx for ONTAPファイルシステムと同じ東京リージョンに作成します。その他サーバーサイド暗号化以外はデフォルトの設定です。

S3バケットの作成

S3バケットの作成2

作成したS3バケット内にオブジェクトが存在しないことを確認します。

作成したS3バケット内にオブジェクトが存在しないことを確認

DataSyncタスクの作成

下準備ができたのでDataSyncのタスクを作成します。

DataSyncのコンソールからタスク-タスクを作成するをクリックします。

DataSyncタスクの作成

送信元ロケーションの設定をします。

ロケーションを事前に作成していなかったので、新しくロケーションを作成します。

昨日まではロケーションタイプにAmazon FSxを選択しても、FSx for ONTAPファイルシステムは表示されなかったのですが、選択できるようになっています。

送信元のロケーションを設定する

SVMとマウントポイントには、先ほど作成したテスト用ファイルがあるSMB共有のSVMとジャンクションポイントを指定します。

セキュリティグループはFSx for ONTAPファイルシステムのセキュリティグループで送信元として許可しているセキュリティグループを選択しました。

プロコトルは今回はSMBにしました。SMBにした場合、認証用のユーザー設定を入力する必要があります。FSx for ONTAPファイルシステムにSMBでアクセスする際に使用するドメインユーザーの認証情報を入力します。

次に送信先ロケーションの設定をします。

ロケーションタイプをS3にして、先ほど作成したS3バケットを指定します。IAMロールはAutogenerateをクリックして作成されるIAMロールを指定しました。

送信先のロケーションを設定する

作成されたIAMロールのポリシーと信頼されたエンティティは以下の通りです。

  • 許可ポリシー
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": [
                    "s3:GetBucketLocation",
                    "s3:ListBucket",
                    "s3:ListBucketMultipartUploads"
                ],
                "Effect": "Allow",
                "Resource": "arn:aws:s3:::datasync-test-fsxn-xxxx"
            },
            {
                "Action": [
                    "s3:AbortMultipartUpload",
                    "s3:DeleteObject",
                    "s3:GetObject",
                    "s3:ListMultipartUploadParts",
                    "s3:PutObjectTagging",
                    "s3:GetObjectTagging",
                    "s3:PutObject"
                ],
                "Effect": "Allow",
                "Resource": "arn:aws:s3:::datasync-test-fsxn-xxxx/*"
            }
        ]
    }

  • 信頼されたエンティティ

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "datasync.amazonaws.com"
                },
                "Action": "sts:AssumeRole",
                "Condition": {
                    "StringEquals": {
                        "aws:SourceAccount": "<AWSアカウントID>"
                    },
                    "ArnLike": {
                        "aws:SourceArn": "arn:aws:datasync:ap-northeast-1:<AWSアカウントID>:*"
                    }
                }
            }
        ]
    }

次にタスクの各種設定を行います。

タスク名はfsxn-to-s3にしました。なんとなく除外パターンも試してみたかったので、*._010.txtを除外パターンとして追加しました。

DataSyncのタスク構成

タスクの実行は手動で行いたいので、定期的なスケジュールは設定しません。また、ファイルがコピーされたことをログからも確認したいので、転送されたすべてのオブジェクトとファイルをログに記録するで設定して、CloudWatch Logsにログを出力するようにします。

スケジュールとタスクのログ記録

最後に設定内容を確認します。問題なければタスクを作成するをクリックします。

レビュー

DataSyncタスクの実行

タスクの作成が完了したら、DataSyncタスクを実行します。

作成したDataSyncタスクを選択して、スタート-デフォルトから開始するをクリックします。

DataSyncタスクの実行

数分ほど待つと実行ステータスが成功になりました。

ダスクの実行ステータス確認

CloudWatch Logsに出力されたログを確認してみます。

2022-06-29T08:10:43.595+09:00	[INFO] Request to start task-017f03c7f86b7902d.
2022-06-29T08:18:23.861+09:00	[INFO] Execution exec-0f82dc5ede24ddfc0 started.
2022-06-29T08:18:30.433+09:00	[NOTICE] Created directory /datasync-test
2022-06-29T08:18:30.661+09:00	[NOTICE] Created directory /aws-backup-test
2022-06-29T08:18:31.288+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_008.txt, 21 bytes
2022-06-29T08:18:31.288+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_010.txt, 21 bytes
2022-06-29T08:18:31.288+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_009.txt, 21 bytes
2022-06-29T08:18:31.316+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_001.txt, 21 bytes
2022-06-29T08:18:31.316+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_007.txt, 21 bytes
2022-06-29T08:18:31.316+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_005.txt, 21 bytes
2022-06-29T08:18:31.316+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_006.txt, 21 bytes
2022-06-29T08:18:31.316+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_003.txt, 21 bytes
2022-06-29T08:18:31.316+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_000.txt, 21 bytes
2022-06-29T08:18:31.316+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_004.txt, 21 bytes
2022-06-29T08:18:31.316+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_002.txt, 21 bytes
2022-06-29T08:18:31.316+09:00	[NOTICE] Transferred file /aws-backup-test/aws-backup-test.txt, 36 bytes
2022-06-29T08:18:31.594+09:00	[NOTICE] Transferred directory metadata /
2022-06-29T08:18:31.594+09:00	[NOTICE] Transferred directory metadata /datasync-test
2022-06-29T08:18:31.596+09:00	[NOTICE] Transferred directory metadata /aws-backup-test
2022-06-29T08:18:31.889+09:00	[NOTICE] Verified directory /
2022-06-29T08:18:31.889+09:00	[NOTICE] Verified file /aws-backup-test/aws-backup-test.txt, 36 bytes
2022-06-29T08:18:31.889+09:00	[NOTICE] Verified file /datasync-test/datasync-test_000.txt, 21 bytes
2022-06-29T08:18:31.889+09:00	[NOTICE] Verified file /datasync-test/datasync-test_001.txt, 21 bytes
2022-06-29T08:18:31.889+09:00	[NOTICE] Verified file /datasync-test/datasync-test_002.txt, 21 bytes
2022-06-29T08:18:31.889+09:00	[NOTICE] Verified file /datasync-test/datasync-test_003.txt, 21 bytes
2022-06-29T08:18:31.889+09:00	[NOTICE] Verified file /datasync-test/datasync-test_004.txt, 21 bytes
2022-06-29T08:18:31.889+09:00	[NOTICE] Verified file /datasync-test/datasync-test_005.txt, 21 bytes
2022-06-29T08:18:31.889+09:00	[NOTICE] Verified file /datasync-test/datasync-test_006.txt, 21 bytes
2022-06-29T08:18:31.889+09:00	[NOTICE] Verified file /datasync-test/datasync-test_007.txt, 21 bytes
2022-06-29T08:18:31.977+09:00	[NOTICE] Verified file /datasync-test/datasync-test_008.txt, 21 bytes
2022-06-29T08:18:31.977+09:00	[NOTICE] Verified file /datasync-test/datasync-test_009.txt, 21 bytes
2022-06-29T08:18:31.977+09:00	[NOTICE] Verified file /datasync-test/datasync-test_010.txt, 21 bytes
2022-06-29T08:18:32.366+09:00	[INFO] Execution exec-0f82dc5ede24ddfc0 finished with status Success.

ファイルのコピーと検証が行われたことが分かります。

なお、*._010.txtを除外パターンに追加したにも関わらずdatasync-test_010.txtもコピーされていますが、これは私が除外パターンを間違えてしまったためです。*_010.txtとすべきところを*._010.txtと[*]の後ろに[.]を余計につけていました。

S3バケットからもファイルがコピーされたことを確認します。

S3バケットのオブジェクト一覧を確認すると、確かにSMB共有配下のフォルダ、ファイルがコピーされていそうです。ただ、スナップショットファイルはコピーされていないようですね。

S3バケットからもファイルがコピーされたことを確認

S3バケットからもファイルがコピーされたことを確認2

S3バケットからもファイルがコピーされたことを確認3

除外条件を設定してタスクを実行

除外条件を間違えてしまったので、修正して再実行します。

まず、新しくテスト用ファイルを作成します。

PS Z:\datasync-test> (11..20) | foreach{
  $format = "{0:000}" -f $_
  $fileName = "datasync-test_$format.txt"
  $value = @"
    datasync-test_$format
"@
  New-Item -path . -ItemType "file" -Name $fileName -Value "$value"
}

    ディレクトリ: Z:\datasync-test


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/06/28     23:24             21 datasync-test_011.txt
-a----        2022/06/28     23:24             21 datasync-test_012.txt
-a----        2022/06/28     23:24             21 datasync-test_013.txt
-a----        2022/06/28     23:24             21 datasync-test_014.txt
-a----        2022/06/28     23:24             21 datasync-test_015.txt
-a----        2022/06/28     23:24             21 datasync-test_016.txt
-a----        2022/06/28     23:24             21 datasync-test_017.txt
-a----        2022/06/28     23:24             21 datasync-test_018.txt
-a----        2022/06/28     23:24             21 datasync-test_019.txt
-a----        2022/06/28     23:24             21 datasync-test_020.txt

タスクの再実行をします。

除外設定を変更して実行したいので、スタート-オプションを上書きして開始するをクリックします。

オプションを上書きして開始する

除外パターンとして*_015.txt*_018.txtを設定し、スタートをクリックします。

除外条件を設定してタスクを実行

数分ほど待つと実行ステータスが成功になりました。

除外条件を設定したタスクの実行結果の確認

CloudWatch Logsに出力されたログを確認してみます。

2022-06-29T08:26:22.556+09:00	[INFO] Request to start task-017f03c7f86b7902d.
2022-06-29T08:28:26.286+09:00	[INFO] Execution exec-0b0db415022c86172 started.
2022-06-29T08:28:26.299+09:00	[INFO] Started logging in destination hostId: host-009a1c657a25840c1 for Execution exec-0b0db415022c86172
2022-06-29T08:28:26.469+09:00	[INFO] Started logging in destination hostId: host-055bc5ba7d10f1160 for Execution exec-0b0db415022c86172
2022-06-29T08:28:29.470+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_019.txt, 21 bytes
2022-06-29T08:28:29.478+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_020.txt, 21 bytes
2022-06-29T08:28:29.479+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_014.txt, 21 bytes
2022-06-29T08:28:29.479+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_011.txt, 21 bytes
2022-06-29T08:28:29.479+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_012.txt, 21 bytes
2022-06-29T08:28:29.479+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_017.txt, 21 bytes
2022-06-29T08:28:29.479+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_016.txt, 21 bytes
2022-06-29T08:28:29.479+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_013.txt, 21 bytes
2022-06-29T08:28:29.761+09:00	[NOTICE] Transferred directory metadata /datasync-test
2022-06-29T08:28:30.035+09:00	[NOTICE] Verified directory /
2022-06-29T08:28:30.035+09:00	[NOTICE] Verified file /datasync-test/datasync-test_019.txt, 21 bytes
2022-06-29T08:28:30.035+09:00	[NOTICE] Verified file /datasync-test/datasync-test_011.txt, 21 bytes
2022-06-29T08:28:30.035+09:00	[NOTICE] Verified file /datasync-test/datasync-test_012.txt, 21 bytes
2022-06-29T08:28:30.035+09:00	[NOTICE] Verified file /datasync-test/datasync-test_013.txt, 21 bytes
2022-06-29T08:28:30.035+09:00	[NOTICE] Verified file /datasync-test/datasync-test_014.txt, 21 bytes
2022-06-29T08:28:30.035+09:00	[NOTICE] Verified file /datasync-test/datasync-test_016.txt, 21 bytes
2022-06-29T08:28:30.035+09:00	[NOTICE] Verified file /datasync-test/datasync-test_017.txt, 21 bytes
2022-06-29T08:28:30.035+09:00	[NOTICE] Verified file /datasync-test/datasync-test_020.txt, 21 bytes
2022-06-29T08:28:30.499+09:00	[INFO] Execution exec-0b0db415022c86172 finished with status Success.

datasync-test_015.txtdatasync-test_018.txt以外のファイルのコピーと検証が行われたことが分かります。

また、変更されたデータのみを転送するようにしているので、datasync-test_000.txtなど先の検証でコピーしたファイルはコピーされていないようです。

S3にアクセスするルートがない状態でタスクを実行

FSX for ONTAPファイルシステムがあるVPCには、S3のGateway型VPCエンドポイントがあります。このVPCエンドポイントを削除した状態でも、S3にファイルをコピーできるか確認します。

S3のGateway型VPCエンドポイントを選択して、ルートテーブルタブ-ルートテーブルを管理をクリックします。

ルートテーブルを管理

全てのルートテーブルとの関連付けを解除したいので、全てのチェックを外してルートテーブルの変更をクリックします。

ルートテーブルの変更

S3のGateway型VPCエンドポイントが関連付いているルートテーブルがなくなったことを確認します。

S3のGateway型VPCエンドポイントが関連付いているルートテーブルがなくなったことを確認

元々、FSx for ONTAPファイルシステムのサブネットclassmethod-dev-private-subnet01にはNAT GatewayやInternet Gatewayへのルートがなく、DataSyncのVPCエンドポイントも存在しないので、S3に抜けるルートは完全になくなりました。

FSx for ONTAPファイルシステム

FSx for ONTAPファイルシステムがあるサブネットのルート

次に、テスト用ファイルを更新します。

変更されたデータのみを転送する設定が正しく動作しているか確認するために、コピー済みファイルのdatasync-test_000.txtを更新します。

# フォルダ内のファイルを確認
PS z:\datasync-test> ls


    ディレクトリ: z:\datasync-test


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/06/28     22:50             21 datasync-test_000.txt
-a----        2022/06/28     22:50             21 datasync-test_001.txt
-a----        2022/06/28     22:50             21 datasync-test_002.txt
-a----        2022/06/28     22:50             21 datasync-test_003.txt
-a----        2022/06/28     22:50             21 datasync-test_004.txt
-a----        2022/06/28     22:50             21 datasync-test_005.txt
-a----        2022/06/28     22:50             21 datasync-test_006.txt
-a----        2022/06/28     22:50             21 datasync-test_007.txt
-a----        2022/06/28     22:50             21 datasync-test_008.txt
-a----        2022/06/28     22:50             21 datasync-test_009.txt
-a----        2022/06/28     22:50             21 datasync-test_010.txt
-a----        2022/06/28     23:24             21 datasync-test_011.txt
-a----        2022/06/28     23:24             21 datasync-test_012.txt
-a----        2022/06/28     23:24             21 datasync-test_013.txt
-a----        2022/06/28     23:24             21 datasync-test_014.txt
-a----        2022/06/28     23:24             21 datasync-test_015.txt
-a----        2022/06/28     23:24             21 datasync-test_016.txt
-a----        2022/06/28     23:24             21 datasync-test_017.txt
-a----        2022/06/28     23:24             21 datasync-test_018.txt
-a----        2022/06/28     23:24             21 datasync-test_019.txt
-a----        2022/06/28     23:24             21 datasync-test_020.txt


# datasync-test_000.txt に書き込まれている内容を確認
PS z:\datasync-test> cat datasync-test_000.txt
    datasync-test_000

# datasync-test_000.txt を上書き
PS z:\datasync-test> echo "testtest" > datasync-test_000.txt

# datasync-test_000.txt を上書きされたことを確認
PS z:\datasync-test> cat datasync-test_000.txt
testtest

この状態でタスクを再実行します。

タスクが完了した後、CloudWatch Logsに出力されたログを確認してみます。

2022-06-29T08:44:55.571+09:00	[INFO] Request to start task-017f03c7f86b7902d.
2022-06-29T08:47:25.935+09:00	[INFO] Started logging in destination hostId: host-0b8a0e85a55c40c2b for Execution exec-0e8860567880dc469
2022-06-29T08:47:27.247+09:00	[INFO] Execution exec-0e8860567880dc469 started.
2022-06-29T08:47:31.206+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_000.txt, 22 bytes
2022-06-29T08:47:31.206+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_018.txt, 21 bytes
2022-06-29T08:47:31.617+09:00	[NOTICE] Transferred file /datasync-test/datasync-test_015.txt, 21 bytes
2022-06-29T08:47:32.133+09:00	[NOTICE] Verified file /datasync-test/datasync-test_015.txt, 21 bytes
2022-06-29T08:47:32.134+09:00	[NOTICE] Verified directory /
2022-06-29T08:47:32.134+09:00	[NOTICE] Verified file /datasync-test/datasync-test_000.txt, 22 bytes
2022-06-29T08:47:32.134+09:00	[NOTICE] Verified file /datasync-test/datasync-test_018.txt, 21 bytes
2022-06-29T08:47:32.657+09:00	[INFO] Execution exec-0e8860567880dc469 finished with status Success

更新したファイルdatasync-test_000.txtと、先ほどの検証で除外していたdatasync-test_015.txtdatasync-test_018.txtのコピーと検証が行われたことが分かります。

S3へのアクセス経路を持たないFSx for ONTAPファイルシステムからS3バケットにファイルをコピーできたところから、コピーにはAWSのバックボーンネットワークを使っていそうですね。

S3バケットからもファイルがコピーされたことを確認します。

更新したファイルdatasync-test_000.txtと、先ほどの検証で除外していたdatasync-test_015.txtdatasync-test_018.txtのみ最終更新日時が変わっていることが分かります。

S3にアクセスするルートがない状態でタスクを実行

S3バケットからFSx for ONTAPファイルシステムへのファイルコピー

最後に、S3バケットからFSx for ONTAPファイルシステムへのファイルコピーができることも確認します。

まず、FSx for ONTAPファイルシステムのSMB共有内の一部ファイルを削除します。

# Z:\datasync-test 配下の datasync-test_* のファイルを削除
PS z:\datasync-test> rm .\datasync-test_*

# ファイルが削除されたことを確認
PS z:\datasync-test> ls

送信元と送信先を入れ替えたタスクを新規に作成します。

既にロケーションは存在しているので、既存のロケーションを選択していきます。

送信元ロケーションで既存のS3バケットのロケーションを選択

送信先ロケーションで既存のFSx for ONTAPファイルシステムのロケーションを選択

タスクの設定はデフォルトのままにします。

S3バケットからFSx for ONTAPファイルシステムへのファイルコピーのタスク設定

設定内容を確認して、タスクを作成するをクリックします。

S3バケットからFSx for ONTAPファイルシステムへのファイルコピーのタスクのレビュー

タスクが作成されてことを確認して、スタート-デフォルトから開始するをクリックします。

タスクが完了した後、CloudWatch Logsに出力されたログを確認してみます。

2022-06-29T08:54:25.324+09:00	[INFO] Request to start task-014e6490435b2f0ab.
2022-06-29T08:56:15.177+09:00	[INFO] Started logging in destination hostId: host-0343357f5ff491d32 for Execution exec-0c529112e40f6b4a7
2022-06-29T08:56:15.210+09:00	[INFO] Started logging in destination hostId: host-0ae4b70b0ee8074c5 for Execution exec-0c529112e40f6b4a7
2022-06-29T08:56:16.709+09:00	[INFO] Execution exec-0c529112e40f6b4a7 started.
2022-06-29T08:56:20.354+09:00	[INFO] Execution exec-0c529112e40f6b4a7 finished with status Success.

コピーが完了したようですね。

FSx for ONTAPファイルシステムのSMB共有を確認します。

# S3バケット上のファイルがコピーされたことを確認
PS z:\datasync-test> ls


    ディレクトリ: z:\datasync-test


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/06/28     23:43             22 datasync-test_000.txt
-a----        2022/06/28     22:50             21 datasync-test_001.txt
-a----        2022/06/28     22:50             21 datasync-test_002.txt
-a----        2022/06/28     22:50             21 datasync-test_003.txt
-a----        2022/06/28     22:50             21 datasync-test_004.txt
-a----        2022/06/28     22:50             21 datasync-test_005.txt
-a----        2022/06/28     22:50             21 datasync-test_006.txt
-a----        2022/06/28     22:50             21 datasync-test_007.txt
-a----        2022/06/28     22:50             21 datasync-test_008.txt
-a----        2022/06/28     22:50             21 datasync-test_009.txt
-a----        2022/06/28     22:50             21 datasync-test_010.txt
-a----        2022/06/28     23:24             21 datasync-test_011.txt
-a----        2022/06/28     23:24             21 datasync-test_012.txt
-a----        2022/06/28     23:24             21 datasync-test_013.txt
-a----        2022/06/28     23:24             21 datasync-test_014.txt
-a----        2022/06/28     23:24             21 datasync-test_015.txt
-a----        2022/06/28     23:24             21 datasync-test_016.txt
-a----        2022/06/28     23:24             21 datasync-test_017.txt
-a----        2022/06/28     23:24             21 datasync-test_018.txt
-a----        2022/06/28     23:24             21 datasync-test_019.txt
-a----        2022/06/28     23:24             21 datasync-test_020.txt

# 削除していないファイルについては上書きコピーされなかったことを確認
PS z:\datasync-test> ls ..\aws-backup-test\aws-backup-test.txt


    ディレクトリ: z:\aws-backup-test


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/05/25      0:23             36 aws-backup-test.txt

削除したファイルについてはS3バケット上のファイルがコピーされ、削除していないファイルについては上書きコピーされなかったことを確認できました。

FSx for ONTAPと様々なリソース間のデータ連携が簡単にできるようになりました

AWS DataSyncがAmaozn FSx for NetApp ONTAPをサポートしたアップデートを紹介しました。

今回のアップデートでFSx for ONTAPと様々なリソース間のデータ連携が簡単にできるようになったと思います。今回はS3バケットを送信元/送信先にしましたが、FSx for Windows File Serverからの移行なんかにも使えそうですね。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!