AWS Config の s3-bucket-logging-enabled ルールの自動修復で発生するアクセス許可エラーを解決する方法を教えてください。

最終更新日: 2020 年 11 月 20 日

準拠していない Amazon Simple Storage Service (Amazon S3) バケットを自動修復するために、AWS Config の s3-bucket-logging-enabled ルールを設定しました。しかし修復処理が失敗してしまい、AWS Config コンソールには、「Action execution failed (details」というエラーのアクションステータスが表示されます。 [詳細] ページを開きましたが、問題のトラブルシューティングに必要な情報が十分に得られませんでした。

簡単な説明

AWS Config の s3-bucket-logging-enabled ルールは、AWS Systems Manager Automation ドキュメント (AWS-ConfigureS3BucketLogging) を使用して準拠していないリソースを修復します。AutomationAssumeRole パラメータとして渡される AWS Identity and Access Management (IAM) を使用して、オートメーションロールの信頼ポリシーで Systems Manager サービスを許可する必要があります。また、オートメーションロールには PutBucketLogging アクセス許可があり、ターゲット Amazon S3 バケットがログを保存するように設定する必要があります。

解決方法

より詳細なエラーメッセージを取得するには、AWS コマンドラインインターフェイス (AWS CLI) の describe-remediation-execution-status コマンドを実行してください。次に、以下の手順に従って、エラーメッセージをトラブルシューティングします。詳細については、「AWS Config で修復処理に失敗した場合、トラブルシューティングを行うにはどうすればよいですか?」を参照してください。

重要: 開始する前に、AWS CLI のインストール設定が完了していることを確認してください。AWS CLI コマンドの実行時にエラーが発生した場合は、ご利用中の AWS CLI の最新バージョンを使用していることを確認してください

「実行/キャンセルアクションの場合、ステップは失敗します。PutBucketLogging オペレーションの呼び出し中にエラーが発生しました (MalformedXML)。指定された XML の形式が正しくないか、発行されたスキーマに対して検証されませんでした。診断の詳細については、自動化サービスのトラブルシューティングガイドを参照してください」

「実行/キャンセルアクションの場合、ステップは失敗します。「PutBucketLogging オペレーションを呼び出すときにエラー (AccessDenied) が発生しました: アクセスが拒否されました」診断の詳細については、自動化サービスのトラブルシューティングガイドを参照してください」

このエラーは、AutomationAssumeRole ロールに、非準拠の S3 バケットで PutBucketLogging API を呼び出すアクセス許可がないために発生します。次のサンプルポリシーを使用して、ロールが PutBucketLogging API を呼び出すことを許可できます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutBucketLogging",
            "Resource": [
                "arn:aws:s3:::<BUCKET_NAME_1>",
                "arn:aws:s3:::<BUCKET_NAME_2>",
                "arn:aws:s3:::<BUCKET_NAME_3>"
            ]
        }
    ]
}

注: ある AWS リージョンのすべてのバケットで修復する必要がある場合は、条件キー aws:RequestedRegion を使用して、ロールのアクセス許可を特定のリージョンに制限します。

「無効な実行パラメータがシステムオートメーションに送信されました。定義された引き受けロールを引き受けることができません」

このエラーは、IAM AutomationAssumeRole ロールをシステムマネージャーオートメーションサービスによって引き受けることができないために発生します。以下のサンプルポリシーを使用して、システムマネージャーが IAM ロールを引き受けることを許可します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ssm.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}