Перекрытие базового уровня патчей AWS

Вопрос или проблема

Мне нужно переопределить стандартный AWS-RunPatchBaseline на RedHatOnprem-Prod, если это Linux, и на WindowsOnprem-Prod, если это Windows. Поэтому я поместил в S3-ведро следующий json

{
  "Operation": "AWS:PatchManager.OverridePatchBaseline",
  "Parameters": {
    "BaselineId": "",
    "Replace": {
      "Linux": {
        "PatchBaselineId": "RedHatOnprem-Prod"
      },
      "Windows": {
        "PatchBaselineId": "WindowsOnprem-Prod"
      }
    }
  }
}

и настроил URL S3 как переопределение базового уровня, но я получаю следующую ошибку

Invoke-PatchBaselineOperation : Предоставленное BaselineOverride является некорректным json{
  "Operation": "AWS:PatchManager.OverridePatchBaseline",
  "Parameters": {
    "BaselineId": "",
    "Replace": {
      "Linux": {
        "PatchBaselineId": "RedHatOnprem-Prod"
      },
      "Windows": {
        "PatchBaselineId": "WindowsOnprem-Prod"
      }
    }
  }
}
At C:\ProgramData\Amazon\SSM\InstanceData\mi-03d22f5a642181636\document\orchestration\4f13d6a6-3136-4f65-b767-342d5669e
4fd\PatchWindows\_script.ps1:204 char:13
+ $response = Invoke-PatchBaselineOperation -Operation Install -Snapsho ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Amazon.Patch.Ba...UpdateOperation:InstallWindowsUpdateOperation) [Inv 
   oke-PatchBaselineOperation], InvalidDataException
    + FullyQualifiedErrorId : PatchBaselineOperations,Amazon.Patch.Baseline.Operations.PowerShellCmdlets.InvokePatchBa 
   selineOperation
Исключение при вызове "ToString" с "0" аргументами: "Ссылка на объект не установлена на экземпляр объекта."
At C:\ProgramData\Amazon\SSM\InstanceData\mi-03d22f5a642181636\document\orchestration\4f13d6a6-3136-4f65-b767-342d5669e
4fd\PatchWindows\_script.ps1:208 char:5
+     $response.tostring()
+     ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : NullReferenceException
не удалось выполнить команды: код завершения 0xffffffff

Может кто-то помочь мне в этом?
Спасибо

Ответ или решение

Чтобы исправить ошибку, с которой вы столкнулись при попытке переопределения стандартного AWS-RunPatchBaseline с помощью вашего JSON-файла, необходимо убедиться, что структура JSON файла правильная и соответствует требованиям.

1. Проверьте правильность формата JSON

Ваш JSON файл, согласно предоставленному коду, выглядит корректно на первый взгляд, однако важно контролировать все ключи и значения. Попробуйте следующий вариант:

{
  "Operation": "AWS:PatchManager.OverridePatchBaseline",
  "Parameters": {
    "BaselineId": "AWS-RunPatchBaseline", 
    "Replace": {
      "Linux": {
        "PatchBaselineId": "RedHatOnprem-Prod"
      },
      "Windows": {
        "PatchBaselineId": "WindowsOnprem-Prod"
      }
    }
  }
}

2. Убедитесь, что указан правильный BaselineId

Убедитесь, что поле BaselineId содержит ID существующего патч-базиса, который вы хотите переопределить. В примере выше я добавил значение "AWS-RunPatchBaseline" для ясности. Если вы хотите изменить именно его, укажите корректное значение.

3. Загружайте файл в S3

После редактирования JSON файла убедитесь, что вы загружаете его в правильное S3-место, а также проверьте, что у вас есть необходимые разрешения для доступа к этому файлу.

4. Проверка прав доступа

Убедитесь, что IAM политика, назначенная вашей роли EC2 или SSM, имеет разрешение на доступ к S3 и другим ресурсам, необходимым для выполнения операции.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:OverridePatchBaseline"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/YOUR_FILE_NAME.json"
        }
    ]
}

5. Проверка корректности S3 URL

Проверьте URL для вашего JSON файла в S3. Он должен соответствовать формату https://s3.amazonaws.com/имя_вашего_бокета/имя_вашего_файла.json.

6. Запуск команды

Запустите вашу команду или скрипт заново. Если проблема продолжает возникать, попробуйте включить дополнительное логирование, чтобы отслеживать процесс выполнения и выявить, на каком этапе возникает ошибка.

7. Обратитесь в поддержку AWS

Если после выполнения всех вышеперечисленных шагов проблема не решится, рекомендуется обратиться в службу поддержки AWS для получения помощи по отладке. У них есть доступ к дополнительным логам и информации, которые могут помочь в диагностике проблемы.

Надеюсь, данные рекомендации помогут вам настроить переопределение патч-базиса корректно. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...