%20%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%3A%20arn%3Aaws%3Aiam...%20%E3%81%AB%E3%81%AF%E3%80%81robomaker%3ACreateSimulationJob%20%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%A8%A9%E9%99%90%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93.png)
meta.stackexchange.com#141944私のような「AWS + 個人使用」に関する質問はここで尋ねることができると示唆されているので、正しいサイトにいることを願っています。
チュートリアルに従ってAWS Robomaker
(aws.amazon.com)「AWS RoboMaker でコンテナを使用してロボットおよびシミュレーション アプリケーションを作成して実行する」セクションの手順 6 で、次のコマンドを実行すると、エラー (creds が置き換えられました) が発生して失敗します。
何が足りないか、何が間違っているのでしょうか? 基本的にこの AWS アカウントを新たに作成したので、それほど多くの構成は行われていません。
$ aws robomaker create-simulation-job --cli-input-json file://create_simulation_job.json
An error occurred (AccessDeniedException) when calling the CreateSimulationJob operation: User: arn:aws:iam::292945459999:user/fname.lname is not authorized to perform: robomaker:CreateSimulationJob on resource: arn:aws:robomaker:us-east-1:292945459999:simulation-application/robomaker-helloworld-sim-app/1675482941456
create_simulation_job.json の内容
(チュートリアルでは不明瞭なので、Robomaker 上の robomaker-helloworld-sim-app シミュレーション アプリから「application」の ARN を取得すると推測しました)
"maxJobDurationInSeconds": 3600,
"iamRole": "arn:aws:iam::292945459999:role/RoboMaker-HelloWorld-Role",
"robotApplications": [
{
"application": "arn:aws:robomaker:us-east-1:292945459999:simulation-application/robomaker-helloworld-sim-app/1675482941456",
"applicationVersion": "$LATEST",
"launchConfig": {
"environmentVariables": {
"ROS_IP": "ROBOMAKER_ROBOT_APP_IP",
"ROS_MASTER_URI": "http://ROBOMAKER_ROBOT_APP_IP:11311",
"GAZEBO_MASTER_URI": "http://ROBOMAKER_SIM_APP_IP:11345"
},
"streamUI": false,
"command": [
"roslaunch", "hello_world_robot", "rotate.launch"
]
},
"tools": [
{
"streamUI": true,
"name": "robot-terminal",
"command": "/entrypoint.sh && xfce4-terminal",
"streamOutputToCloudWatch": true,
"exitBehavior": "RESTART"
}
]
}
],
"simulationApplications": [
{
"application": "arn:aws:robomaker:us-east-1:292945459999:simulation-application/robomaker-helloworld-sim-app/1675482941456",
"launchConfig": {
"environmentVariables": {
"ROS_IP": "ROBOMAKER_SIM_APP_IP",
"ROS_MASTER_URI": "http://ROBOMAKER_ROBOT_APP_IP:11311",
"GAZEBO_MASTER_URI": "http://ROBOMAKER_SIM_APP_IP:11345",
"TURTLEBOT3_MODEL":"waffle_pi"
},
"streamUI": true,
"command": [
"roslaunch", "hello_world_simulation", "empty_world.launch"
]
},
"tools": [
{
"streamUI": true,
"name": "gzclient",
"command": "/entrypoint.sh && gzclient",
"streamOutputToCloudWatch": true,
"exitBehavior": "RESTART"
}
]
}
]
}
IAM ユーザーには次の権限があります。AdministratorAccess, AWSDeepRacerRoboMakerAccessPolicy, AWSRoboMaker_FullAccess
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
$ aws --version
aws-cli/1.27.64 Python/3.8.10 Linux/5.4.0-137-generic botocore/1.29.64
答え1
自分で決意した。
私考えるaws robomaker create-robot-application
コマンドを実行するのを忘れましたチュートリアル (aws.amazon.com)「Robomaker -> 開発 -> ロボット アプリケーション」にロボット アプリが表示されなかったため、まず (再) 実行しました:
aws robomaker create-robot-application \
--name $robotapp \
--robot-software-suite name=General \
--environment uri=$ecruri/$robotapp:latest
次に、ファイル内の ARN をcreate_simulation_job.json
create-robot-application が返した ARN に置き換えてaws robomaker create-simulation-job
コマンドを実行すると、今度は成功し、「Robomaker -> シミュレーション実行 -> シミュレーション ジョブ」に予想どおりシミュレーション ジョブが表示されます。
OP の create_simulation_job.json には、明らかに間違っている点が 1 つあります。「robot app」の ARN が期待される場所に「sim app」の ARN を渡していました (ただし、エラー メッセージではそれが明確に示されていませんでした)。
"robotApplications": [
{
"application": "arn:aws:robomaker:us-east-1:292945459999:simulation-application/robomaker-helloworld-sim-app/1675482941456",
: