상세 자습서: 샘플 애플리케이션을 빌드하면서 세부 정보를 학습합니다. - 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: 줄 뒤에 다음 두 줄을 삽입합니다.

    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. 다음 명령 중 하나를 실행합니다.

    • 도커: 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 맞춤형 App의 수명 주기를 관리하지 않습니다. 사용자 지정 앱을 시작해야 합니다. 시뮬레이션 클럭을 시작하기 전에 사용자 지정 앱을 시작하는 것이 가장 좋지만, 클럭을 시작한 후에 사용자 지정 앱을 시작할 수도 있습니다.

      StartAppAPI를 호출하여 맞춤형 앱을 시작할 수 있습니다.

      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의 값은 앱 코드가 바인딩되어야 하는 포트 번호입니다. 의 Actual 값은 앱에 연결할 때 클라이언트에 SimSpace Weaver 노출하는 포트 번호입니다. SimSpace Weaver Declared포트를 포트에 매핑합니다. Actual

      참고

      에 설명된 절차를 사용하여 시작된 모든 맞춤형 App의 IP 주소 및 포트 번호를 가져올 수 있습니다. 맞춤형 App의 IP 주소 및 포트 번호 가져오기

  8. 시계를 시작합니다.

    • 시뮬레이션을 처음 만들면 클럭이 있지만 실행되지는 않습니다. 클럭이 실행되지 않을 때는 시뮬레이션이 클럭의 상태를 업데이트하지 않습니다. 클럭을 시작하면 앱에 틱이 전송되기 시작합니다. 틱이 표시될 때마다 공간 앱은 소유한 엔티티를 단계별로 살펴보고 결과를 커밋합니다. SimSpace Weaver

      참고

      클럭을 시작하는 데 30~60초가 걸릴 수 있습니다.

      StartClock API를 호출하세요.

      aws simspaceweaver start-clock --simulation simulation-name
      참고

      StartClock API는 ListSimulations API를 사용하여 찾을 수 있는 simulation-name을 사용합니다.

      aws simspaceweaver list-simulations
퀵 스타트 파라미터
  • -h, --help

    • 이 파라미터를 나열하세요.

  • --클린

    • 빌드하기 전에 빌드 디렉토리의 내용을 삭제하세요.

  • --al2

    • Docker 대신 네이티브 머신에서 직접 빌드합니다. WSL과 같은 Amazon Linux 2 환경에서 실행하는 경우에만 사용하십시오.

  • --업로드 전용

    • 스키마와 앱 압축만 Amazon S3에 업로드하고 시뮬레이션을 시작하지 마십시오.

  • --nobuild

    • 프로젝트 재빌드는 건너뛰세요.

  • --컨테이너 없음

    • 스키마에 나열된 시뮬레이션 컨테이너를 다시 빌드하지 않아도 됩니다.

  • --consoleclient

    • config.py 목록에 있는 콘솔 클라이언트를 자동으로 빌드하고 연결합니다.

  • --schema 스키마

    • 이 호출에서 사용할 스키마는 무엇입니까? 기본값은 config.py '스키마' 값입니다.

  • --name NAME

    • 시뮬레이션의 이름은 무엇입니까? 기본값은 config.py 'Project_name'-날짜-시간 값입니다.

3단계: 로그 확인 (선택 사항)

SimSpace Weaver 앱의 시뮬레이션 관리 메시지와 콘솔 출력을 Amazon Logs에 CloudWatch 기록합니다. 로그 작업에 대한 자세한 내용은 Amazon CloudWatch Logs 사용 설명서의 로그 그룹 및 로그 스트림 작업을 참조하십시오.

생성하는 각 시뮬레이션은 CloudWatch Logs에 고유한 로그 그룹을 갖습니다. 로그 그룹의 이름은 시뮬레이션 스키마에 지정됩니다. 다음 스키마 스니펫에서 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-idworker-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-idservice-app-name 끝의 후행 슬래시 뒤에 오는 모든 문자입니다.

    /domain/service-domain-name/app/service-app-name/service-app-id
참고

샘플 애플리케이션에는 서비스 앱이 없습니다.

4단계: 시뮬레이션 보기

SimSpace Weaver 앱 SDK는 샘플 애플리케이션을 볼 수 있는 다양한 옵션을 제공합니다. 언리얼 엔진 개발에 대한 로컬 지원이 없는 경우 샘플 콘솔 클라이언트를 사용할 수 있습니다. 언리얼 엔진 클라이언트의 지침에서는 Windows를 사용하고 있다고 가정합니다.

콘솔 클라이언트는 발생하는 엔터티 이벤트 목록을 표시합니다. 클라이언트는 ViewApp에서 엔터티 이벤트 정보를 가져옵니다. 콘솔 클라이언트가 이벤트 목록을 표시하면 시뮬레이션의 ViewApp 및 활동을 통해 네트워크 연결을 확인합니다.

PathfindingSample 시뮬레이션은 2차원 평면에 고정된 엔터티와 움직이는 엔터티를 만듭니다. 움직이는 엔터티는 고정된 엔터티 주위를 이동합니다. 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

언리얼 엔진 클라이언트

언리얼 엔진 뷰 클라이언트 실행를 참조하세요.

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

  • --그만

    • 시뮬레이션만 중단하세요. 삭제하지 않습니다.

  • --삭제

    • 시뮬레이션만 삭제하십시오. 시뮬레이션이 STOPPED 또는 일 경우에만 작동합니다FAILED.

문제 해결

퀵 스타트 튜토리얼을 참조하십시오문제 해결.