AWS DataSyncでの転送でS3 Storage Classがサポートされたので試してみます

2019.09.27

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

こんにちは、森です。

AWS DataSync でS3にデータを転送する時にストレージクラスを選択できるようになりましたので、実際に使用してみようと思います。

AWS DataSync News – S3 Storage Class Support and Much More

やってみる

既存のNFSサーバーからS3に転送するユースケースで行います。 ※ AWS外の環境からAWSへの転送を試したかったのですが、環境が用意できなかったので AWS上のNFSデータ -> S3 を試します。

Amazon EC2 で AWS DataSync をデプロイする場合、AWS DataSync が機能するためにはインスタンスサイズが少なくとも 2xlarge である必要があります。

次のいずれかのインスタンスタイプを使用することをお勧めします。

m5.2xlarge — 2,000 万個未満のファイルを転送するタスク。

m5.4xlarge — 2,000 万個を超えるファイルを転送するタスク

前提条件

  • DataSyncエージェントのデプロイが完了済みとします。

    エージェントのデプロイ方法は、

    AWS DataSync エージェントのデプロイを参照してください。

    Agents一覧ページにデプロイ済みのエージェントが表示されます。

  • NFSサーバー

    NFSサーバーには以下のファイルを格納しています。

    # ll -h /mnt/nfs
    total 172K
    -rw-rw-rw- 1 root root 4.0K Sep 27 05:49 hoge.txt
    -rw-r--r-- 1 root root 150K Jun 28 09:31 kuchikomi754_TP_V.jpg
    drwx------ 2 root root  16K Sep 26 02:36 lost+found

1. データ転送タスクの作成

tasksページにて、create task ボタンをクリックします。

step1 Configure source location

データの転送元を設定します。

  • Location type: NFSを選択
  • Agents: エージェントを選択します
  • NFS server: NFSサーバーのIPかDNSを記入します
  • Mount path: NFS サーバーからエクスポートしたパスを入力するか、またはネットワークの他の NFS クライアントによってマウントできるサブディレクトリを入力します

step2 Configure source location

データを転送する場所を設定します。

S3 storage class NEW! と書かれていますね。これが今回追加された機能です。

  • S3 標準 (高頻度アクセスの汎用ストレージ用)
  • S3 Intelligent-Tiering (未知のアクセスパターンのデータ、またはアクセスパターンが変化するデータ用)
  • S3 標準 – 低頻度アクセス (S3 標準 - IA)
  • S3 1 ゾーン - 低頻度アクセス (S3 1 ゾーン - IA) (長期間使用するが低頻度アクセスのデータ)
  • Amazon S3 Glacier (S3 Glacier)
  • Amazon S3 Glacier Deep Archive (S3 Glacier Deep Archive) (長期アーカイブおよびデジタル保存)

以上の全てのストレージクラスがサポートされています。

今回は One Zone-IA を選択してみます。

step3: Configure settings

タスクの設定を構成します。

今回はタスクの名前だけ設定し、あとはデフォルトでいきます。

詳しくは タスク設定の構成 をご参照ください

step4: Review

設定を確認したらタスクを作成します

2. タスクを実行する

作成したタスクのステータスが Available になったら開始できる状態です。

Startボタンをクリックして開始します。

Historyページから現在実行中のタスクの確認ができます。

成功すると

Execution status が Success と表示されます。

3. 送信先を確認する

Taskが成功したので、送信先であるS3を確認してみます。

$ aws s3api list-objects-v2 --bucket mori.ryosuke.jp
{
    "Contents": [
        {
            "Key": "backup/",
            "LastModified": "2019-09-27T05:54:28.000Z",
            "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
            "Size": 0,
            "StorageClass": "STANDARD"
        },
        {
            "Key": "backup/hoge.txt",
            "LastModified": "2019-09-27T05:54:28.000Z",
            "ETag": "\"7a2bd33d4a7d23602a0ab84e224cf3a7\"",
            "Size": 4067,
            "StorageClass": "STANDARD"
        },
        {
            "Key": "backup/kuchikomi754_TP_V.jpg",
            "LastModified": "2019-09-27T05:54:28.000Z",
            "ETag": "\"819a97ec2354affe53d7aa5f2dafde16\"",
            "Size": 152800,
            "StorageClass": "ONEZONE_IA"
        },
        {
            "Key": "backup/lost+found/",
            "LastModified": "2019-09-27T05:54:28.000Z",
            "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
            "Size": 0,
            "StorageClass": "STANDARD"
        }
    ]
}

上記から分かるように、nfsに入っていたファイルが同期されています。

ストレージクラスをOne Zone-IAにしてタスクを作成したのに、タスク実行後のファイルがSTANDARDになっているオブジェクトがあるのは、128KB未満のオブジェクトだからです。

128 KB未満のオブジェクトは、One Zone-IAストレージクラスのオブジェクトあたりの最小容量料金よりも小さくなります。これらのオブジェクトは標準に保存されます。

まとめ

転送先をS3にするときにストレージクラスを選択してファイル転送しました。

AWS DataSyncを使う別拠点からのファイル転送で、明らかに用途が決まっている場合(バックアップファイルでほとんどアクセスされない、冗長性が不要など)に使うと便利な機能ではないでしょうか。AWS DataSyncは大量のデータをAWSに移動したり、AWSから移動したりするのに役立ちますので、そういう機会があるときはぜひ検討してみてください。

参考