ForgeVision Engineer Blog

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

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

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

皆さんは EFS を利用する際に、AWS アカウント間でデータを共有したいと思ったことはありませんか?
EC2 や RDS などは比較的簡単にスナップショットをアカウント間で共有することができるため、EFS も同じなのでは?と考えてらっしゃる方も多いのではないでしょうか?

実は EFS は EC2 や RDS のように各々サービスが持つような標準機能でアカウント間でバックアップを共有するようなことは通常できません。
少量のデータであれば、リソース間で直接データをやり取りしたり S3 を経由したりなど方法はいくつもあるかもしれませんが、大容量のデータであったり、セキュリティ的に相互アクセスできない場所にリソースが配置されている場合は他の手段を検討する必要があります。

そこで今回「EFS のデータを AWS アカウント間でコピーする方法~その1~」として、最も簡単な AWS アカウント間 EFS バックアップコピー方法についてご紹介させていただきます。
※二つ目以降の方法は別の記事にてご紹介させていただきます。

はじめに

Amazon EFS とは?

EFS は Elastic File System の略称で、Linux で NFS(ネットワークファイル共有)を行うためのストレージです。
AWS フルマネージドで提供されているため、ハードウェア、ソフトウェアの管理は不要で、AWS 上での操作のみですぐに作成/利用することができます。
Linux を動作させる EC2 や ECS などで、リソース間のデータを共有したい場合や、クラスタリングを行う場合などに、S3 とともに最初に検討を行う代表的なサービスです。

Amazon EFS のバックアップについて

EFS のバックアップを行う場合、標準的に AWS Backup を利用する必要があります。
AWS Backup は AWS フルマネージドのバックアップサービスで、多くの AWS サービスをサポートしております。
今回ご紹介する方法はこの AWS Backup を用いた AWS アカウント間のバックアップのコピー方法をご紹介します。

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

docs.aws.amazon.com

AWS Backup を用いた EFS のバックアップの共有

前提事項

アカウント間の EFS バックアップの共有は AWS Backup のクロスアカウントバックアップを利用します。
クロスアカウントバックアップはデフォルトでは利用できず、バックアップ元、バックアップ先のアカウントが所属する Organizations の親アカウントで以降の手順を実施する必要があります。

  1. AWS Organizations の認証情報を使用して AWS にログインします。
    クロスアカウントバックアップは、Organizations 親アカウントの認証情報を使用してのみ有効または無効にすることができます。

  2. https://console.aws.amazon.com/backup で AWS Backup コンソールを開きます。

3.[マイアカウント] で、[設定] を選択します。

4.[クロスアカウントバックアップ] で、[オンにする] を押下します。

以上の手順が完了したら、クロスアカウントバックアップの事前準備は完了です。

クロスアカウントバックアップ手順手順(オンデマンド)

バックアップに対してオンデマンドでクロスアカウントバックアップを行う方法をご紹介します。
今回は割愛しますが、バックアッププランを設定して定期的なクロスアカウントバックアップのスケジュールを行うこともできます。

作業準備(バックアップ先アカウント)

  1. [バックアップボールト]画面にてバックアップのコピーを受け入れるボールトを選択(必要な場合は新規作成)します。
    ボールトで暗号化設定を行う(行っている)場合、KMS の AWS 管理キーだとクロスアカウントバックパップで利用できないため、カスタマー管理キーを指定してください。

  2. [アクセスポリシー] セクションで、backup:CopyIntoBackupVault を [許可 します。
    [アクセス許可の追加] を選択し、その後、[組織からのバックアップボールトへのアクセスを許可する] を選択します。
    以下の通りの設定となることを確認します。

以上でバックアップ先アカウントでの作業準備は完了です。

クロスアカウントバックアップ実行(バックアップ元アカウント)

  1. [バックアップボールト]画面にてバックアップを保有するコピー元ボールトを選択します。

  2. [復旧ポイント]でコピーしたいバックアップを選択します。

  3. [アクション] > [コピー]を選択します。

  4. [バックアップの詳細] を開いて、コピーするリカバリポイントに関する情報を表示します。

  5. [コピーの設定] で、以下の通りの設定を行います。
    [コピー先リージョン]:コピー先ボールトのリージョン
    [別アカウントのボールトにコピー]:有効化
    [外部ボールト ARN]:コピー先ボールトの ARN
    [コピー先ボールトへのアクセスを許可]メッセージが出力されるので[許可]を押下します。
    許可が完了すると「ボールト「xxx」でバックアップ復旧が有効になりました」というメッセージが出力されます。
    [合計保持期間]:任意の保持期間を設定
    [IAM ロール]:Backup を実行するロールを選択します。

  6. 一通りの入力が完了したら、[コピー]を押下します。

  7. コピー開始後は[ジョブ]画面にて実行状況の詳細を確認します。 バックアップ問題なく完了すると[ステータス]が「完了」となります。

以上でクロスバックアップの手順は完了です。

クロスアカウントバックアップコピー完了確認(バックアップ先アカウント)

最後にバックアップ先でバックアップの完了を確認します。

  1. [バックアップボールト]画面でコピー先ボールトを選択し、[復旧ポイント]でコピーした復旧ポイントが存在することを確認します。

  2. [リソース ID]、[ソースアカウント ID]がコピー元アカウント情報と一致していることを確認します。

想定通りのバックアップが共有されていたらクロスアカウントバックアップ作業は全て完了です。

最後に

今回は EFS の AWS アカウント間のバックアップ方法の一例をご紹介させていただきました!
Organization での設定が必要ということもあり、そもそも Organization を利用していない場合や、大規模な組織設定を行っている場合などは敷居が高い方法かもしれません。
そこで、次回以降にやや手間はかかるものの Organization を利用しない手順でのデータの共有方法についてご紹介したいと思います!!

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