AWS Outposts のバックアップ設計で悩んだ話

## 対象の AWS サービスと対象読者
本記事は以下の AWS サービスを取り上げます。
- AWS Outposts
- AWS Backup
- AWS Direct Connect
- Amazon EC2
- Amazon Data Lifecycle Manager (DLM)
- S3 on Outposts

また、対象読者は以下のとおりです。
- AWS リージョンと AWS Outposts を併用してシステムを稼働させようとしている方
- AWS Outposts の導入を検討している方
- AWS Outposts のシステムバックアップをどのように取得しようか検討している方

## 概要
本記事では、オンプレシステムを AWS リージョンへ大規模移行する中で、システム固有の制約により一部をオンプレ AWS Outposts へ移行した際に工夫したバックアップ設計についてご紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804767/f937cdcb-0763-47ec-8889-d3342c364d80.png)
　▲図1. システム全体構成

### AWS Outposts とは
そもそも AWS Outposts とは？というところですが、AWS 公式では以下のように記載されています。

>AWS Outposts は、フルマネージドソリューションのファミリーの 1 員であり、AWS インフラストラクチャとサービスを事実上すべてのオンプレミスまたはエッジロケーションに提供し、真に一貫したハイブリッドエクスペリエンスを実現します。 Outposts ソリューションを使用すると、オンプレミスで AWS のネイティブサービスを拡張および実行でき、1U および 2U Outposts サーバーから 42U Outposts ラック、および複数のラックデプロイまで、さまざまなフォームファクタで利用できます。

基本的に「AWS 移行」と聞くと AWS リージョンへシステムを移行することをイメージしますが、移行対象システムの特性上、オンプレミスに残さなければならないケースも未だ存在します。例えば、オンプレミス環境に残る Mainframe 上で稼働するシステムと密に連携していて、システム間通信のレイテンシー要件が厳しい場合等が該当します。

「AWS に同じタイミングで移行はしたいけど、上記のような要件によってリージョン側に動かせない...」といったシステムを、AWS Outposts を導入することによって AWS に移行し、AWS が提供するマネージドサービス上で稼働させることができるようになります。

:::note warn
AWS Outposts 上で利用できる AWS サービスは AWS リージョン側と比較して限定的です。詳しくは以下リンク先を参照ください。
https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html#services
:::

今回はこの「AWS Outposts 上で Amazon EC2 を稼働させて各種システムを構築・運用しつつ、定期的にシステムバックアップを取得する」方法について、設計段階で悩んだ点をご紹介します。

## 課題
AWS Outposts 上で稼働する Amazon EC2 のシステムについて、バックアップ取得の方法や取得先を検討する必要があります。既存の AWS リージョン側の環境では AWS Backup を使った定期バックアップを取得していましたが、以下の制約によって今回 AWS Backup が AWS Outposts 上の Amazon EC2 に対して利用できないことが判明しました。

:::note alert
- AWS Backup は AWS リージョン側へのバックアップ取得はサポートしているが、 **AWS Outposts ローカル環境へのバックアップ取得はサポートしていない**
- AWS Outposts 上の Amazon EC2 のバックアップを AWS リージョン側に取得する場合、オンプレと AWS リージョンを繋げている AWS Direct Connect の帯域を一部バックアップ用に使う必要があるが、**業務通信に影響が出てしまう恐れがあるため使用できない**
:::

この状況から、AWS Backup とは別の方法で AWS Outposts ローカルにバックアップを取得する方法をとることになりました。ローカルに取得できれば、AWS Direct Connect の帯域幅を使う心配もなくなります。

バックアップについて、今回満たさなければならない主要な要件は以下のとおりです。
1. **日次**でバックアップを定期取得できる
1. バックアップの**世代管理**を行える
1. **AWS Outposts ローカルで**バックアップを取得できる
1. パッチ適用時等、必要な場合に**任意のタイミングで**バックアップを取得できる

