詳細なチュートリアル: サンプルアプリケーションを構築しながら詳細を説明します - AWS SimSpace Weaver

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

詳細なチュートリアル: サンプルアプリケーションを構築しながら詳細を説明します

クイックスタートチュートリアルでは、 と quick-start.py を使用してサンプルシミュレーションを構築、開始、停止、削除する方法について説明しますstop-and-delete.py。このチュートリアルでは、これらのスクリプトの仕組みと、カスタム Weaver シミュレーションの柔軟性を最大化するためにこれらのスクリプトが実行できる追加のパラメータについて詳しく説明します。

要件

開始する前に、必ず「SimSpace Weaver の設定」の手順を完了してください。

ステップ 1: ログ記録を有効にする (オプション)

ロギングを有効にする
  1. 以下に移動します。

    sdk-folder/Samples/PathfindingSample/tools
  2. テキストエディタでスキーマファイルを開きます。

    pathfinding-single-worker-schema.yaml
  3. ファイルの冒頭で、simulation_properties: セクションを検索します。

    simulation_properties: default_entity_index_key_type: "Vector3<f32>"
  4. simulation_properties: の後に以下の 2 行を挿入します。

    log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs"
  5. simulation_properties: セクションが以下と同じであることを確認します。

    simulation_properties: log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs" default_entity_index_key_type: "Vector3<f32>"
  6. ファイルを保存し、テキストエディタを終了します。

ステップ 2: シミュレーションを開始する

クイックスタートチュートリアル で示されているように、サンプルシミュレーションを起動するための最も基本的なステップは次のとおりです。

  1. 以下に移動します。

    sdk-folder/Samples/PathfindingSample/tools/cloud
  2. 次のいずれかのコマンドを実行します。

    • Docker: python quick-start.py

    • WSL: python quick-start.py --al2

