Amazon Web Services ブログ
Amazon S3 バッチオペレーションを使用して保存期間を一括管理する方法
Amazon S3 バッチオペレーションが S3 オブジェクトロックをサポートするようになりました。この記事では、これら 2 つの Amazon S3 機能を一緒に使用して、一般的なデータ保護のニーズに対処する方法を紹介します。S3 バッチオペレーションは、何百万ものオブジェクト間でタグセットをコピーしたり更新したりするなどの反復アクションまたは一括アクションを 1 度のリクエストで実行できる機能です。提供するのはオブジェクトのリストのみで、S3 バッチオペレーションは再試行の管理や進行状況の表示など、すべての手動作業を処理します。S3 バッチオペレーションの詳細については、こちらのブログ投稿をご覧ください。
S3 オブジェクトロックを使用すれば、オブジェクトに保存日と訴訟ホールドを適用して、オブジェクトが無期限、あるいは特定の日付が経過するまで削除または上書きされないようにすることができます。S3 オブジェクトロック向け S3 バッチオペレーションのサポートは、ライトワンスリードメニー (WORM) ストレージの規制要件を満たすのに役立ちます。さらに、オブジェクトを変更または削除する際に保護するためのレイヤーを追加するだけです。
ベーシック
Amazon S3 オブジェクトロックには、オブジェクトの保持期間を管理する 2 つの方法があります。
- 保持期間は、オブジェクトがロックされたままの状態になる固定期間を指定します。この期間中、オブジェクトは WORM で保護されており、オブジェクトのバージョンを削除または変更することはできません。S3 オブジェクトロックは、2 つの保存期間モードを提供します。
- ガバナンスモードでは、ほとんどのユーザーによって削除されないようにオブジェクトを保護していますが、保存設定を変更したり、必要に応じてオブジェクトを削除したりする権限をユーザーに付与することもできます。
- コンプライアンスモードで保護されたオブジェクトのバージョンは、AWS アカウントのルートユーザーを含め、どのユーザーも上書きまたは削除を行うことができません。
- 訴訟ホールドは、保持期間として同じ保護を行いますが、期限がありません。代わりに、訴訟ホールドは、明示的に削除するまでその場に置かれたままになります。
オブジェクトのバージョンは、保持期間または訴訟ホールドのいずれか、あるいはその両方の組み合わせを設定できます。たとえば、1 年間の保持時間プラス訴訟ホールドが設定されたオブジェクトをもつ場合があります。正確な保存日がわかる場合は保存期間を使用し、要件に合った保存モードを選択します。
S3 オブジェクトロック向け S3 バッチオペレーションのサポートはいつ使用しますか?
バケット内の多数のオブジェクトに S3 オブジェクトロック設定を適用、更新、または削除する必要がある場合は、S3 オブジェクトロック向け S3 バッチオペレーションサポートの使用をご検討ください。S3 オブジェクトロックを初めて使用する場合、S3 オブジェクトロック向け S3 バッチオペレーションのサポートを使えば、これらの変更を簡単に行えます。既存の S3 オブジェクトロック要件が変更され、多数のオブジェクトのロックを更新、追加、または削除する必要がある場合にも当てはまります。オブジェクトがバケットに追加されたときに、S3 オブジェクトロックポリシーをオブジェクトに自動的に割り当てることができます。これを行うには、そのバケットにデフォルトの保存モードを設定します。S3 バッチオペレーションを使用する必要はありません。このプロセスの詳細については、Amazon S3 オブジェクトロックによるデータの保護に関するこのブログをご参照ください。 では、セットアッププロセスを見てみましょう。
セットアップの前提条件
この記事で説明されているプロセスを実行するには、延長する S3 オブジェクトロックの保存期間を設定した一連のオブジェクトが必要です。 この記事は、ペタバイト規模の既存のストレージがある場合でも、クラウドへの移行を計画している場合でも関係のある内容です。また、Amazon S3 バッチオペレーションジョブの基本、オペレーション、S3 バッチオペレーションジョブの管理など、既存の S3 バッチオペレーションのドキュメントも役立ちます。
注: バージョン管理と S3 オブジェクトロックは、ジョブが実行されるバケットで構成する必要があります。新しいバケットに対してのみオブジェクトロックを有効にできます。この演習を実行したいが、既存のバケットで S3 オブジェクトロックが有効になっていない場合は、最初に AWS サポートに連絡して有効にする必要があります。詳しくは、オブジェクトロックバケットの設定をご覧ください。
はじめに: S3 オブジェクトロックの使用方法を決定する
各組織が異なるため、Amazon S3 オブジェクトロックの特定の用途に合わせて次の詳細をカスタマイズする必要があります。このサンプル演習では、特定のプロジェクトに関連するすべてのオブジェクトでのガバナンスモードの保存期間を延長する予定です。プロジェクト「keyproject」が延長されたため、マニフェスト内のすべてのオブジェクトについて、保存期間設定を今日から 1 年後に更新する必要があります。この例ではガバナンスモードの保存期間を使用しています。コンプライアンスモードの保存期間を適用するには、ジョブを作成するときにこの例と同じようにコンプライアンスモードを選択します。S3 オブジェクトロックのコンプライアンスモード構成でオブジェクトを削除する唯一の方法は、オブジェクトが関連付けられている AWS アカウントを退会することです。ホールドのタイプとその使用方法については、Amazon S3 オブジェクトロックの概要を参照してください。
S3 オブジェクトロック向け S3 バッチオペレーションサポートを使用してオブジェクトの保存を拡張する 3 つのステップ
- マニフェストを指定します。マニフェストは、Amazon S3 に作用させるオブジェクトキーを表示する Amazon S3 オブジェクトです。
- S3 オブジェクトロックのジョブを作成します。このステップでは、S3 バッチオペレーションの操作を選択して実行し、ジョブの実行に必要なアクセス許可を特定します。
- ジョブを実行して、選択した日付まですべてのオブジェクトをロックします。
マニフェストを指定する
この例では、バケットにプレフィックス「keyproject」で保存された一連のオブジェクトの保存期間を延長しています。 S3 インベントリを実行すると、manifest.json ファイル、manifest.checksum ファイル、およびインベントリレポートが生成されます。S3 バッチオペレーションジョブの入力に manifest.json ファイルを使用しています。
S3 インベントリレポートを実行するには、バケット上で [管理] タブに移動し、[インベントリ] を選択して、[新規追加] をクリックします。S3 インベントリの名前を入力し、レポートの宛先バケットを選択し、プレフィックスによってオプションのフィルターを適用して、頻度から [毎日] を選択します。保存期間を延長する必要があるオブジェクトは、プレフィックス「keyproject」にあります。このプレフィックスをフィルタリングすると、マニフェストにこのプロジェクトのオブジェクトのみが含まれるようになります。さらに、宛先バケットにレポートのプレフィックスを適用して、後で簡単に見つけられるようにしました。詳細については、S3 インベントリの構成を参照してください。
注: Amazon S3 インベントリレポートまたは CSV ファイルを使用して、ジョブ作成リクエストでマニフェストを指定できます。インベントリレポートの代わりに、オブジェクトリストを含む CSV ファイルを作成できます。詳細については、マニフェストの指定をご覧ください。
保存期間を延長するための S3 バッチオペレーションジョブの作成
それでは、マニフェストを取得したので、S3 コンソールを使用してジョブを作成および実行できます。AWS マネジメントコンソール、AWS CLI、または AWS SDK を介して S3 バッチオペレーションを使用できます。S3 コンソールで、[バッチオペレーション] に移動し、[ジョブを作成] を選択します。マニフェストで参照されているオブジェクトが配置されているリージョンを選択します。私のプロジェクトは us-east-1 バケットにあります。マニフェストの形式として S3 インベントリレポートを選択し、S3 バケットを参照して、宛先バケットの場所 (destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json) に公開された manifest.json ファイルを見つけます。manifest.json ファイルをロードし、マニフェストオブジェクト ETag を使用して正しいマニフェストが選択されていることを確認し、[次へ] を選択して続けます。詳しくは、S3 バッチオペレーションジョブの作成をご覧ください。
次に、操作 (オブジェクトロックの保存期間) とこの操作のオプションを選択します。ガバナンス保存期間モードと新しい保存日 2021 年 5 月 6 日で S3 オブジェクトロックを有効にしています (コンソールはこの日付が 365 日以内であることを検証します)。次に、[次へ] をクリックします。
ジョブの名前を入力して、その優先順位を設定し、すべてのタスクを含む完了レポートをリクエストします。次に、レポートのバケットを選択し、必要なアクセス許可を付与する IAM ロールを選択します。コンソールで、[IAM ロールポリシーテンプレートと IAM 信頼ポリシーの表示] を選択すると、コピーして使用できるロールポリシーと信頼ポリシーが表示されます。この演習で使用したポリシーの例は、この記事の下部にあります。その後、[次へ] を選択します。
注: 完了レポートの範囲として [すべてのタスク] を選択した場合、成功したタスクと失敗したタスクの両方を受け取ります。失敗したタスクのみにご興味がある場合は、完了レポートの範囲として [失敗したタスクのみ] を選択することをお勧めします。
最後に、リージョンとマニフェストを検証するジョブ、保存期間モードと保存期限の値、およびその他のオプションを確認します。確認が終わったら、[ジョブを作成] を選択します。
注: 特に、保存期間が経過するまで不変状態になるコンプライアンスモードで S3 オブジェクトロックを適用する場合に重要です。そのオブジェクトまたはバケットは削除できません。この S3 オブジェクトロック構成を持つオブジェクトを削除する唯一の方法は、オブジェクトが関連付けられている AWS アカウントを退会することです。
S3 バッチオペレーションジョブの実行
ジョブを作成するリクエストが成功すると、Amazon S3 はジョブ ID を返します。ジョブ ID は Amazon S3 が自動的に生成する一意の識別子であり、S3 バッチオペレーションジョブを識別してそのステータスを監視することができます。その後、ジョブは準備中状態になります。ジョブの状態が [実行確認待ち] に変わったら、ジョブのオブジェクトの総数を確認できます。この番号を確認した後、ジョブを選択して [ジョブを実行] をクリックします。
注: AWS マネジメントコンソール経由でジョブを作成する場合、S3 バッチオペレーションがジョブの処理を開始する前に、ジョブの詳細を確認してから実行するように確認する必要があります。30 日以上ジョブの中断状態が続いている場合、ジョブは失敗します。
S3 バッチオペレーションはジョブの実行中に全体的な失敗率を調べて監視し、失敗率が 50% を超えるとジョブを停止します。コンソールを使用して、完了率、失敗の総数、失敗率を追跡できます。ジョブが失敗する場合、マニフェストバケットから読み取るアクセス許可、またはレポートバケットに書き込むアクセス許可がないことが最も一般的な理由です。ジョブを実行するための適切なアクセス許可が設定されていることを確認してください。詳細については、Amazon S3 バッチオペレーションへのアクセス許可の付与をご覧ください。
ジョブが完了すると、完了状態になります。お疲れさまでした。 マニフェスト内のオブジェクトでは、2021 年 5 月 6 日まで新しい保存期間がロックされます。S3 バッチオペレーションの完了レポートを確認して、すべてのオブジェクトがロックされていることを確認することもできます。
これらのオブジェクトのロックを再変更する必要がある場合は、将来同じマニフェストを再利用できます。
クリーンアップ
更新されたインベントリレポートが不要になった場合は、毎日のインベントリレポート設定を削除して、新しいレポートが作成されないようにしてください。
追加情報
S3 オブジェクトロックの評価: S3 オブジェクトロックは、Cohasset Associates により、SEC Rule 17a-4(f)、FINRA Rule 4511 および CFTC Regulation 1.31 により評価されています。Cohasset Associates は、レコード管理と情報ガバナンスを専門とする経営コンサルティング会社です。Cohasset Associates 評価レポートのコピーは、S3 オブジェクトロックの技術文書からダウンロードできます。その後、規制データに対して Amazon S3 を使用することを規制当局に通知するとき、規制当局に評価レポートを提供することができます。
CSV オブジェクトリスト: バケット内のオブジェクトのサブセットを処理する必要があり、それらの識別に共通プレフィックスを使用できない場合は、CSV ファイルを作成し、それを使用してジョブを進めることができます。インベントリレポートから始めることができます。また、名前に基づいて、またはデータベースや他のリファレンスに対してチェックを行うことによって、オブジェクトをフィルター処理できます。
S3 オブジェクトロック向け S3 バッチオペレーションサポートのポリシー: 前述の例の S3 オブジェクトロック向け S3 バッチオペレーションサポートで保存期間を延長するために使用するポリシーです。詳細については、Amazon S3 バッチオペレーションへのアクセス許可の付与をご覧ください。
- S3 バッチオペレーションが作成中のロールを引き受けるように許可する
- ロールがジョブのストレージオブジェクトを含むバケットの S3 オブジェクトロック構成を確認できるように許可する
- 現在のガバナンス保存期間を上書きするロールを許可する
- ロールがオブジェクトにオブジェクト保存期間を設定できるように許可する
- ロールがマニフェストオブジェクトを読み取りできるように許可する
- ロールがジョブ完了レポートのオブジェクトを書き込むように許可する
信頼ポリシー
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":"batchoperations.s3.amazonaws.com"
},
"Action":"sts:AssumeRole"
}
]
}
アクセス許可ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetBucketObjectLockConfiguration",
"Resource": [
"arn:aws:s3:::{{TargetResource}}"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObjectRetention",
"s3:BypassGovernanceRetention"
],
"Resource": [
"arn:aws:s3:::{{TargetResource}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::{{ManifestBucket}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::{{ReportBucket}}/*"
]
}
]
}
料金
S3 バッチオペレーションジョブの実行コストについてご興味がある場合は、前述の例に基づくこちらの見積もりをご覧ください。S3 の最新の料金情報については、Amazon S3 の料金管理とレプリケーションのセクションをご覧ください。こちらは、米国東部リージョンで、100 万個の標準ストレージオブジェクトをロックするために支払う料金となります。この料金には、S3 バッチオペレーションの料金と、基になる S3 オブジェクトロックリクエストの費用が含まれています。
- S3 バッチオペレーションジョブ 0.25 USD -> 0.25 USD
- 実行されたオブジェクト操作 100 万回あたり 1.00 USD -> 1.00 USD
- 標準ストレージでの PUT リクエスト 1,000 回あたり 0.005 USD -> 5.00 USD
- 合計 -> 6.25 USD
詳細な求人情報の作成、ステータスの確認、一覧表示、確認に関するリクエスト料金もあります。
まとめ
この記事では、大規模のオブジェクト一覧でガバナンス保存期間を延長しました。S3 オブジェクトロック向け S3 バッチオペレーションサポートを使用して、コンプライアンス保存期間の適用、ガバナンス保存期間の適用または削除、訴訟記録保持の適用または削除を行うこともできます。
ご質問やフィードバックがある場合は、コメント欄にコメントを残してください。S3 バッチオペレーションの詳細については、以下の資料を参照してください。
S3 オブジェクトロックのドキュメント: S3 オブジェクトロックの概要と Amazon S3 オブジェクトロックの管理についてお読みください。
S3 バッチオペレーションのドキュメント: ジョブの作成、バッチオペレーション、およびバッチオペレーションジョブの管理についてお読みください。
チュートリアルビデオ: S3 バッチオペレーションのビデオチュートリアル、ジョブの作成方法、ジョブの管理と追跡方法、および権限の付与方法をご確認ください。