Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

Amazon EBS スナップショットライフサイクルの自動化

Amazon Data Lifecycle Manager (Amazon DLM) を使用して、Amazon EBS ボリュームをバックアップするスナップショットの作成、保持、削除を自動化できます。スナップショット管理を自動化すると、次のことが可能になります。

  • 定期的なバックアップスケジュールを実施して貴重なデータを保護する。

  • 監査担当者または社内のコンプライアンスが必要とするバックアップを保持する。

  • 古いバックアップを削除してストレージコストを削減する。

Amazon CloudWatch Events と AWS CloudTrail のモニタリング機能と組み合わせることで、Amazon DLM は EBS ボリューム用の完全バックアップソリューションを追加コストなしで提供します。

Amazon DLM を理解する

以下は、Amazon DLM を使用する前に理解しておくべき重要な要素です。

スナップショット

スナップショットは、EBS ボリュームからデータをバックアップするための主な手段です。ストレージコストを節約するために、連続するスナップショットは増分で、以前のスナップショット以降に変更されたボリュームデータのみが含まれています。ボリュームの一連のスナップショットでスナップショットを 1 つ削除すると、そのスナップショットに固有のデータだけが削除されます。キャプチャされたボリュームの残りの部分は保存されます。

詳細については、「Amazon EBS スナップショット」を参照してください。

ボリュームタグ

Amazon DLM はリソースタグを使用して、バックアップする EBS ボリュームを識別します。タグは、AWS リソース (EBS ボリュームとスナップショットを含む) に割り当てることのできるカスタマイズ可能なメタデータです。Amazon DLM ポリシー (以下で説明) は、1 つの一意なタグを使用するバックアップのボリュームをターゲットとします。ボリュームで複数のポリシーを実行する場合は、複数のタグをボリュームに割り当てることができます。

タグキーに「\」または「=」文字を使用することはできません。

Amazon EC2 オブジェクトのタグ付けの詳細については、「Amazon EC2 リソースにタグを付ける」を参照してください。

スナップショットタグ

Amazon DLM は、ポリシーによって作成されたすべてのスナップショットに次のタグを適用し、他の方法で作成されたスナップショットと区別します。

  • aws:dlm:lifecycle-policy-id

  • aws:dlm:lifecycle-schedule-name

作成時に、スナップショットに適用するカスタムタグを指定することもできます。

タグキーに「\」または「=」文字を使用することはできません。

ボリューム・タグは、Amazon DLM が作成するスナップショットによって継承されません。

ライフサイクルポリシー

ライフサイクルポリシーは、以下のコア設定で構成されています。

  • リソースタイプ - ポリシーによって管理される AWS リソース (この場合は EBS ボリューム)。

  • ターゲットタグ – ポリシーで管理するために EBS ボリュームに関連付ける必要があるタグ。

  • スケジュール – スナップショットを作成する頻度と保持するスナップショットの最大数を定義します。スナップショットの作成は、指定された開始時刻から 1 時間以内に開始されます。新しいスナップショットを作成すると、そのボリュームに保持するスナップショットの最大数を超える場合は、最も古いスナップショットが削除されます。

ライフサイクルポリシーには、次の考慮事項が適用されます。

  • アクティベーションステータスを有効に設定するまで、ポリシーはスナップショットの作成を開始しません。作成時にポリシーを有効にするように設定できます。

  • スナップショットは、指定された開始時刻から 1 時間以内にポリシーによって作成が開始されます。

  • ターゲットタグを削除または変更してポリシーを変更すると、そのタグが付いている EBS ボリュームはポリシーの影響を受けなくなります。

  • ポリシーのスケジュール名を変更すると、古いスケジュール名で作成されたスナップショットはポリシーの影響を受けなくなります。

  • EBS ボリュームをバックアップするために複数のポリシーを作成できます。ただし、各ポリシーがボリュームの一意なタグをターゲットとすることが条件です。ターゲットタグは、無効なポリシーであっても、ポリシー全体で再利用することはできません。EBS ボリュームに 2 つのタグがあり、タグ A が 12 時間ごとにスナップショットを作成するポリシー A のターゲットで、タグ B が 24 時間ごとにスナップショットを作成するポリシー B のターゲットである場合、Amazon DLM は両方のポリシーのスケジュールに従ってスナップショットを作成します。

  • ポリシーによって作成されたスナップショットをコピーすると、保持スケジュールはコピーに引き継がれません。これにより、Amazon DLM は長期間保持する必要があるスナップショットを削除しません。