このスクリプトは、一般的なターミナルコマンドを自動化します。これらはすべて、 を使用して手動で実行できます AWS CLI。次のステップは次のとおりです。

  1. Weaver スキーマを S3 にアップロードします。

    • SimSpace Weaver はスキーマを使用してシミュレーションを設定します。スキーマは YAML 形式のプレーンテキストファイルです。詳細については、「シミュレーションの設定」を参照してください。

  2. カスタムコンテナを構築してアップロードします (オプション)。

    • スキーマがカスタムコンテナを定義している場合、クイックスタートスクリプトは Docker イメージを構築し、Amazon ECR にアップロードします。詳細については、「カスタムコンテナ」を参照してください。この機能の例については、PythonBubblesSampleスキーマを参照してください。

  3. プロジェクトをビルドします。

    • quick-start.py は、 で定義されたbuild_project関数を呼び出しますbuild.py。このステップはプロジェクトによって異なります。には PathfindingSample、CMake が使用されます。CMake および Docker コマンド。 で確認できますbuild.py

  4. ビルドアーティファクトを S3 にアップロードします。

    • S3 バケットをチェックして、すべてのアップロードが成功したことを確認できます。Amazon S3 でファイルを管理する方法については、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 バケットの作成、設定、および使用」を参照してください。

    • サンプルアプリケーションの zip と S3 バケットは、次の名前形式を使用します。

      • weaver-sample-bucket-account-number-region

      • 空間アプリケーション: ProjectNameSpatial.zip

      • (カスタム) アプリケーションの表示: ProjectNameView.zip

  5. シミュレーションを開始します。

    • これはaws simspaceweaver start-simulation AWS CLI 通話のラッパーです。詳細については、「 の AWS CLI コマンドリファレンス」を参照してください SimSpace Weaver。

    • スクリプトは、シミュレーションのステータスが STARTED または FAILED になるまでループします。シミュレーションが開始されるまで数分かかる場合があります。

  6. シミュレーションの詳細を取得します。

    • DescribeSimulation API は、シミュレーションの状態など、シミュレーションに関する詳細を提供します。シミュレーションは、以下の状態のいずれかになります。

      シミュレーションライフサイクルの状態
      1. STARTING — StartSimulation 呼び出し後の初期状態

      2. STARTED — すべての空間アプリケーションが起動し、正常に動作している

      3. STOPPING — StopSimulation 呼び出し後の初期状態

      4. STOPPED — すべてのコンピュートリソースが停止している

      5. DELETING — DeleteSimulation 呼び出し後の初期状態

      6. DELETED — シミュレーションに割り当てられたすべてのリソースが削除されている

      7. FAILED — シミュレーションに重大なエラー/障害が発生して停止している

      8. SNAPSHOT_IN_PROGRESSスナップショットが進行中

      シミュレーションの詳細を取得する
      1. ListSimulations API を呼び出します。

        aws simspaceweaver list-simulations

        このスクリプトには、以下のような各シミュレーションの詳細が表示されます。

        {
            "Status": "STARTED",
            "CreationTime": 1664921418.09,
            "Name": "MyProjectSimulation_22-10-04_22_10_15",
            "Arn": "arn:aws:simspaceweaver:us-west-2:111122223333:simulation/MyProjectSimulation_22-10-04_22_10_15",
            "TargetStatus": "STARTED"
        }
        
      2. DescribeSimulation を呼び出して、シミュレーションの詳細を取得します。simulation-name を前のステップの出力のシミュレーションの Name に置き換えます。

        aws simspaceweaver describe-simulation --simulation simulation-name

        スクリプトには、以下のように、指定したシミュレーションに関する詳細が表示されます。

        {
            "Status": "STARTED",
            "CreationTime": 1664921418.09,
            "Name": "MyProjectSimulation_22-10-04_22_10_15",
            "Arn": "arn:aws:simspaceweaver:us-west-2:111122223333:simulation/MyProjectSimulation_22-10-04_22_10_15",
            "TargetStatus": "STARTED"
        }
        
  7. カスタムアプリケーションを起動します。

    • SimSpace Weaver はカスタムアプリケーションのライフサイクルを管理しません。カスタムアプリケーションを起動する必要があります。シミュレーションクロックを開始する前にカスタムアプリケーションを起動するのがベストプラクティスですが、カスタムアプリケーションはシミュレーションクロックを開始した後でも起動できます。

      StartApp API を呼び出してカスタムアプリケーションを起動できます。

      aws simspaceweaver start-app --simulation simulation-name --name app-name --domain domain-name

      StartApp API コールは、指定した名前を使用してカスタムアプリケーションの新しいインスタンスを作成して起動します。既に存在するアプリケーション名を指定すると、エラーが返されます。特定のアプリケーション (インスタンス) を再起動する場合は、まずそのアプリケーションを停止して削除する必要があります。

      注記

      カスタムアプリケーションの起動前は、シミュレーションのステータスは STARTED である必要があります。

      サンプルアプリケーションには、シミュレーションを表示する ViewApp カスタムアプリケーションが用意されています。このアプリケーションは、シミュレーションクライアントを接続するための静的 IP アドレスとポート番号を提供します (これについてはこのチュートリアルの後のステップで行います)。domain は、同じ実行コードと起動オプションを持つアプリケーションのクラスと考えることができます。app name はアプリケーションのインスタンスを識別します。 SimSpace Weaver 概念の詳細については、「」を参照してくださいSimSpace Weaver の主要なコンセプト

      DescribeApp API を使用して、起動後にカスタムアプリケーションのステータスを確認できます。

      aws simspaceweaver describe-app --simulation simulation-name --app app-name --domain domain-name
      このチュートリアルでビューアプリケーションを起動する
      1. StartApp に を呼び出しますViewApp

        aws simspaceweaver start-app --simulation simulation-name --name ViewApp --domain MyViewDomain
      2. DescribeApp を呼び出して、カスタムアプリケーションのステータスを確認します。

        aws simspaceweaver describe-app --simulation simulation-name --app ViewApp --domain MyViewDomain

      カスタムアプリケーション (インスタンス) のステータスが STARTED になると、DescribeApp の出力にはそのカスタムアプリケーション (インスタンス) の IP アドレスとポート番号が含まれます。以下の出力例では、IP アドレスは Address の値で、ポート番号は EndpointInfo ブロック内の Actual の値です。

      
      {
          "Status": "STARTED",
          "Domain": "MyViewDomain",
          "TargetStatus": "STARTED",
          "Simulation": "MyProjectSimulation_22-10-04_22_10_15",
          "LaunchOverrides": {
              "LaunchCommands": []
          },
          "EndpointInfo": {
              "IngressPortMappings": [
                  {
                      "Declared": 7000,
                      "Actual": 4321
                  }
              ],
              "Address": "198.51.100.135"
          },
          "Name": "ViewApp"
      }
      
      
      注記

      Declared の値はアプリケーションコードのバインド先となるポート番号です。の値は、 がクライアントに SimSpace Weaver 公開して app. SimSpace Weaver maps に接続するDeclaredポート番号ActualですActual

      注記

      で説明されている手順を使用してカスタムアプリケーションの IP アドレスとポート番号を取得する、起動したカスタムアプリケーションの IP アドレスとポート番号を取得できます。

  8. クロックを起動します。

    • シミュレーションを初めて作成したとき、クロックはありますが、作動していません。クロックが作動していないときは、シミュレーションの状態は更新されません。クロックを起動すると、アプリにティックが送信され始めます。ティックごとに、空間アプリケーションは所有するエンティティをステップスルーし、結果を にコミットします。 SimSpace Weaver

      注記

      クロックの起動には 30~60 秒かかることがあります。

      StartClock API を呼び出します。

      aws simspaceweaver start-clock --simulation simulation-name
      注記

      StartClock API は simulation-name を使用します。これは ListSimulations API を使用して検索できます。

      aws simspaceweaver list-simulations
