AWS DataSyncを使ってAmazon S3のログを移行させてみた。#1準備編

VMware Aria Operations (SaaS)のサービス終了に伴い、仮想マシンやオンプレミスに置いているログをどう移行しようか、悩まれている方も多いと思います。一つの手段として、AWS DataSyncを使ってみるのはいかがでしょうか。

この記事では、AWSのデータ移行サービスであるAWS DataSyncのサービス紹介と実際に使用して、データ移行させるためにどのようにすればよいか、などを記載していければと思います。

AWS DataSyncとは?

まず初めに、AWS DataSyncのサービスについて紹介していきます。

AWS DataSyncとは、データ移行を簡素化し、ストレージサービスとの間でファイルまたはオブジェクトのデータを迅速、簡単かつ安全に転送できるようにする、オンラインデータ移動および検出サービスです。

AWS DataSyncでは、Network File System共有、Google Cloud Storage、Azure Filesなど、多くのサービスでデータ転送が可能です。よって、AWS以外のクラウドサービス以外を使っている方も使用することが可能です。

AWS DataSyncには、他にも次のような特徴があります。

  • ストレージプロトコルと疎結合化されたAWS設計の転送プロトコルを使用してデータ転送を高速化
  • TLSを利用してすべてのデータを暗号化し、安全にデータ転送を行うことが可能
  • データ転送だけでなく検出も行うことが可能
    • DataSyncタスクレポートにて、転送、スキップ、検証、削除されたすべてのファイルの概要、詳細レポートを含む、JSON形式の出力ファイルを提供
    • タスク実行ごとのデータ転送オペレーションを簡単に検証、監査

オンプレミスからのデータ移行にDataSyncが用いられる理由

従来のオンプレミスからのデータ移行は、高額なコストがかかるのに加え、時間もかかることが課題でした。これらの課題を解決するためのシームレスな移行計画が必要になります。

例えば、データのセキュリティーや完全性を確保できることは、非常に重要です。そのため以下のような条件が必須項目になってきます。

  • 高いセキュリティ
  • データの完全性
  • コストの削減
  • 迅速なデータ移行

これらの条件を満たすような柔軟な構成が取れるAWS DataSyncは、オンプレミスからのデータ移行に使用されることが多いと考えられます。

なお、DataSyncでは、移行を行う際のデータ量に基づいて、課金が発生します。詳しくは以下のリンクをご覧ください。

料金 - AWS DataSync | AWS

準備

まず、今回の検証のイメージ図を書いてみました。

イメージ図

行うことは単純で、AWS DataSyncを使用して別アカウントにあるAmazon S3(以下、S3)にデータを移動させる、というものになります。

移行元、移行先のアカウントへのS3バケットの作成

今回は検証として、それぞれのアカウントに空のS3バケットを作成します。

名前などは任意で設定します。バケット設定も特に不要で、今回はデフォルトで作成しています。

移行先のポリシー作成

今回は、DataSyncで使用するポリシーと、DataSyncのロケーションを設定するときに必要なポリシーを新たに作ります。

DataSyncで使用するポリシーの作成

下記のポリシーでは、移行先のアカウント内で作成したS3バケットに対するマルチパートアップロードや操作権限を与えています。このポリシーを適用することにより、S3にコピーするために必要な権限が与えられます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::移行先S3バケットの名前"
        },
        {
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListMultipartUploadParts",
                "s3:GetObjectTagging",
                "s3:PutObjectTagging",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::移行先S3バケットの名前/*"
        }
    ]
}
DataSyncのロケーション設定で使うポリシーの作成

転送処理設定を行うには、移行元と移行先となるロケーションを作成する必要があります。ロケーションとは、データを転送するソースとターゲットのストレージのことを指します。

そのため、ソース元となるS3バケットのデータ取得や移行先にデータをコピーし格納するなどの権限が必要です。下記のポリシーで必要な権限を与えています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::移行元S3バケット"
        },
        {
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListMultipartUploadParts",
                "s3:GetObjectTagging",
                "s3:PutObjectTagging",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::移行元のS3バケット/*"
        }
    ]
}

IAMロールの作成

2つのポリシーを作成したあと、IAMロールの作成を行っていきます。

「信頼されたエンティティ」の部分では「信頼されたポリシー」を選びます。また、カスタム信頼ポリシーには以下を入れます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": {
                "Service": "datasync.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

その後、先ほど作成した2つのカスタムポリシーをIAMロールにアタッチし、ロールを作成します。

以下のように許可が追加されているロールが作成できたら、ユーザーに紐づけて準備完了です。

DataSyncの動作

ここで少しDataSyncの動作についてみていきましょう。

AWS DataSyncでデータ転送をするにはロケーションが必要です。ロケーションを作成した後、タスクとよばれるものを作成し、転送を行います。

簡単なイメージ図は下記の通りです。

DataSyncの動作

タスクを作成するには、移行先・移行元の2つのアカウントのロケーションやS3の情報が必要になってきます。

2つのアカウントでロケーションを作成し、かつ移行先でタスクを作成するという条件を満たした上でデータ転送が可能になります。

まとめると以下のようになります。

  • AWS DataSyncでデータを送るには移行元、移行先のロケーション情報とS3の情報が必要
  • 移行先のアカウントでタスクを作成し、タスクにはそれぞれのアカウントで手に入れた情報(一つ前の箇条書きに記載の情報)が必要
  • どちらか片方でも情報が欠如しているとデータを送ることはできない

DataSyncでは、読み取った情報を元にデータを転送を行うので、権限周りなどの設定では足りていない情報がないかを確認することが重要です。

最後に

今回は、「AWS DataSyncを使用してS3のログを移行させてみた。」の準備編ということで、AWS DataSyncのサービス紹介と、権限周りの設定を行いました。

次回#2では、実際にS3のログを移行させる実践編を行っていきます。

最後までお読みいただきありがとうございました。

執筆担当者プロフィール
年永 純

年永 純(日本ビジネスシステムズ株式会社)

HC1部5G所属。AWSやAzureなどのクラウドサービスを主に取り扱っており、現在は仮想化基盤やオンプレミス製品なども触ったりしています。 ディズニー大好きです。

担当記事一覧