ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

Amazon EFS のデータを AWS アカウント間でコピーする方法~その2~

こんにちは、こんばんわ!クラウドインテグレーション事業部の魚介系エンジニア松尾です。

前回は EFS のデータを AWS アカウント間でコピーする方法で AWS Backup のクロスアカウントバックアップ機能を紹介させていただきました。
AWS Backup を利用したアカウント間でのバックアップコピーは簡単であるものの Organization での設定が必要ということもあり、運用面でのハードルがやや高いと感じる方もいらっしゃったのではないでしょうか。

今回はその記事の続きで「EFS のデータを AWS アカウント間でコピーする方法~その2~」として、Organization での設定が不要な AWS DataSync を利用した EFS のデータコピー方法を紹介させていただきます。
なお、手順としてはアカウント間でのデータコピーを前提としており、セキュリティ的に VPC ピアリングや Trangit Gateway での相互アクセスが難しい状況(本番、開発環境間の接続など)での利用を想定しております。

前回の記事については以下となります。

techblog.forgevision.com

はじめに

AWS DataSync について

AWS DataSync はオンプレミスや AWS、その他クラウドのストレージ間でデータの移行、パフォーマンスの可視化などを行うことができるサービスです。
様々なロケーションから AWS の主要ストレージサービス(S3、EFS、FSx)への連携が可能ですので、大容量のデータ移行には欠かせない存在です。

AWS DataSync に関する詳細は以下の AWS ドキュメントをご確認下さい。

docs.aws.amazon.com

AWS DataSync を用いた EFS のデータ共有

前提事項

EFS のアカウント間の データ共有は AWS DataSync のパブリックエンドポイントを利用します。
VPC ピアリングや Trangit Gateway などを設定することでプライベートアクセスも可能ですが、前述の通り今回のユースケースとしてはアカウント間での相互アクセスが難しいケースを想定したものとなるため、パブリックエンドポイントの利用を行います。

今回ご紹介する構成は以下の図の通りです。

なお補足としてパブリックエンドポイントで DataSync Agent をアクティベートする場合も、下記 AWS ドキュメントに記載のある通り、同一リージョン内の通信は、AWS プライベートグローバルネットワーク経由でルーティングされるため、外部ネットワーク (パブリックなインターネット) を経由することはございません。

docs.aws.amazon.com

EFS データ移行手順

エージェント作成(転送元アカウント)

まず初めにデータ転送元となる EFS が保管された AWS アカウントにてデータ転送用の DataSync エージェントを準備します。
今回は AWS アカウント間でのデータ転送のため、Amazon EC2 を利用します。
AWS にて DataSync エージェントが予めインストールされた AMI が公開されておりますので、以下のコマンドで最新の DataSync 用 AMI を取得します。

aws ssm get-parameter --name /aws/service/datasync/ami --region ap-northeast-1

コマンドを実行すると以下のような結果が出力されます。

{
    "Parameter": {
        "Name": "/aws/service/datasync/ami",
        "DataType": "text",
        "LastModifiedDate": 1711123269.379,
        "Value": "ami-xxxxxxxxxxxxxxxxxx",
        "Version": 86,
        "Type": "String",
        "ARN": "arn:aws:ssm:ap-northeast-1::parameter/aws/service/datasync/ami"
    }
}

上記の Value パラメータに記載のある AMI ID を利用して EC2 を立ち上げます。
以下のように FQDN 末に AMI ID を入力しアクセスすると EC2 の起動画面が立ち上がります。

https://console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#LaunchInstanceWizard:ami=ami-xxxxxxxxxxxxxxxxxx

EC2 の起動ウィザードが表示されたら、以下のパラメータに注意して EC2 作成を行います。

  • インスタンスタイプ
    インスタンスサイズは 2xlarge 以上であることが
  • ネットワーク設定
    • VPC
      データ転送元 EFS が存在する VPC を選択します
    • サブネット
      今回はパブリックエンドポイントを利用するため、パブリックサブネットを選択します
    • パブリック IP の自動割り当て
      今回はパブリックエンドポイントを利用するため、「有効化」を選択します
    • セキュリティグループ
      作業端末からの HTTP (80 番ポート)インバウンドアクセスの許可と EFS へのアウトバウンドアクセス( 2049 番ポート)許可のあるセキュリティグループを選択します
      ※EFS 側のインバウンドアクセス許可は既に実施されているものとします

ちなみに同一アカウント内でのデータ転送を行う場合には DataSync エージェントは必要ありません。

DataSync エージェントのアクティベーション(転送先アカウント)

EC2 の準備が完了したら、データ転送先アカウントにて DataSync エージェントのアクティベーションをを行います。

AWS DataSync コンソールにアクセスし、[エージェント] > [エージェントを作成する] を押下します。

