如何对 EC2 Image Builder 的管道故障进行故障排除?

2 分钟阅读
0

我想对 EC2 Image Builder 的管道故障进行故障排除。

简短描述

如果您的 Image Builder 管道出现故障,则会出现一条错误消息,其中会返回工作流程执行 ID,并描述您的管道故障的原因:

“工作流程执行 ID:示例工作流程 ID 失败,原因:示例原因”

流程的每个构建测试阶段都有一个相关的工作流程。容器映像还有一个额外的工作流程,在分发期间运行。此外,每个工作流程都包含了构建黄金亚马逊机器映像所需的步骤。

解决方法

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误消息,请参阅 AWS CLI 故障排除。此外,请确保您使用的是最新版本的 AWS CLI

要排查 Image Builder 管道故障,请完成以下步骤:

检查导致管道故障的工作流程阶段和步骤

要检查导致管道故障的工作流程阶段和步骤,请使用以下方法之一:

使用 API
要检查导致管道故障的工作流阶段和步骤,请针对您的 工作流程执行 ID 使用 GetWorkflowExecutionListWorkflowStepExecution API 命令。

使用 AWS 管理控制台
要使用 AWS 管理控制台检查导致管道故障的工作流程阶段和步骤,请完成以下步骤:

  1. 打开 Image Builder 控制台。
  2. 在左侧窗格中,选择 Image Pipelines(映像管道)。然后,选择您的管道。
  3. Output Images(输出映像)下,选择发生故障的 Output Image Version(输出映像版本)。
  4. Workflow(工作流程)下,选择工作流程下拉列表,然后选择发生故障的 stage(阶段)。故障阶段步骤列表将会显示。

当您确定导致管道故障的工作流程阶段步骤时,请使用以下方法进一步故障排除。

检查发送到 CloudWatch Logs 的日志

Image Builder 向 /aws/imagebuilder/ImageName 日志组和 ImageVersion/ImageBuildVersion 日志流发布了详细的工作流程日志。您可以从 Amazon CloudWatch 控制台或 Image Builder 控制台查看这些日志流。

要检查从 Image Builder 控制台发送到 CloudWatch Logs 的日志,请完成以下步骤:

  1. 打开 Image Builder 控制台。
  2. 在左侧窗格中,选择 Image Pipelines(映像管道)。然后,选择您的管道。
  3. Output Images(输出映像)下,选择发生故障的 Output Image Version(输出映像版本)。
  4. Workflow(工作流程)下,选择工作流程下拉列表,然后选择发生故障的 stage(阶段)。
  5. 选择发生故障的步骤步骤 ID
  6. 选择 Application logs(应用程序日志)。
  7. 查看 Application logs(应用程序日志)以进一步故障排除。

**注意:**如果在完成上述步骤后仍无法对问题进行故障排除,请继续使用后续方法。

检查发送到 Amazon S3 的日志

Amazon Simple Storage Service (Amazon S3) 日志显示了构建过程中 Amazon Elastic Compute Cloud (Amazon EC2) 实例活动的步骤和错误。Amazon S3 日志包括来自组件管理器的日志输出、组件定义。这些日志提供了在 Amazon EC2 实例上采取的步骤的详细 JSON 输出。

如果您在基础设施配置中指定了 Amazon S3 存储桶名称和键前缀,则可以在 S3://S3BucketName/KeyPrefix/ImageName/ImageVersion/ImageBuildVersion/WorkflowExecutionId/StepName 中找到工作流程步骤日志路径

如果您没有指定 Amazon S3 存储桶名称和键前缀,请打开 Image Builder 控制台并导航到 Troubleshooting settings(故障排除设置)。然后,在 Logs(日志)下,指定 Image Builder 可以将日志写入的 Amazon S3 存储桶。指定 Amazon S3 存储桶后,再次运行管道以收集日志并将日志存储到存储桶中。

检查 Amazon EC2 实例日志

AWS Task Orchestrator 和 Executor 组件管理器 (AWSTOE) 会在用于构建和测试新映像的实例上创建日志文件夹。每当您的组件运行时,就会创建这些日志文件夹。对于容器映像,日志文件夹存储在容器中。

**注意:**默认情况下,当管道构建失败时,Image Builder 会关闭构建实例或测试实例。要保留您的构建实例或测试实例以进行故障排除,请修改管道的基础设施配置资源的实例设置。要修改实例设置,请打开 Image Builder 控制台,并导航到基础设施配置资源的 Troubleshooting settings(故障排除设置)。然后,停用 Terminate instance on failure(故障时终止实例)选项。

此外,您还可以使用 update-infrastructure-configuration 命令来修改实例设置。请确保将 TerminateInstanceOnFailure 值设置为 false。有关更多信息,请参阅更新基础设施配置

连接到构建实例或测试实例,在以下位置找到运行时日志:

  • 对于 Linux,检查 /var/lib/amazon/toe/file_prefix_runtime_executionID 目录。

  • 对于 Windows,检查 env:ProgramFiles\Amazon\TaskOrchestratorAndExecutor\file_prefix_run time_executionID 目录。

    示例日志文件:/var/lib/amazon/toe/TOE_2021-07-01_12-34-56_UTC-0_a1bcd2e3-45f6-789a-bcde-0fa1b2c3def4

在前面的日志目录中,检查以下文件以进一步对管道故障进行故障排除:

  • application.log - 包括来自 AWSTOE 的带有时间戳的调试级别信息,这些信息与组件运行时发生的活动有关。
  • detailedoutput.json - 包括有关组件运行时应用于该组件的所有文档、阶段和步骤的运行状态、输入、输出和故障的详细信息。
  • console.log - 包括 AWSTOE 在组件运行时写入到控制台的标准输出 (stdout) 和标准错误 (stderr) 信息。
  • chaining.json - 表示 AWSTOE 应用于解析链接表达式的优化。

查看 CloudTrail 事件

如果在您的账户中激活了 AWS CloudTrail,则会记录所有构建活动。要筛选 CloudTrail 事件,请按 source: imagebuilder.amazonaws.com 进行筛选,按 username: Image Builder 进行筛选,或搜索关联的 Amazon EC2 实例 ID。这些筛选器会返回日志,显示有关您的管道的更多详细信息。

要在分发过程中对 API 跟踪记录进行故障排除,请按 username: Ec2ImageBuilderIntegrationService 筛选 CloudTrail 事件,用于在Distribution(分发)过程中对 API 跟踪记录进行故障排除。使用此方法来检索与 Image Builder 调用失败的 API 相关的信息。

相关信息

如何对 EC2 Image Builder 中的构建管道超时错误进行故障排除?

如何对失败的生命周期策略或虽已完成但映像在 EC2 Image Builder 生命周期策略中仍然可用的策略进行故障排除?

如何解决 EC2 Image Builder 中映像构建管道的 403 访问拒绝错误?

AWS 官方
AWS 官方已更新 3 个月前