たとえば、account=Finance タグですべての EBS ボリュームを管理し、09:00 に 24 時間ごとのスナップショットを作成し、最新の 5 つのスナップショットを保持するポリシーを作成できます。スナップショットの作成は、遅くとも 09:59 から開始できます。

Amazon DLM アクセス許可

Amazon DLM は IAM ロールを使用して、ユーザーの代わりにスナップショットを管理するために必要なアクセス権限を取得します。Amazon DLM は、最初に AWS マネジメントコンソール を使用してライフサイクルポリシーを作成するときに、[AWSDataLifecycleManagerDefaultRole] ロールを作成します。次のように、create-default-role コマンドを使用してこのロールを作成することもできます。

aws dlm create-default-role

また、必要なアクセス権限を持つカスタム IAM ロールを作成し、ライフサイクルポリシーを作成するときにそのロールを選択することもできます。

カスタム IAM ロールを作成するには

  1. 次のアクセス権限でロールを作成します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateSnapshot", "ec2:DeleteSnapshot", "ec2:DescribeVolumes", "ec2:DescribeSnapshots" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*::snapshot/*" } ] }

    詳細については、『IAM ユーザーガイド の「ロールの作成」を参照してください。

  2. ロールに信頼関係を追加します。

    1. IAM コンソールで、[ロール] を選択します。

    2. 作成したロールを選択し、[信頼関係] を選択します。

    3. [信頼関係の編集] を選択し、次のポリシーを追加して、[信頼ポリシーの更新] を選択します。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "dlm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

IAM ユーザーのアクセス権限

IAM ユーザーが Amazon DLM を使用するには、次のアクセス権限が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/AWSDataLifecycleManagerDefaultRole" }, { "Effect": "Allow", "Action": "dlm:*", "Resource": "*" } ] }

詳細については、IAM ユーザーガイド の「IAM ユーザーのアクセス許可の変更」を参照してください。

制限

AWS アカウントに Amazon DLM に関連した以下の制限があります。

  • リージョンごとに最大 100 のライフサイクルポリシーを作成できます。

  • リソースごとに最大 50 個のタグを追加できます。

  • ライフサイクルポリシーごとに 1 つのスケジュールを作成できます。

コンソールを使用した Amazon DLM の操作

次の例は、Amazon DLM を使用して EBS ボリュームのバックアップを管理する一般的な手順を実行する方法を示しています。

ライフサイクルポリシーを作成するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[Elastic Block Store]、[ライフサイクルマネージャー]、[Create snapshot lifecycle policy (スナップショットライフサイクルポリシーの作成)] を選択します。

  3. 必要に応じて、ポリシーに次の情報を入力します。

    • [Description] (説明) - ポリシーの説明。

    • [Target volumes with tags] (タグ付きのターゲットボリューム) - バックアップするボリュームを識別するリソースタグ。

    • [Schedule Name] (スケジュール名) - バックアップスケジュールの名前。

    • [Create snapshots every n Hours] (n 時間ごとにスナップショットを作成) - ポリシーの実行間隔 (時間単位)。サポートされている値は 12 と 24 です。

    • [Snapshot creation start time hh:mm UTC] (スナップショット作成開始時刻 (hh:mm UTC)) - ポリシーの実行時刻。ポリシーの実行は、スケジュールした時刻から 1 時間以内に開始されます。

    • [Retention rule] (保持ルール) - 各ボリュームに保持するスナップショットの最大数。サポートされている範囲は 1 ~ 1000 です。この上限に達すると、新しいスナップショットの作成時に最も古いスナップショットが削除されます。

    • [Tag created snapshots] (作成したスナップショットへのタグ付け) - 作成したスナップショットに適用するリソースタグ。これらのタグは、Amazon DLM によって適用されるタグに加えて付けられます。

    • [IAM role] (IAM ロール) - スナップショットを作成、削除、記述し、ボリュームを記述するアクセス許可のある IAM ロール。AWS からデフォルトロール AWSDataLifecycleManagerDefaultRole が提供されます。または、カスタム IAM ロールを作成することもできます。

    • [Policy status after creation] (作成後のポリシーの状態) - [Enable policy] (ポリシーの有効化) を選択すると、次のスケジュールした時刻にポリシーが実行されます。ポリシーが実行されないようにするには、[Disable policy] (ポリシーの無効化) を選択します。

  4. [Create Policy] を選択します。

ライフサイクルポリシーを表示するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで [Elastic Block Store] の [ライフサイクルマネージャー] を選択します。

  3. リストからライフサイクルポリシーを選択します。[詳細] タブには、ポリシーに関する次の情報が表示されます。

    • [ポリシー ID]

    • 作成日

    • [Date modified (変更日)]

    • [Target volumes with these tags (これらのタグを持つターゲットボリューム)]

    • [Rule summary (ルールの要約)]

    • 説明

    • [Policy state (ポリシーの状態)]

    • [Tags added to snapshots (スナップショットにタグが追加されました)]

