スキップしてコンテンツを表示

ステータス FAILED のライフサイクルポリシーまたは完了したポリシーで、EC2 Image Builder ライフサイクルポリシーにイメージが残ったままである場合のトラブルシューティング方法を教えてください。

所要時間3分
0

ステータス FAILED のライフサイクルポリシーまたは完了したポリシーをトラブルシューティングしたいのですが、EC2 Image Builder ライフサイクルポリシーにイメージが残ったままです。

簡単な説明

Image Builder ライフサイクルポリシーで発生する可能性のある一般的な問題には次のようなものがあります。

  • ライフサイクルポリシーのステータスが FAILED である。
  • ライフサイクルポリシーが完了しても、AMI、スナップショット、またはコンテナイメージが使用可能なままである。

解決策

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。AWS CLI の最新バージョンを使用していることも確認してください。

ライフサイクルポリシーのステータスが FAILED である

ライフサイクルポリシーのステータスが FAILED の場合は、次のコマンドを実行して理由の記述を確認します。
注: それぞれお使いのもので、example-lifecycle-execution-id をライフサイクルポリシーの実行 ID に、example-region を AWS リージョンに置き換えます。

aws imagebuilder get-lifecycle-execution --example-lifecycle-execution-id --region example-region

出力例:

{
        "state": {
            "status": "FAILED",
            "reason": "Lifecycle execution failed. Reason: One or more resources failed."
        }

理由の記述をトラブルシューティングするには、以下を確認してください。

IAM ロールを確認する
ライフサイクルポリシーを実行するアクセス許可を Image Builder に付与するには、デフォルトの EC2ImageBuilderLifecycleExecutionRole を使用するか、カスタム AWS Identity and Access Management (IAM) ロールを作成します。カスタム IAM ロールに正しい信頼ポリシーがあり、マネージドポリシー EC2ImageBuilderLifecycleExecutionPolicy が含まれていることを確認してください。

Amazon ECR リポジトリ内のタグを確認する
Amazon Elastic Container Registry (Amazon ECR) コンテナイメージの場合、理由の記述が次のようになっているかどうかを確認してください。

「ImageBuilder にはリソースに ecr:BatchGetImage を実行する権限がありません」

前述のエラーメッセージを解決するには、LifecycleExecutionAccess: EC2 Image Builder タグを Amazon ECR リポジトリへ追加します。詳細については、「EC2 Image Builder イメージに関するライフサイクル管理の前提条件」を参照してください。

ライフサイクルポリシーが完了しても、AMI、スナップショット、またはコンテナイメージが使用可能なままである

ライフサイクルポリシーが完了しても AMI、スナップショット、またはコンテナイメージがまだ使用できる場合のトラブルシューティングを行うには、以下を確認してください。

ライフサイクルポリシーの範囲を確認する
ライフサイクルポリシーの範囲を確認するには、次のコマンドを実行します。
注: お使いのものでそれぞれ、example-lifecycle-execution-id をライフサイクルポリシーの実行 ID、example-region をリージョンに置き換えます。

aws imagebuilder get-lifecycle-execution --example-lifecycle-execution-id --region example-region

出力例:

{
    "lifecycleExecution": {
        "lifecycleExecutionId": "lce-#",
        "resourcesImpactedSummary": {
            "hasImpactedResources": false
        }

ライフサイクルポリシーが完了していても hasImpactedResources の値が false の場合は、ランタイムインスタンスがイメージリソースを識別していません。これを解決するには、ライフサイクルポリシーの [スコープ] タブを確認してください。選択したレシピとタグがすべてのイメージと一致することを確認してください。レシピとタグは、ライフサイクルポリシーがまだ適用されていない新しいリソース、またはアクティブで利用可能なリソースを含むイメージと一致する必要があります。

ライフサイクルポリシーのルール条件を確認する
ライフサイクルポリシールールの条件を確認して、削除または保持の対象としてマークされている AMI、スナップショット、コンテナイメージを特定します。ポリシーの詳細を確認するには、AWS CLI または AWS マネジメントコンソールを使用します。

AWS CLI を使用してライフサイクルポリシーの詳細を確認するには、次のコマンドを使用します。IncludeResources パラメータが true か false かを確認します。IncludeResources が「false」の場合、ライフサイクルポリシーが完了した後もポリシーのリソースは保持されます。 
注: お使いのものでそれぞれ、example-policy-arn をライフサイクルポリシー ARN、example-region をリージョンに置き換えます。

aws imagebuilder get-lifecycle-policy --lifecycle-policy-arn example-policy-arn --region example-region

出力例:

"policyDetails": [
            {
                "action": {
                    "type": "DELETE",
                    "includeResources": {
                        "amis": false,
                        "snapshots": false
                    }

AWS マネジメントコンソールを使用してライフサイクルポリシーの詳細を確認するには、次の手順を実行します。

  1. EC2 Image Builder コンソールを開きます。
  2. ポリシーを選択し、[ルール] > [ルール条件] に移動します。
  3. [関連する AMI の登録を解除してスナップショットを削除する] または [関連する ECR コンテナイメージを削除する] オプションが選択されているかどうかを確認します。これらのオプションが選択されていない場合、ポリシーリソースはライフサイクルポリシーが完了した後も保持されます。

EC2 Image Builder に属するイメージがライフサイクルルール設定に基づいて保持されていることを確認する
ライフサイクルポリシーの [削除ルール] では、[期間] または [カウント] を選択できます。[保持期間別] を選択した場合、[レシピごとに少なくとも 1 イメージを保持] オプションを選択できます。このオプションでは、このルールの影響を受ける各レシピの最新のイメージのみが保持されます。[カウント別] を選択すると、[レシピごとに特定の数のイメージを保持] を選択できます。

[保持期間別] を選択した場合は、次のコマンドを使用します。
注: お使いのものでそれぞれ、example-policy-arn をライフサイクルポリシー ARN、example-region をリージョンに置き換えます。

aws imagebuilder get-lifecycle-policy --lifecycle-policy-arn example-policy-arn --region example-region
"filter": {
    "type": "AGE",
    "value": 3,
    "unit": "YEARS",
    "retainAtLeast": 1
}

[カウント別] を選択した場合は、次のコマンドを使用します。
注: お使いのものでそれぞれ、example-policy-arn をライフサイクルポリシー ARN、example-region をリージョンに置き換えます。

aws imagebuilder get-lifecycle-policy --lifecycle-policy-arn example-policy-arn --region example-region
"filter": {
    "type": "COUNT",
    "value": 4
}

[保持期間別] オプションと [カウント別] オプションの両方で、除外ルールまたは特定のタグが付いたイメージに基づき、イメージを保持することもできます。特定のタグが付いたイメージの場合は、AWS マネジメントコンソールを使用するときに、[関連付けられたタグを持つイメージ、AMI、スナップショットを保持] オプションを有効にします。

除外ルールを確認するには、次のコマンドを使用します。
注: お使いのものでそれぞれ、example-policy-arn をライフサイクルポリシー ARN、example-tag を必要なタグ、example-region をリージョンに置き換えます。

aws imagebuilder get-lifecycle-policy --lifecycle-policy-arn example-policy-arn --region example-region
"exclusionRules": {
    "tagMap": {
        "RetainImageTag": "example-tag"
    }
}

削除されなかったイメージ、AMI、スナップショット、コンテナイメージが、ライフサイクルルール設定の保持イメージ設定と一致していないことを確認してください。たとえば、Image Builder パイプラインには出力イメージリソースが 1 つしかなく、ライフサイクルポリシーは、レシピごとに少なくとも 1 つのイメージを保持するように設定されています。

Image Builder のイメージが正しくタグ付けされていることを確認してください。
ライフサイクルポリシーがタグルールスコープを使用しており、該当するイメージ、AMI、スナップショット、コンテナイメージがアカウントに残っているかどうかを確認してください。ポリシーの完了後にこれらのイメージがアカウントに残っている場合は、イメージが正しくタグ付けされていることを確認してください。AMI、レシピ、パイプラインのタグは、タグルールスコープとしてサポートされていません。また、ライフサイクルポリシーは Image Builder イメージリソースのタグのみに基づいて実行されます。

注: 現在、AWS マネジメントコンソールまたはパイプライン設定を使用して Image Builder イメージリソースにタグを付けることはできません。

イメージリソースにタグを付けるには、CreateImage APIを使用してイメージを作成するか、TagResource APIを使用して既存のイメージリソースにタグを付けます。

**TagResource ** API を使用して既存のイメージリソースにタグを付けるには、次のコマンドを使用します。
注: お使いのものでそれぞれ、example-image-resource-arn をイメージリソース ARN に、example-region をリージョンに置き換えます。

aws imagebuilder tag-resource --resource-arn example-image-resource-arn --tags KeyName1=Value1,KeyName2=Value2 --region example-region

** 複数アカウントにわたり配布されている AMI とスナップショットが削除されていないことを確認する**
Image Builder には、関連するリソースの対象アカウントでライフサイクルアクションを実行するアクセス許可が必要です。アクセス許可を付与するには、対象アカウントでライフサイクルアクションを実行するために使用する IAM ロールを作成します。この IAM ロールは、対象アカウントで作成する必要があります。

削除に失敗した AMI では、ターゲットアカウントに Image Builder クロスアカウントライフサイクル管理用の EC2ImageBuilderCrossAccountLifecycleAccess ロールが存在することを確認してください。このロールが正しい信頼ポリシーを使用しており、Image Builder ライフサイクルのマネージドポリシー EC2ImageBuilderLifecycleExecutionPolicy が設定されていることを確認してください。または、ライフサイクルポリシーの実行に必要なアクセス許可を持つカスタムポリシーを使用してください。詳細については、「Image Builder のクロスアカウントライフサイクル管理用の IAM ロールを作成する」を参照してください。

イメージが既に削除されていても削除できないスナップショットの場合は、スナップショットを手動で削除します。

注: ライフサイクルポリシーでは、リソースあたりの同時完了数 100 回、50 のレシピとタグという制限があります。

AWS公式更新しました 2年前