AWSRoboMaker 疑难解答 - AWS RoboMaker

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

AWSRoboMaker 疑难解答

以下章节为您在使用 AWS RoboMaker 模拟、IDE 或 Simulation WorldForge 时可能遇到的错误和问题提供故障排除建议。如果您发现某个问题未在此处列出,可以使用此页底部的 Provide feedback 链接来报告。

您可以在 CloudWatch Logs 控制台中查找模拟作业的日志。默认情况下,AWSRoboMaker 会在为您的应用程序生成模拟作业时上传这些日志。如果将streamOutputToCloudWatch设置为True,则同样的行为适用于工具。您也可以在模拟作业中通过添加自定义上传配置配置上传。

有关更多信息,请参阅AWS RoboMaker 中的日志记录和监控

模拟作业

问题:模拟作业失败。

通过以下问题帮助确定根本原因,然后采取建议措施。

您的 Amazon S3 资源是否位于 AWS RoboMaker 所在的区域内?

您的机器人应用程序、模拟应用程序和输出位置必须位于 AWS RoboMaker所在的区域内。验证您的应用程序源和模拟作业输出位置。

您的机器人应用程序是否异常退出?

设置您的机器人应用程序进行模拟时出现问题。请在 Amazon CloudWatch 中查看模拟作业的机器人应用程序日志。

从模拟作业详细信息屏幕访问日志。选择 Logs (日志),然后选择一个日志流。要查找特定问题,请使用筛选条件。例如,警告错误

您的应用程序是否缺少 .so 文件?

如果您的应用程序崩溃,它可能缺少一个依赖的共享对象 (.so) 文件。在您的环境中提取应用程序包,并确认所需的共享对象库位于 /usr/lib/usr/local/lib 中。确保将依赖项添加到您的软件包 .xml 文件。

是否已将角色的 ARN 用于 AWS CLI?

在从 AWS CLI 调用 create-simulation-job 时,使用角色的完整 Amazon 资源名称(ARN),而不仅仅是角色名称。

您的角色是否具有 AWS RoboMaker 的信任策略?

如果您在从 AWS CLI 调用 create-simulation-job 时传递 IAM 角色的完整 Amazon 资源名称(ARN),则您的信任策略可能没有足够的权限。检查角色,确保该角色与下列 robomaker.amazonaws.com 具有信任关系。

