コンテンツにスキップ

AWS Lambda ライフサイクルポリシー管理🔗

このドキュメントでは、Taegis Lambda関数でのS3オブジェクトタグ付け機能の使用方法と、ストレージコストを最適化するためのS3ライフサイクルポリシーの設定方法について説明します。

オブジェクトタグ付けとは🔗

オブジェクトタグ付けは、Taegis LambdaがS3オブジェクトをTaegisへ正常にアップロードした後に「処理済み」としてマークできる機能です。これにより、処理状況に基づいてオブジェクトを自動的に削除または移行するライフサイクルポリシーを作成できます。

CloudFormation オプション: EnableObjectTagging🔗

CloudFormationを使用してTaegis Lambdaをデプロイする際、EnableObjectTaggingというパラメータが表示されます。

パラメータ 説明 デフォルト
EnableObjectTagging タグベースのライフサイクルポリシーをサポートするために処理済みS3オブジェクトにタグを付与する false

有効化時(true🔗

  • Lambda関数は、正常に処理された各S3オブジェクトに TaegisProcessed=true タグを追加します。
  • CloudFormationテンプレートは、Lambdaがタグ付け操作を実行するために必要なIAM権限を作成します。
  • タグベースのライフサイクルポリシーを利用して、処理状況に基づくオブジェクト管理が可能です。

無効化時(false🔗

  • S3オブジェクトにタグは追加されません。
  • 追加のIAM権限は作成されません。
  • 時間ベースのライフサイクルポリシーのみを利用する必要があります。

タグ付けの仕組み🔗

有効化されている場合、Taegis Lambda関数は以下のように動作します。

  1. S3バケット内の新しいオブジェクトの通知を受信します。
  2. オブジェクトデータを読み取ります。
  3. データをTaegisにアップロードします。
  4. アップロードが正常に完了した後、元のS3オブジェクトに TaegisProcessed=true タグを追加します。

タグ付け操作は非同期で実行され、主要なデータ処理フローに影響を与えません。

S3ライフサイクルポリシーの設定🔗

TaegisProcessed タグを利用して、以下のような効率的なライフサイクルポリシーを作成できます。

  • 処理済みオブジェクトを迅速に削除する
  • 未処理オブジェクトはトラブルシューティングやその他の要件のために長期間保持する
  • ステータスに応じてオブジェクトを異なるストレージクラスへ移行する

ライフサイクルポリシーの例🔗

以下は、TaegisProcessed タグを利用したS3ライフサイクルポリシーの例です。

{
  "Rules": [
    {
      "ID": "Delete-Processed-Objects",
      "Status": "Enabled",
      "Filter": {
        "Tag": {
          "Key": "TaegisProcessed",
          "Value": "true"
        }
      },
      "Expiration": {
        "Days": 7
      }
    },
    {
      "ID": "Delete-All-Objects",
      "Status": "Enabled",
      "Filter": {},
      "Expiration": {
        "Days": 30
      }
    }
  ]
}

このポリシーは以下の動作を行います。

  1. 処理済みオブジェクト(TaegisProcessed=trueでタグ付けされたもの)を7日後に削除します。
  2. すべてのオブジェクト(タグに関係なく)を安全対策として30日後に削除します。

ライフサイクルポリシーの設定手順🔗

AWSコンソールでこのポリシーを設定するには、以下の手順に従ってください。

  1. AWSマネジメントコンソールにサインインし、Amazon S3コンソール(https://console.aws.amazon.com/s3/)を開きます。
  2. バケット一覧からログファイルを含むバケットを選択します。
  3. 管理 タブを選択し、ライフサイクルルールの作成 をクリックします。
  4. ルール名(例: "Delete-Processed-Objects")を入力します。
  5. ルールの範囲フィルターを使用して範囲を制限 を選択します。
  6. タグ を選択し、キーに TaegisProcessed、値に true を入力します。
  7. 次へ をクリックします。
  8. ライフサイクルルールのアクションオブジェクトの現行バージョンの有効期限を設定 を選択します。
  9. オブジェクトの有効期限を設定する日数(例: 7)を入力します。
  10. 次へ をクリックし、ルールの作成 を選択します。
  11. タグフィルターなしでより長い有効期限(例: 30日)を設定する安全対策ルールを作成するため、手順3~10を繰り返します。

既存デプロイメントでのオブジェクトタグ付け有効化🔗

既存のTaegis Lambdaデプロイメントでオブジェクトタグ付けを有効にするには、以下の手順を実施してください。

  1. Taegisポータルから最新のCloudFormationテンプレートをダウンロードします。
  2. Amazon AWS Lambdaアップデート手順に従います。
  3. CloudFormationスタックの更新時に EnableObjectTaggingtrue に設定します。
  4. スタックの更新を完了します。
  5. 上記の手順に従ってS3ライフサイクルポリシーを設定します。

オブジェクトタグ付けの利点🔗

  • コスト最適化: 処理済みデータを迅速に削除し、ストレージコストを削減できます。
  • トラブルシューティング: 未処理データを調査のために長期間保持できます。
  • 可視性: どのオブジェクトが正常に処理されたかを簡単に識別できます。
  • 自動化: 単なる時間ではなく、実際の処理状況に基づいてクリーンアップを自動化できます。

ほとんどの環境では、以下の構成を推奨します。

  • オブジェクトタグ付けを有効化(EnableObjectTagging = true
  • 2つのルールを持つライフサイクルポリシーを設定
    • 処理済みオブジェクトの7日間有効期限
    • すべてのオブジェクトの30日間安全有効期限

この構成は、コスト最適化と運用上の安全性のバランスを取り、処理済みデータを迅速に削除しつつ、正常に処理されなかったオブジェクトのためのセーフティネットを維持します。

注意事項🔗

  • Lambda関数には、オブジェクトにタグを追加するための必要なIAM権限が必要です(EnableObjectTagging = true の場合は自動的に設定されます)
  • 顧客管理キー(SSE-KMS)によるサーバーサイド暗号化を使用している場合、LambdaのIAMロールにそのキーを使用する権限があることを確認してください
  • タグ付け操作は非同期で実行され、主要なデータ処理フローに影響を与えません
  • タグ付けに失敗した場合(例: 権限の問題など)、Lambdaはエラーをログに記録しますが、他のオブジェクトの処理は継続します

AWS S3ライフサイクルポリシーの詳細については、AWSドキュメント を参照してください。