エージェント作成画面に推移したら、以下の通りの入力を行い、[キーを取得する]を押下します。

  • ハイパーバイザー
    Amazon EC2
  • サービスエンドポイント
    Asia Pacific (Tokyo) の公開サービスエンドポイント
  • アクティベーションキー
    エージェントからアクティベーションキーを自動的に取得する
  • エージェントのアドレス
    作成した EC2 のパブリック IP アドレス

キーの取得が問題無く完了するとアクティベーションキーが発行されます。
「エージェント名」に任意の名前をつけ、[エージェントを作成する]を押下します。

データロケーションの登録(転送先アカウント)

データ転送先のアカウントにてエージェントのアクティベーションが完了したら、データ転送元、送信先ロケーションの登録を行います。

AWS DataSync コンソールにアクセスし、[エージェント] > 作成したエージェント選択 > [ロケーションを作成する] を押下します。

ロケーション作成画面に推移したら、まずはデータ転送元の情報入力を行い、[ロケーションを作成する]を押下します。

  • ロケーションタイプ
    ネットワークファイルシステム (NFS)
  • エージェント
    作成したエージェントを選択
  • NFS サーバー
    データ転送元 EFS のドメイン名を指定
  • マウントパス
    EFS で利用しているパスを指定(デフォルトではルートディレクトリ)
  • NFS バージョン
    自動

データ転送元のロケーション作成が完了したら、上記と同じ流れでデータ転送先のロケーションを作成します。

  • ロケーションタイプ
    Amazon EFS ファイルシステム
  • ファイルシステム
    データ転送先の EFS を選択
  • マウントパス
    EFS で利用しているパスを指定(デフォルトではルートディレクトリ)
  • サブネット
    ファイルシステムのアクセス元となるサブネットを指定(ネットワークインターフェースを作成するサブネット)
  • セキュリティグループ
    EFS にアクセスできるセキュリティグループを指定
  • 転送時の暗号化
    なし(TLS を指定する場合は EFS へ root 権限でのアクセスを行うための IAM ロールが必要)

データ転送タスクを実行する(転送先アカウント)

データ転送元、データ転送先のロケーション作成が完了したら、実際にデータ転送を行います。

AWS DataSync コンソールにアクセスし、[タスク] > [タスクを作成する] を押下します。

送信元のロケーションを設定する」画面で以下の情報を入力し、[次へ]を押下します。

  • データ転送元のロケーションを選択する
    既存のロケーションを選択する
  • リージョン
    Asia Pacific (Tokyo)
  • 既存のロケーション
    作成したデータ転送元ロケーションを選択

送信先のロケーションを設定する」画面で以下の情報を入力し、[次へ]を押下します。

  • データ転送元のロケーションを選択する
    既存のロケーションを選択する
  • リージョン
    Asia Pacific (Tokyo)
  • 既存のロケーション
    作成したデータ転送先ロケーションを選択

設定を構成する」画面で以下の情報を入力し、[次へ]を押下します。

  • タスク名
    任意のタスク名を入力
  • Source data options
    • Contents to scan
      Everything (特定のフォルダやファイルを送信する場合は指定が必要)
    • Excludes – オプション
      指定しない(特定のフォルダやファイルを対象から除外する場合は指定が必要)
  • Transfer options
    • Transfer mode
      Transfer only data that has changed (デフォルト)
    • Verification
      Verify only the data transferrerd (デフォルト)
    • Bandwidth limit
      Use available (デフォルト)
    • Keep deleted files
      チェック (デフォルト)
    • Overwrite files
      チェック (デフォルト)
    • 追加設定
      全てチェック (デフォルト)
  • スケジュール
    スケジュールされていません
  • Task report
    None
  • Logging
    • ログレベル
      転送エラーなどの基本情報をログに記録する (デフォルト)
    • CloudWatch Log グループ
      自動生成
    • CloudWatch リソースポリシーを作成する
      チェック (デフォルト)

レビュー」画面で内容に問題が無ければ、[タスクを作成する]を押下します。

タスクの作成が完了したら、タスクの詳細画面にてタスクのステータスが「利用可能」であることを確認し、[開始]を押下します。

実効ステータス確認(転送先アカウント)

タスクが問題無く開始されたら、タスクの履歴から結果を確認します。

AWS DataSync コンソールにアクセスし、[履歴] > 実行したタスクの「実行 ID」を押下します。

実行ステータス」が「成功」ならタスクの実行は完了です。

最後に転送元 EFS と転送先 EFS でデータが同期がとれていることを確認できれば全ての作業は完了です。

最後に

今回は前回の投稿に続き EFS の AWS アカウント間のデータ転送の一例をご紹介させていただきました!
AWS Backup のクロスアカウントバックアップも AWS DataSync でのデータ転送も一長一短ですので、ご自身のケースに合わせて手段をご検討いただければと思います。

では次回もお楽しみに!!!