{"Version": "2012-10-17", "Statement": {"Effect": "Allow", "Principal": { "Service": "robomaker.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"aws:SourceAccount": "account#" // Account where the simulation job resource is created }, "StringEquals": {"aws:SourceArn": "arn:aws:robomaker:region:account#:simulation-job/*" } } } }

条件键可以防止 AWS 服务在服务之间执行事务时被用作混淆代理人。有关条件键的更多信息,请参阅 SourceAccountSourceArn

有关查看角色访问权限和为 IAM 角色添加信任策略的详细信息,请参阅修改角色

您的角色是否有权发布到 Amazon S3?

如果您为模拟作业指定输出 Amazon S3 存储桶,则您的角色必须对此存储桶具有写入权限。更新您的信任策略以包含写入权限。以下示例信任策略将读取、列出和写入权限添加到 Amazon S3 存储桶。

{"Action": "s3:ListBucket", "Resource": [ "my-bucket/*" ], "Effect": "Allow" },{"Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "my-bucket/*" ], "Effect": "Allow" },{"Action": "s3:Put*", "Resource": [ "my-bucket/*" ], "Effect": "Allow" }

您的角色是否有权发布到 CloudWatch?

更新具有 CloudWatch 访问权限的 IAM 角色的权限策略。

{"Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": "*" }

您的应用程序是否具有不匹配的实体标签?

实体标签 (ETag) 是创建模拟时提供的 Amazon S3 对象的哈希。ETag 仅反映对对象的内容的更改,而不反映对对象的元数据的更改。如果您在 AWS RoboMaker 使用 Amazon S3 中的机器人应用程序或模拟包的内容之前更改此内容,则将出现版本不匹配的情况。

要解决此问题,请创建一个新的机器人应用程序或模拟应用程序版本,并为更新后的应用程序包提供密钥位置。有关更多信息,请参阅 创建机器人应用程序版本创建模拟应用程序版本

是否已超出子网弹性网络接口(ENI)的限制?

AWS RoboMaker 在运行模拟作业的子网中,为每个并发模拟作业使用一个弹性网络接口 (ENI)。必须为每个接口分配一个 IP 地址。要解决此问题,您可以:

删除未使用的 ENI 以释放子网中的 IP 地址。要删除未使用的 ENI,请参阅删除网络接口

使用AWS Management Console,请求增加特定AWS区域 ENI 的服务限制

是否已正确配置启动命令?

如果模拟很复杂或容器映像很大,模拟作业可能需要几分钟才能启动。如果 AWS RoboMaker 准备模拟作业的时间超过 25 分钟,则启动命令可能有问题。取消该作业,然后创建新的模拟作业。如果问题仍存在,请联系 AWS Support。

您可以使用 CloudWatch Logs 查看模拟和机器人应用程序执行日志中是否存在错误。您也可以添加自定义的终端工具来连接并排查正在运行的模拟作业的问题。

您的子网是否在 AWS RoboMaker 支持的区域内?

提供 AWS RoboMaker 支持的两个 AWS 可用区中的子网。API 响应包含受支持的 AWS 可用区的列表。

您的世界文件模型引用是否正确?

使用 CloudWatch Logs 验证世界文件中的所有模型是否正确。如果无法定位模型,您将看到以下错误。

[Wrn] [ModelDatabase.cc:340] Getting models from[http://models.gazebosim.org/]. This may take a few seconds. [Wrn] [ModelDatabase.cc:212] Unable to connect to model database using [http://models.gazebosim.org//database.config]. Only locally installed models will be available. [Err] [ModelDatabase.cc:414] Unable to download model[model://model_name] [Err] [SystemPaths.cc:429] File or path does not exist[""] Error [parser.cc:581] Unable to find uri[model://model_name]

模拟 WorldForge

问题:我的世界生成作业失败了。

如果您的世界生成作业未完成,请确保您的世界计数 floorplanCount * interiorCountPerFloorplan 大于 1 且小于 50。

问题:为什么我的世界导出作业失败了?

通过以下问题帮助确定根本原因,然后采取建议措施。

您有对 AWS RoboMaker 的信任政策吗?

如果您在从 AWS CLI 调用 create-world-export-job 时传递 IAM 角色的完整 Amazon 资源名称(ARN),则您的信任策略可能没有足够的权限。检查角色,确保该角色与下列 robomaker.amazonaws.com 具有信任关系。

{"Version": "2012-10-17", "Statement": {"Effect": "Allow", "Principal": { "Service": "robomaker.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"aws:SourceAccount": "account#" // Account where the simulation job resource is created }, "StringEquals": {"aws:SourceArn": "arn:aws:robomaker:region:account#:simulation-job/*" } } } }

条件键可以防止 AWS 服务在服务之间执行事务时被用作混淆代理人。有关条件键的更多信息,请参阅 SourceAccountSourceArn

您的角色是否有权发布到 Amazon S3?

如果您为导出作业指定输出 Amazon S3 存储桶,则您的角色必须具有此存储桶的权限。更新您的信任策略以包含下列权限:

{"Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetObject", "s3:PutObject" ], "Resource": "my-bucket" }

您是否修改或删除了为导出作业指定的存储桶?

如果您在导出作业期间更新存储桶,则导出任务可能会出现ResourceNotFound错误。

问题:世界映象有问题。

通过以下问题帮助确定根本原因,然后采取建议措施。

为什么我的门口没有门?

您只能使用版本 2 或更高版本的模板添加门。您可以将版本 1 模板更新到更高版本。有关更多信息,请参阅模拟世界模板版本、功能和变更

由于 AWS RoboMaker Simulation WorldForge 随机创建世界且独一无二,所以当您生成世界时,您指定的门配置可能在世界中并不存在。例如,您可以在模板中指定客厅和厨房之间的门,但这些房间之间可能有一面开放墙。因为有一面开放墙而不是门口,所以您无法在那里加一扇门。

为什么我的门挡住了房间入口?

门挡住房间入口是您可以用来挑战机器人的情况。要创建一个不会给机器人带来这种挑战的世界,可以执行以下操作之一:

用您的世界模板生成另一个世界。在新世界中生成的门可能不会挡住入口。

在世界模板中更改门的打开百分比。

为什么我世界映像中的墙比模拟作业或导出世界中的墙低?

AWSRoboMaker 允许您通过截断世界映像中的墙壁查看 Simulation WorldForge 世界,而不会被墙壁遮住。在您创建的世界中,墙壁高度是您在世界模板中指定的高度。

对于由版本 2 或更高版本模板生成的世界,门模型在世界映像中不会被截断。世界映像中门的高度与您创建的世界中门的高度相同。