ライフサイクルポリシーを変更するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで [Elastic Block Store] の [ライフサイクルマネージャー] を選択します。

  3. リストからライフサイクルポリシーを選択します。

  4. [アクション]、[ポリシーの変更] の順に選択します。

  5. 既存のライフサイクルポリシーでは、次のポリシー値を変更できます。

    • [Description] (説明) - ポリシーの説明。

    • [Target volumes with tags] (タグ付きのターゲットボリューム) - バックアップするボリュームを識別するリソースタグ。

    • [Schedule Name] (スケジュール名) - バックアップスケジュールの名前。

    • [Create snapshots every n Hours] (n 時間ごとにスナップショットを作成) - ポリシーの実行間隔 (時間単位)。サポートされている値は 12 と 24 です。

    • [Snapshot creation start time hh:mm UTC] (スナップショット作成開始時刻 (hh:mm UTC)) - ポリシーの実行時刻。ポリシーの実行は、スケジュールした時刻から 1 時間以内に開始されます。

    • [Retention rule] (保持ルール) - 各ボリュームに保持するスナップショットの最大数。サポートされている範囲は 1 ~ 1000 です。この上限に達すると、新しいスナップショットの作成時に最も古いスナップショットが削除されます。

    • [Tag created snapshots] (作成したスナップショットへのタグ付け) - 作成したスナップショットに適用するリソースタグ。これらのタグは、Amazon DLM によって適用されるタグに加えて付けられます。

    • [IAM role] (IAM ロール) - スナップショットを作成、削除、記述し、ボリュームを記述するアクセス許可のある IAM ロール。AWS からデフォルトロール AWSDataLifecycleManagerDefaultRole が提供されます。または、カスタム IAM ロールを作成することもできます。

    • [Policy status after creation] (作成後のポリシーの状態) - [Enable policy] (ポリシーの有効化) を選択すると、次のスケジュールした時刻にポリシーが実行されます。ポリシーが実行されないようにするには、[Disable policy] (ポリシーの無効化) を選択します。

ライフサイクルポリシーを削除するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで [Elastic Block Store] の [ライフサイクルマネージャー] を選択します。

  3. リストからライフサイクルポリシーを選択します。

  4. [アクション]、[ポリシーの削除] の順に選択します。

コマンドラインを使用して Amazon DLM を操作する

次の例は、Amazon DLM を使用して EBS ボリュームのバックアップを管理する一般的な手順を実行する方法を示しています。

例: ライフサイクルポリシーを作成する

ライフサイクルポリシーを作成するには、create-lifecycle-policy コマンドを使用します。構文を簡略化するために、この例では、ポリシーの詳細を含む JSON ファイル、policyDetails.json を参照しています。

aws dlm create-lifecycle-policy --description "My first policy" --state ENABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://policyDetails.json

次は、policyDetails.json ファイルの例です。

{ "ResourceTypes": [ "VOLUME" ], "TargetTags": [ { "Key": "costcenter", "Value": "115" } ], "Schedules":[ { "Name": "DailySnapshots", "TagsToAdd": [ { "Key": "type", "Value": "myDailySnapshot" } ], "CreateRule": { "Interval": 24, "IntervalUnit": "HOURS", "Times": [ "03:00" ] }, "RetainRule": { "Count":5 } } ] }

成功すると、このコマンドは新しく作成されたポリシーの ID を返します。出力例を次に示します。

{ "PolicyId": "policy-0123456789abcdef0" }

例: ライフサイクルポリシーを表示する

ライフサイクルポリシーに関する情報を表示するには、get-lifecycle-policy コマンドを使用します。

aws dlm get-lifecycle-policy --policy-id policy-0123456789abcdef0

出力例を次に示します。これには、指定した情報と AWS によって挿入されたメタデータが含まれます。

{ "Policy":{ "Description": "My first policy", "DateCreated": "2018-05-15T00:16:21+0000", "State": "ENABLED", "ExecutionRoleArn": "arn:aws:iam::210774411744:role/AWSDataLifecycleManagerDefaultRole", "PolicyId": "policy-0123456789abcdef0", "DateModified": "2018-05-15T00:16:22+0000", "PolicyDetails": { "ResourceTypes": [ "VOLUME" ], "TargetTags": [ { "Value": "115", "Key": "costcenter" } ], "Schedules": [ { "TagsToAdd": [ { "Value": "myDailySnapshot", "Key": "type" } ], "RetainRule": { "Count": 5 }, "CreateRule": { "Interval": 24, "IntervalUnit": "HOURS", "Times": [ "03:00" ] }, "Name": "DailySnapshots" } ] } } }

