记录模拟 - AWS RoboMaker

终止支持通知:2025 年 9 月 10 日, AWS 将停止对的支持。 AWS RoboMaker2025 年 9 月 10 日之后,您将无法再访问 AWS RoboMaker 控制台或 AWS RoboMaker 资源。有关过渡 AWS Batch 到以帮助运行容器化仿真的更多信息,请访问此博客文章。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

记录模拟

要从模拟作业中捕获输出文件和其他构件,您可以配置自定义上传。您可以为机器人应用程序和模拟应用程序配置自定义上传。配置自定义上传时,您指定的文件将从模拟作业上传到您提供的 Amazon S3 模拟输出位置。当您想要查看或分析模拟运行期间生成的应用程序输出或重复使用构件时,这可能很有用。

在配置自定义上传之前,您必须为模拟作业提供 Amazon S3 输出目标。 AWS RoboMaker 使用您指定的名称将匹配的文件上传到文件夹。可以在所有模拟作业工具关闭时上传匹配文件,也可以在生成时上传匹配文件,然后将其删除。

除非您将其关闭,否则默认上传配置会自动添加到您的自定义上传配置中。默认上传配置上传ROS和 Gazebo 默认日志输出。这样可以保持与过去的仿真作业输出配置的兼容性。该配置已上传ROS和 Gazebo 的默认日志输出。在控制台中配置模拟作业时,可以关闭默认上传配置。您也可以通过false在中将其设置useDefaultUploadConfigurations为来将其关闭CreateSimulationJobAPI。

您的模拟应用程序将扩展到一个 128GB 分区中,并且您拥有对该分区的写入权限。

添加自定义上传配置

要创建自定义上传配置,您需要指定指定文件在 Amazon S3 中的上传位置的名称前缀、指定要上传文件的 Unix glob 路径以及指定文件上传时间的上传行为

名称

名称是一个前缀,用于指定如何在 Amazon S3 中上传文件。它被附加到模拟输出位置以确定最终路径。

例如,如果您的仿真输出位置为 s3://amzn-s3-demo-bucket,上传配置名称为 robot-test,则您的文件将上传到 s3://amzn-s3-demo-bucket/<simid>/<runid>/robot-test

路径

路径指定要上传哪些文件。接受标准的 Unix glob 匹配规则,但须遵守以下条件:

  • 路径必须以 /home/robomaker//var/log 开头。

  • 路径不得包含反向路径表达式 (/..)。

  • 不遵循符号链接。

  • 您可以在路径中将 ** 用作超级星号。例如,指定 /var/log/**.log 将导致收集 /var/log 目录树中的所有 .log 文件。

    您也可以使用标准星号作为标准通配符。例如,/var/log/system.log*/var/log 中的 system.log_1111system.log_2222 等文件匹配。

上传行为

您可以选择以下一种上传行为:

  • 终止时上传 (UPLOAD_ON_TERMINATE) 将在模拟作业进入终止状态后上传与路径匹配的所有文件。 AWS RoboMaker 尝试上传日志的时间最长 60 分钟。

    AWS RoboMaker 只有在模拟中运行的所有工具都停止后,才会开始上传文件。

  • 使用滚动自动删除上传(UPLOAD_ROLLING_AUTO_REMOVE)可在生成时上传与路径匹配的所有文件。每 5 秒检查一次路径。文件上传后,源文件即被删除。删除文件后,如果生成了同名的新文件,则它会替换之前上传的文件。 AWS RoboMaker 在模拟中运行的所有应用程序都停止后,将对文件进行最终检查。

    使用 auto remove 进行滚动上传对于上传滚动日志很有用。将输出写入或流式传输到路径 glob 未覆盖的“活跃”文件。写完活跃文件后,将文件滚动到路径图标所覆盖的位置进行上传和删除。

    此设置可以帮助您在模拟作业中节省空间。此外,它还可以帮助您在模拟作业终止之前访问文件。

模拟作业分区大小为 128GB。如果您的模拟作业因任何原因结束,请 AWS RoboMaker 尝试上传您的自定义上传配置中指定的所有文件。

由创建的环境变量 AWS RoboMaker

AWS RoboMaker 定义以下模拟作业环境变量。

  • AWS_ROBOMAKER_SIMULATION_JOB_ID

  • AWS_ROBOMAKER_SIMULATION_JOB_ARN

  • AWS_ROBOMAKER_SIMULATION_RUN_ID

您可以从应用程序或命令行获得这些变量。例如,要在 Python 中获取当前的模拟作业 Amazon 资源名称 (ARN),请使用os.environ.get("AWS_ROBOMAKER_SIMULATION_JOB_ARN")

如果您为模拟作业指定了 Amazon 简单存储服务输出存储桶,则可以使用环境变量来查找输出路径。 AWS RoboMaker 将输出写入s3://bucket-name/AWS_ROBOMAKER_SIMULATION_JOB_ID/AWS_ROBOMAKER_SIMULATION_RUN_ID。可以使用它通过代码或命令行管理 Amazon S3 中的对象。

AWS RoboMaker 还可以处理中设置的特定环境变量CreateSimulationJobRequest,以允许机器人和仿真应用程序容器相互通信。有关更多信息,请参阅 ROS 容器常见问题