AWS Config ルールが機能していません。この問題を解決するには、どうすればよいですか?
解決方法
アクセス許可、リソーススコープ、設定変更項目など、さまざまな問題により、管理された AWS Config ルールが機能しなくなる可能性があります。機能しない AWS Config ルールを解決するには、以下のトラブルシューティング手順を試してください。
注: AWS コマンドラインインターフェイス (AWS CLI) のコマンド実行時にエラーが発生した場合は、最新バージョンの AWS CLI を使用していることを確認してください。
一般的な AWS Config ルールのトラブルシューティング
- 設定レコーダーが、ルールに必要なすべてのリソースタイプ (例えば、AWS። EC2።Instance など) を記録していることを確認します。
- AWS Config コンソールを開き、ナビゲーションペインで [ルール] を選択します。[コンプライアンス] フィールドに [結果が報告されていません] または [スコープにリソースがありません] と表示されている場合は、AWS 管理ルールのセットアップとアクティブ化のステップ 8 を参照してください。
- 評価時間が報告されず、評価が失敗したことを示す場合は、AWS CloudTrail ログの PutEvaluations API コールで報告されたエラーを確認します。
- AWS CloudTrail コンソールを開き、ナビゲーションペインで [イベント履歴] を選択します。ログをフィルターするには、ドロップダウンから [イベントソース] を選択し、検索フィールドに config.amazonaws.com と入力します。フィルタされたログの結果で、 アクセスが拒否されたエラーを確認します。
- 定期的なトリガーとなる AWS Config ルールについては、CloudTrail コンソールのイベント履歴ダッシュボードにアクセスし、リソース上の関連するサービス API を確認します。
- 特定のリソース configuration( 構成 ) とコンプライアンス のタイムラインを確認します。設定変更ベースのトリガーを使用して、AWS Config ルールの変更を反映するために生成された設定項目を確認します。
- レコーダーロールの権限要件が満たされていることを確認します。これらの認証情報は、 PutEvaluations API を使用してリソース構成と公開コンプライアンスを記述するために使用されます。
- 以下の AWS CLI コマンドを実行します。ConfigRuleName を AWS Config rule name に置き換え、 RegionID を AWS リージョンに置き換えます。出力から、LastErrorMessage 値を確認します。
aws configservice describe-config-rule-evaluation-status --config-rule-names ConfigRuleName --region RegionID
カスタム AWS Config ルールのトラブルシューティング
カスタム AWS Config ルールの場合は、上記の一般的なトラブルシューティング手順に加えて、次のことを確認します。
「lambda 関数を実行できません」というエラーメッセージは、AWS Config サービスに AWS Lambda 関数を呼びだすアクセス許可がないことを示します。このエラーを解決するには、次のコマンドを実行して、必要なアクセス許可を付与します。function_name を Lambda 関数名、RegionID を AWS リージョンに、AWS アカウント ID に置き換えます。
aws lambda add-permission --function-name function_name --region RegionID --statement-id allow_config --action lambda:InvokeFunction --principal config.amazonaws.com --source-account AWS-accountID
次に、Lambda 関数のリソースポリシーの例を示します。
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "allow_config",
"Effect": "Allow",
"Principal": {
"Service": "config.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "lambda-function-arn",
"Condition": {
"StringEquals": {
"AWS:SourceAccount": "AWS-accountID"
}
}
}
]
}
Lambda 関数名と一致するユーザー名の値を持つ PutEvaluations イベントを特定します。詳細については、 errorMessage を参照してください。
- コードの実行に Lambda 関数が使用するロールが config: PutEvaluations を実行する権限がない場合は、指定されたロールにアクセス許可を追加します。
- アクセス許可が正しい場合は、Lambda 関数コードで発生する例外を確認します。詳細については、Lambda 関数に関連付けられた Amazon CloudWatch ロググループ (/aws/lambda/FunctionName) のログを確認してください。さらにデバッグログを生成するには、コードに print ステートメントを追加します。
関連情報
組織の config rules を作成または削除できないのはなぜですか?