クイックスタートパラメータ
  • -h, --help

    • これらのパラメータを一覧表示します。

  • --クリーン

    • ビルドする前に、ビルドディレクトリの内容を削除します。

  • --al2

    • Docker ではなくネイティブマシンに直接構築します。これは、WSL などの Amazon Linux 2 環境で実行されている場合にのみ使用します。

  • --uploadonly

    • スキーマとアプリの zip のみを Amazon S3 にアップロードし、シミュレーションを開始しないでください。

  • --nobuild

    • プロジェクトの再構築をスキップします。

  • コンテナなし

    • スキーマにリストされているシミュレーションコンテナの再構築をスキップします。

  • --consoleclient

    • config.py にリストされているコンソールクライアントを自動的に構築して接続します。

  • スキーマスキーマ

    • この呼び出しが使用するスキーマ。config.py のデフォルト値は「SCHEMA」です。

  • --name NAME

    • シミュレーションの名前。デフォルトでは、config.py の「PROJECT_NAME」-date-time の値になります。

ステップ 3: ログを確認する (オプション)

SimSpace Weaver は、シミュレーション管理メッセージとコンソール出力をアプリケーションから Amazon CloudWatch Logs に書き込みます。ログの操作の詳細については、「Amazon Logs ユーザーガイド」の「ロググループとログストリームの操作」を参照してください。 CloudWatch

作成する各シミュレーションには、ログに独自の CloudWatch ロググループがあります。ロググループの名前は、シミュレーションスキーマで指定されます。以下のスキーマスニペットでは、log_destination_service の値は logs です。つまり、log_destination_resource_name の値はロググループの名前です。この場合、ロググループは MySimulationLogs です。


simulation_properties:
  log_destination_service: "logs"
  log_destination_resource_name: "MySimulationLogs"
  default_entity_index_key_type: "Vector3<f32>"

DescribeSimulation API を使用して、シミュレーションを開始した後でシミュレーション用のロググループの名前を検索することもできます。

aws simspaceweaver describe-simulation --simulation simulation-name

以下の例は、ロギング設定を説明する、DescribeSimulation から出力の一部を示しています。ロググループの名前は LogGroupArn の末尾に表示されます。

   
    "LoggingConfiguration": {
        "Destinations": [
            {
                "CloudWatchLogsLogGroup": {
                    "LogGroupArn": "arn:aws:logs:us-west-2:111122223333:log-group:MySimulationLogs"
                }
            }
        ]
    },
    

