カスタム Lambda ルール (Amazon EC2 の例) - AWS Config

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

カスタム Lambda ルール (Amazon EC2 の例)

この手順では、各 EC2 インスタンスが t2.micro タイプであるかどうかを評価するカスタム Lambda ルールを作成するプロセスを示します。AWS Config は、このルールに対してイベントベースの評価を実行します。つまり、インスタンスの設定変更が AWS Config で検出されるたびにインスタンスの設定を確認します。AWS Config は t2.micro インスタンスに準拠のフラグを付け、他のすべてのインスタンスに非準拠のフラグを付けます。コンプライアンスのステータスが AWS Config コンソールに表示されます。

この手順で最良の結果を得るには、AWS アカウント内に 1 つ以上の EC2 インスタンスが必要です。インスタンスには、少なくとも 1 つの t2.micro インスタンスと他のタイプが混在している必要があります。

このルールを作成するには、最初に AWS Lambda コンソールで設計図をカスタマイズして AWS Lambda 関数を作成します。次に、AWS Config でカスタム Lambda ルールを作成し、このルールを関数に関連付けます。

カスタム Config ルール用の AWS Lambda 関数の作成

  1. AWS Management Console にサインインして AWS Lambda コンソール (https://console.aws.amazon.com/lambda/) を開きます。

  2. AWS Management Console メニューで、リージョンセレクターが AWS Config ルールをサポートするリージョンに設定されていることを確認します。サポートされているリージョンのリストについては、AWS Config の「Amazon Web Services 全般のリファレンス のリージョンとエンドポイント」を参照してください。

  3. AWS Lambda コンソールで、[Create Lambda function] (Lambda 関数の作成) を選択します。

  4. 設計図の使用 を選択します。検索バーに [config-rule-change-triggered] と入力します。フィルター結果で設計図を選択し、[Configure] (設定) をクリックします。

  5. トリガーを設定する ページで、次に進む をクリックします。

  6. Basic information ページで、以下の手順を完了します。

    1. Function name に「InstanceTypeCheck」と入力します。

    2. [Execution role] (実行ロール) ドロップダウンリストで、[Create new role from AWS Policy templates] (ポリシーテンプレートから新しいロールを作成) を選択します。

    3. ランタイムNode.js を選択したままにします。

    4. [Role name] (ロール名) に名前を入力します。

    5. [Policy templates] (ポリシーテンプレート) で、[AWS Config Rules permission] (Config ルールのアクセス許可)を選択します。

    6. [Lambda function code function] (Lambda 関数コード関数) では、事前設定されたコードを保持します。関数の Node.js コードはコードエディタで提供されます。この手順では、コードを変更する必要はありません。

    7. 詳細を確認し、[Create function] (関数の作成) をクリックします。AWS Lambda コンソールに関数が表示されます。

  7. 関数が正しく設定されていることを確認するために、以下のステップに従ってテストします。

    1. [Function overview] (関数の概要) の下にあるメニューから [Test] (テスト) をクリックしてから、[Configure test event] (テストイベントの設定) をクリックします。

    2. [Template] (テンプレート) で、AWS Config [Configuration Item Change Notification] (設定項目の変更の通知) をクリックします。

    3. [Name] (名前) に、名前を入力します。

    4. [Test] (テスト) をクリックします。AWS Lambda はイベントの例を使用して関数をテストします。関数が正常に機能している場合は、次のようなエラーメッセージが 実行結果: に表示されます。

      { "errorType": "InvalidResultTokenException," "errorMessage": "Result Token provided is invalid", . . .

      関数が正常に実行されるのは、AWS Config から result token を受け取った場合に限られるため、InvalidResultTokenException は予想どおりの結果です。result token は、評価をもたらした AWS Config ルールとイベントを識別します。また、評価とルールを関連付けます。この例外は、結果を AWS Config に送信するために必要なアクセス許可が関数にあることを示しています。アクセス許可がなければ、エラーメッセージとして not authorized to perform: config:PutEvaluations と表示されます。このエラーが発生した場合は、関数に割り当てたロールを更新して config:PutEvaluations アクションを許可するように変更し、関数のテストをやり直します。

Amazon EC2 インスタンスを評価するためのカスタム Lambda ルールの作成

  1. AWS Config コンソール (https://console.aws.amazon.com/config/) を開きます。

  2. AWS Management Console メニューで、リージョンセレクターが、カスタム Lambda ルール用の AWS Lambda 関数を作成したのと同じリージョンに設定されていることを確認します。

  3. [Rules] (ルール) ページで、[Add rule] (ルールの追加) を選択します。

  4. [Specify rule type] (ルールタイプの指定) ページで [Create custom rule] (カスタムルールの作成) をクリックします。

  5. [Configure rule] (ルールの設定) ページで、以下のステップを完了します。

    1. [Name] (名前) に、「InstanceTypesAreT2micro」と入力します。

    2. 説明 に「Evaluates whether EC2 instances are the t2.micro type」と入力します。

    3. [AWS Lambda function ARN] (関数の ARN) で、AWS Lambda から関数に割り当てられた ARN を指定します。

      注記

      このステップで指定する ARN に $LATEST 修飾子を含めることはできません。ARN はバージョン修飾子なしで指定するか、$LATEST 以外の修飾子を使用して指定します。AWS Lambda は関数のバージョニングをサポートしており、各バージョンに割り当てられる ARN には修飾子が使用されます。AWS Lambda では、最新バージョンに $LATEST 修飾子を使用します。

    4. [Trigger type] (トリガータイプ)で、[When configuration changes] (設定変更時)を選択します。

    5. [Scope of changes] (変更範囲) で、[Resources] (リソース) を選択します。

    6. [Resource] (リソース) で、[Resource Type] (リソースタイプ) ドロップダウンリストから [AWS EC2 Instance] (EC2 インスタンス) を選択します。

    7. [Rule parameters] (ルールのパラメータ) セクションで、AWS Lambda 関数で評価するルールパラメータと必要な値を指定する必要があります。この手順の関数では、desiredInstanceType パラメータを評価します。

      [Key] (キー) に、「desiredInstanceType」と入力します。Value に、「t2.micro」と入力します。

  6. Next を選択します。[Review and create] (確認と作成) ページで、ルールに関する詳細を確認し、[Add rule function] (ルール関数の追加) をクリックします。新しいルールが [Rules] (ルール) ページに表示されます。

    AWS Config で AWS Lambda 関数の評価結果を受け取るまで、コンプライアンスには [Evaluating...] と表示されます。ルールと関数が正常に動作している場合は、結果の概要が数分後に表示されます。例えば、[2 noncompliant resource(s)] (2 つの準拠していないリソース) という結果はインスタンスのうち 2 つが t2.micro インスタンスではないことを示します。[Compliant] (準拠) という結果はすべてのインスタンスが t2.micro であることを示します。結果は、更新ボタンを使用して更新できます。

    ルールまたは関数が正常に動作していない場合は、[Compliance] (コンプライアンス) に以下のいずれかが表示されます。

    • [No results reported] (報告される結果がありません) - AWS Config でルールに対してリソースが評価されました。ルールがスコープ内の AWS リソースに適用されなかったか、指定したリソースが削除されたか、または評価結果が削除されました。評価結果を取得するには、ルールを更新するか、スコープを変更するか、または [Re-evaluate] (再評価) を選択します。

      スコープに [Resources] (リソース) の AWS [EC2 Instance] (EC2 インスタンス)が含まれていることを確認して、もう一度試してください。

    • [No resources in scope] (対象にリソースがありません) - 記録された AWS Config リソースは、このルールのスコープ内にないため、AWS ではこのルールに対してリソースを評価できません。評価結果を取得するには、ルールを編集してスコープを変更するか、[Settings] ページで記録対象の AWS Config のリソースを追加します。

      AWS Config で EC2 インスタンスを記録していることを確認します。

    • [Evaluations failed] (評価が失敗しました) - 問題の原因を判断するには、ルール名を選択して詳細ページを開き、エラーメッセージを確認します

ルールが正常に動作して AWS Config から評価結果が返された場合は、ルールのコンプライアンスステータスにどの条件が影響しているかを特定できます。準拠していないリソース (ある場合) とその理由を確認できます。詳細については、「設定のコンプライアンスの確認」を参照してください。