## 構成と工夫ポイント
### 1. S3 on Outposts の導入（要件 1, 3）
まずは前述の通り、AWS Outposts ローカルにバックアップを取得することが大前提となりました。当初の予定ではオブジェクトストレージとして AWS リージョン側の Amazon S3 bucket を使用しようと考えていましたが、今回の要件では Amazon EC2 のバックアップ取得先の Amazon S3 を AWS Outposts ローカルに用意する必要があります。そのため、 Amazon EC2 インスタンス用の AWS Outposts サーバーに加えて、 **S3 on Outposts 用のサーバーも AWS Outposts ラックに追加する**ことを決定しました。

:::note warn
S3 on Outposts は他の Amazon EC2 用サーバー同様、事前に決まった容量分購入して AWS Outposts ラックに導入します。そのため、利用できる Amazon S3 の容量には上限があります。 AWS リージョン側であれば必要な分容量を使用することができますが、 **AWS Outposts の場合はデータ量の管理も行う必要がある**点にご注意ください。
:::
参考：https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/s3-outposts/S3onOutposts.html

### 2. Amazon DLM を使ったローカルバックアップ取得（要件 1, 2, 3）
前述の通り、 AWS リージョン側と同じ AWS Backup でのバックアップ取得ができないため、代替案を用意する必要があります。そこで今回採用したのが Amazon Data Lifecycle Manager (Amazon DLM) です。

#### 補足）AWS Backup と Amazon DLM の違い
　▼表1. AWS Backup と Amazon DLM の比較
|  | AWS Backup | Amazon DLM |
|:-----|:-----:|:-----:|
| **AWS Outposts での利用可否** | ○ | ○ |
| **サポートされる AWS サービス** | Amazon EBS、Amazon RDS、Amazon DynamoDB、Amazon EFS、Amazon FSx、AWS Storage Gateway etc. | Amazon EBS ボリューム、Amazon EC2 |
| **クロスアカウント機能** | ○ | × |
| **管理コンソール** | AWS Backup 専用 | Amazon EC2/EBS のコンソールから操作 |
| **AWS Outposts ローカルでのバックアップ取得** | × | ○ |

上記の通り、AWS Backup はサポートしている AWS サービス が多かったり、クロスアカウントでの管理機能を有していたりと、AWS 環境においてバックアップの定期取得やライフサイクル管理を行う上で機能が充実しています。そんな中で今回 Amazon DLM を採用した理由が、S3 on Outposts へのバックアップ取得可否です。AWS Backup ではサポートされておらず、**AWS Outposts ローカルにバックアップを取得するためには Amazon DLM を使用する必要がありました**。

今回のケースでは AWS Outposts 上に Amazon EC2 + EBS の構成のみ構築する想定のため、Amazon DLM がサポートしている AWS サービスで要件を満たせると判断でき。そのため最終的な設計としては、 Amazon DLM のスケジューリング機能を使って S3 on Outposts に定期バックアップを取得しつつ、ライフサイクル管理を行う形としました。

:::note warn
本記事を記載した 2025/6/20 時点での情報になります。最新のサポート状況については AWS 公式ドキュメントを参照ください。
:::

参考：https://docs.aws.amazon.com/ja_jp/ebs/latest/userguide/snapshot-ami-policy.html

### 3. 手動バックアップ手順の提供（要件 4）
定期バックアップは Amazon DLM で取得しますが、パッチ適用前等、任意のタイミングで Adhoc にバックアップを取得することも予想されます。そういった場合に備えて、AWS Outposts 上の Amazon EC2 に対する手動バックアップ手順を用意しておく必要があります。

基本的に通常 Amazon EC2 に対して Management Console からバックアップを取得するのと同じ手順になりますが、ソースサーバーやバックアップ取得先等の確認も含め、確実に意図した形でバックアップを取得できるよう手順を確立しておくことが重要になります。

## まとめ
今回は、AWS Outposts 特有のユースケースにおいてどういったバックアップ設計を行ったのかについてご紹介しました。通常であれば AWS Backup の幅広い機能を活用しながらバックアップ設計を確立することが多いですが、特殊なユースケースにおいては Amazon DLM のようなサービスの利用も検討することが必要であることをお伝えできていれば幸いです。
AWS Outposts は AWS リージョンと比べて導入事例も少ないですが、他にも困ったポイントやヒヤリハットポイント等が出てきたらご紹介したいと思います。