例 ライフサイクルポリシーを変更するには

ライフサイクルポリシーに関する情報を変更するには、update-lifecycle-policy コマンドを使用します。構文を簡略化するために、この例では、ポリシーの詳細を含む JSON ファイル、policyDetailsUpdated.json を参照しています。

aws dlm update-lifecycle-policy --state DISABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole" --policy-details file://policyDetailsUpdated.json

次は、policyDetailsUpdated.json ファイルの例です。

{ "ResourceTypes":[ "VOLUME" ], "TargetTags":[ { "Key": "costcenter", "Value": "120" } ], "Schedules":[ { "Name": "DailySnapshots", "TagsToAdd": [ { "Key": "type", "Value": "myDailySnapshot" } ], "CreateRule": { "Interval": 12, "IntervalUnit": "HOURS", "Times": [ "15:00" ] }, "RetainRule": { "Count" :5 } } ] }

更新されたポリシーを表示するには、get-lifecycle-policy コマンドを使用します。状態、タグの値、スナップショットの間隔、およびスナップショットの開始時刻が変更されたことがわかります。

例: ライフサイクルポリシーを削除する

ライフサイクルポリシーを削除し、ポリシーで指定されたターゲットタグを解放して再利用できるようにするには、delete-lifecycle-policy コマンドを使用します。

aws dlm delete-lifecycle-policy --policy-id policy-0123456789abcdef0

API を使用した Amazon DLM の操作

Amazon Data Lifecycle Manager API リファレンス は、Amazon DLM クエリ API の各アクションとデータ型の説明と構文を提供します。

また、AWS SDK の 1 つを使用して、使用しているプログラミング言語またはプラットフォームに合わせた API にアクセスすることもできます。詳細については、AWS SDK を参照してください。

スナップショットライフサイクルのモニタリング

次の機能を使用して、スナップショットのライフサイクルをモニタリングできます。

コンソールと AWS CLI

Amazon EC2 コンソールまたは AWS CLI を使用してライフサイクルポリシーを表示できます。ポリシーによって作成された各スナップショットには、タイムスタンプとポリシー関連のタグがあります。タグを使用してスナップショットをフィルタリングして、意図したとおりにバックアップが作成されていることを確認できます。コンソールを使用したライフサイクルポリシーの表示の詳細については、「ライフサイクルポリシーを表示するには」を参照してください。CLI を使用したライフサイクルポリシーに関する情報の表示の詳細については、「例: ライフサイクルポリシーを表示する」を参照してください。

CloudWatch イベント

Amazon EBS と Amazon DLM は、ライフサイクル・ポリシーアクションに関連するイベントを発行します。AWS Lambda と Amazon CloudWatch Events を使用すると、プログラムによるイベント通知を処理できます。詳細については、Amazon CloudWatch Events ユーザーガイド を参照してください。

利用できるイベントは次のとおりです。

  • createSnapshotCreateSnapshot アクションが成功または失敗したときに生成される Amazon EBS イベント。詳細については、「Amazon EBS 用の Amazon CloudWatch Events」を参照してください。

  • DLM Policy State Change— ライフサイクルポリシーがエラー状態になったときに生成される Amazon DLM イベント。このイベントには、エラーを引き起こした原因の説明が含まれています。次に、IAM ロールによって付与されたアクセス権限が不十分な場合のイベントの例を示します。

    { "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "DLM Policy State Change", "source": "aws.dlm", "account": "123456789012", "time": "2018-05-25T13:12:22Z", "region": "us-east-1", "resources": [ "arn:aws:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" ], "detail": { "state": "ERROR", "cause": "Role provided does not have sufficient permissions", "policy_id": "arn:aws:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" } }

    制限を超えた場合のイベントの例を次に示します。

    { "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "DLM Policy State Change", "source": "aws.dlm", "account": "123456789012", "time": "2018-05-25T13:12:22Z", "region": "us-east-1", "resources": [ "arn:aws:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" ], "detail":{ "state": "ERROR", "cause": "Maximum allowed active snapshot limit exceeded", "policy_id": "arn:aws:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" } }

AWS CloudTrail

AWS CloudTrail を使用すると、ユーザーのアクティビティや API の使用状況を追跡して、社内ポリシーや規制基準への準拠を実証することができます。詳細については、AWS CloudTrail User Guide を参照してください。