各シミュレーションロググループには、いくつかのログストリームが含まれます。

  • 管理ログストリーム – SimSpace Weaver サービスによって生成されるシミュレーション管理メッセージ。

    /sim/management
  • エラーログストリーム — SimSpace Weaver サービスによって生成されるエラーメッセージ。このログストリームは、エラーがある場合にのみ存在します。 は、アプリケーションによって書き込まれたエラーを独自のアプリケーションログストリームに SimSpace Weaver 保存します (次のログストリームを参照)。

    /sim/errors
  • 空間アプリケーションログストリーム (各ワーカーの空間アプリケーションごとに 1 つ) — 空間アプリケーションによって生成されるコンソール出力。各空間アプリケーションは、独自のログストリームに書き込みます。spatial-app-id は、worker-id の末尾にあるスラッシュの後のすべての文字です。

    /domain/spatial-domain-name/app/worker-worker-id/spatial-app-id
  • カスタムアプリケーションログストリーム (カスタムアプリケーションインスタンスごとに 1 つ) — カスタムアプリケーションによって生成されるコンソール出力。各カスタムアプリケーションインスタンスは、独自のログストリームに書き込みます。

    /domain/custom-domain-name/app/custom-app-name/random-id
  • サービスアプリケーションログストリーム (サービスアプリケーションインスタンスごとに 1 つ) — サービスアプリケーションによって生成されるコンソール出力。各サービスアプリケーションは、独自のログストリームに書き込みます。service-app-id は、service-app-name の末尾にあるスラッシュの後のすべての文字です。

    /domain/service-domain-name/app/service-app-name/service-app-id
注記

サンプルアプリケーションにはサービスアプリケーションはありません。

ステップ 4: シミュレーションを表示する

SimSpace Weaver アプリケーション SDK には、サンプルアプリケーションを表示するためのさまざまなオプションが用意されています。Unreal Engine 開発のローカルサポートがない場合は、サンプルコンソールクライアントを使用できます。Unreal Engine クライアントの手順は、Windows を使用していることを前提としています。

コンソールクライアントは、エンティティイベントが発生するとそのリストを表示します。クライアントは ViewApp からエンティティイベント情報を取得します。コンソールクライアントがイベントのリストを表示すると、シミュレーション内の ViewApp およびアクティビティとのネットワーク接続を確認します。

PathfindingSample シミュレーションでは、二次元平面上に静止しているエンティティと動いているエンティティが作成されます。移動するエンティティは静止しているエンティティの周りを移動します。Unreal Engine クライアントはエンティティイベントを視覚化します。

コンソールクライアント

--consoleclient オプションquick-start.pyを含めると、 でサンプルを起動するときにコンソールクライアントが自動的に構築され、接続されます。quick-start.py が既に呼び出された後にコンソールクライアントを構築して接続するには、次の手順を実行します。

以下に移動します。

sdk-folder/Clients/TCP/CppConsoleClient

スクリプトを実行して、クライアントを構築して接続します。

python start_client.py --host ip-address --port port-number

スクリプトは以下を実行します。

  1. CMake を使用してコンソールクライアントを構築します。

  2. 指定された IP アドレスとポート番号を使用して、構築された実行可能ファイルを起動します。

    .\WeaverNngConsoleClient.exe --url tcp://ip-address:port-number

Unreal Engine クライアント

Unreal Engine ビュークライアントの起動 を参照してください。

ステップ 5: シミュレーションを停止して削除する

以下に移動します。

sdk-folder/Samples/PathfindingSample/tools/cloud

シミュレーションの名前を検索します。

aws simspaceweaver list-simulations

シミュレーションを停止して削除します。

python stop-and-delete.py --simulation simulation-name

スクリプトstop-and-delete.pyは以下を実行します。

  1. AWS CLI コマンドを呼び出してシミュレーションを停止します。

  2. AWS CLI コマンドを呼び出してシミュレーションを削除します。

stop-and-delete パラメータ
  • -h, --help

    • これらのパラメータを一覧表示します。

  • --シミュレーションシミュレーション

    • へのシミュレーションの名前 stop-and-delete

  • --stop

    • シミュレーションのみ停止します。削除しません。

  • --delete

    • シミュレーションのみを削除します。シミュレーションが STOPPEDまたは の場合にのみ機能しますFAILED

トラブルシューティング

クイックスタートチュートリアルトラブルシューティングの「」を参照してください。