Replatform システム移行ノウハウ(共有ストレージのオブジェクトストレージ化)(AWS編)
2023/03/27 公開
本書はガバメントクラウド利用者のためのドキュメントです。
参照利用は自由ですが、質問・コメントは利用者に限定させていただきます。
アプリケーションをクラウドに適した構成へ移行する際、中間ファイル等の保管場所として S3 を利用する際の考慮事項を整理した文書である。
S3 へのアクセス方法
コスト効率を考慮し可能な限りS3への保管を行うものとするがアプリケーションへの影響が大きい場合は、以下のノウハウを参考に可能な限り実現すること。
アプリケーションでの S3 へのアクセス方法は、各プログラミング言語に対応した最新バージョンの AWS SDK を利用するものとする。理由は下記の通りである。
- AWS SDK では、Amazon S3 のパフォーマンスの最適化のために推奨されている多くのガイドラインが組み込みでサポートされており、最新のベストプラクティスに従うように定期的に更新されている。
- 例えば、AWS SDK には、HTTP 503 エラーでリクエストを自動的に再試行するロジックが含まれており、HTTP 503 エラーのようなレスポンスが遅い接続への対応が予め実装されている
また、各プログラミング言語に対応した AWS SDK についてはSDK とツールを使用して構築を開始するOpens in new tabを参照のこと。
図 1. 各プログラミング言語の AWS SDK
なお、アプリケーションのバイナリサイズを最小限にしたい等の理由で AWS SDK の利用を見送る場合は、REST API による S3 へのアクセスを代替手段として検討する。ただし、その場合は、リクエスト時に必要な署名の生成や、エラー時の再試行のロジック等は、アプリケーション側で実装が必要になることに留意すべきである。
S3 の REST API の仕様についてはAmazon S3 REST API IntroductionOpens in new tabを参照のこと。
S3 オブジェクトキーの保管
S3 バケットに保存されるオブジェクトは、オブジェクトキー名によって一意に識別される。そのため、アプリケーションが S3 バケットからオブジェクトをアップロードまたはダウンロードする場合には、オブジェクトのキー名の情報が必要となる。
図 2. S3 のネーミングスキーマ
処理の途中で中間ファイルを S3 にアップロードする場合には、後続の処理で中間ファイルをダウンロードし処理を継続できるように、オブジェクトキー名の情報をデータベースサービスに保管しておく必要がある。その際には、「Replatform システム移行ノウハウ(クラウドサービス活用)」の「セッション管理」で示したデータベースサービスの中から保管先を選択すると良い。
なお、オブジェクトキー名に使用して安全な文字、使用しない方が良い文字などの注意点についてはオブジェクトキー名の作成Opens in new tabを参照のこと。
S3 ライフサイクルの活用
中間ファイルのように長期的な保管が不必要なデータに関しては、S3 ライフサイクルの機能による自動削除を検討することが推奨される。基本的には、アプリケーションの処理の中でファイルを削除することが望ましいが、アプリケーションのエラーなどが原因で、ファイルが削除されずに残った場合でも、S3 ライフサイクルによってファイルを削除することができる。
S3 ライフサイクルは、ライフサイクルルールを設定し、そのルールに該当する S3 のオブジェクトに対して、削除処理やストレージクラスの変更を自動化できる。S3 バケット全体に適用できる他、タグの指定やオブジェクトの prefix の指定により、対象を絞り込むようなライフサイクルルールの設定も可能である。
S3 ライフサイクルの詳細についてはストレージのライフサイクルの管理Opens in new tabを参照のこと
改訂履歴
| 改訂年月日 | 改訂理由 |
|---|---|
| 2023 年 03 月 27 日 | 新規作成 |