ラーニングノート(二)-ライフサイクルポリシーとフリッターフィルタリングについて


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

初めに

  今日は仕事をしていたら、話していなかったサービスに出くわしたので、今日はここに追記しておき、ちなみに今日遭遇した問題点のいくつかをここに記録しておきます。 今日、スナップショット経由でEC2インスタンスを作成しているうちに、スナップショットはライフサイクルポリシー経由で定期的に作成・削除できることに気づきました。 そこで今日は、ライフサイクルポリシーを作成することで、ライフサイクルポリシーを作成する方法を記録します。

操作

  まずはEC2のインターフェイスに移動し、[Elastic Block Store]の下にある[ライフサイクルまマネージャー]を選択します。ライフサイクルポリシーが既に生成されているのが表示されますので、[ライフサイクルポリシーを作成]をクリックします。
file

  まず、3つの異なるポリシーの種類が表示されます。 1つ目はEBSスナップショット上のストラテジー、2つ目はAMI対応のストラテジー、3つ目はクロスアカウントのストラテジーです。 その後、インスタンスやEBSボリュームのスナップショットを作成または削除するかどうかを選択できる、さまざまなリソースタイプがあります。 最後にポリシーを宣言するための記述があります。
file

  その後、デフォルトタグの設定がありますが、これは具体的には、EBSボリュームまたはインスタンスのスナップショットをスナップショットのライフサイクルポリシーを通じて定期的に作成する際に、作成された各スナップショットにはデフォルトでこれらのタグが付いていることを意味します。
file

  このポリシーに関連性がなく、手で作成したくない場合は、後からこのポリシーにIAMロールを割り当てる必要があります。 ライフサイクルポリシーは、デフォルトのロールを作成することができます。 具体的な権限は以下の通りです。
file
file
  基本的な設定が完了したら、戦略のスケジュールのカスタマイズを開始します。 ライフサイクルポリシー 日、週、月、年、クロン式などの異なる時間の頻度を提供してくれます。
file

  その後、開始時刻を指定することもできますが、ここでは時間がグローバル標準時間を参照しているという事実に注意してください。 もしあなたが現在日本にいるのであれば、この時間にさらに9時間を足してください。 例えば、今、ライフサイクルマネージャーを設定して、自動的に09:00に日本にバックアップするようにしたい場合は、ここに00:00を記入しなければなりません。
file

  最後に、スナップショットを数量として保存するか、期間として保存するかを選択します。 数を設定すると、一度に1000スナップショットまで保存することができ、その後、古いものは自動的に削除されます。 期間を設定すれば、最大100年間保存することができます。 設定した有効期限を過ぎると、[ライフサイクルポリシー]でバックアップしたスナップショットはすべて削除されます。

file

  その後は、主にクロスアカウントやリージョンの問題で、AWSとは異なるアカウント間でスナップショットを共有することができます。 通らない地域は複製が可能ですが、これらのサービスは有料なので、ここでは掘り下げません。
file

遭遇した問題

boto3.client().decribe_instance()についての質問です。
  このメソッドは、現在のアカウントの下にあるEC2の情報を全て取得するもので、decribe_instance()メソッドの中にFilter()を追加してフィルタリングし、自分で欲しい情報をフィルタリングすることができます。 今日の作業中に、タグで関連するインスタンスを取得しようとしたのですが、フィルタ条件の設定が間違っていて取得できませんでした。 なので、似たようなことをするときは、まずすべての情報を入手してから公式の資料を見て、適切なフィルターの条件を確認することをお勧めします。
最後に describe_instances() フィルタのフォーマットを添付します。

response = client.describe_instances(
        Filters=[
            {
                'Name': 'string',
                'Values': [
                    'string',
                ]
            },
        ],
        InstanceIds=[
            'string',
        ],
        DryRun=True|False,
        MaxResults=123,
        NextToken='string'
    )

まとめ

  まだ公式のドキュメントを読む必要がありますああ、フィルタを行う方法を知っているが、フィルタのフォーマットを書いている間に、まだ間違って書かれています。

Last modified: 2024-02-05

Author