• (게임 스트리밍용) 서버 구축 하기
    • 0) https://aws.amazon.com/ko/ec2/instance-types 에서 원하는 유형을 찾기.
      • CPU, GPU, MEM, Wins, MacOS, ... 등등등 
    • 1) EC2 튜닝
      • Windows Server 2019 with Desktop Experience Locale English AMI
      • EBS 볼륨 : /dev/sda1 (gp2 Vs gp3 https://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-plan-storage-compare-volume-types.html)
      • 인스턴스 스토어 볼륨 : /dev/nvme0n1 (추후 'D: 드라이버' 으로 잡아줘야 되드라...)
    • 2) 그래픽드라이버
      • https://www.nvidia.com/Download/Find.aspx 
      • https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/install-nvidia-driver.html
      • https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/optimize_gpu.html
      • (SERVER MANAGER 실행 → Media Foundation 및 qWAVE 설치 → 재부팅 → 잘안됨... -> 쉴패!!)
    • 3) 사운드카드
      • https://tgd.kr/g/tip/8385001 식으로, "Virtual Audio Cable" 혹은 "VoiceMeeter" 설치를 하면~ 잡힘.
  • 해당 과정이 잘 안될때...
    • 그냥! "https://aws.amazon.com/marketplace" 에서 잘 만들어진 AMI 를 찾아서 쓸수가 있다!
    • ex) NVIDIA Gaming PC - Windows Server 2019
    • ex) NVIDIA RTX Virtual Workstation - WinServer 2022
      • (AWS 계정기반으로) 마플웹 상에서 '구독', '셋팅', '생성' 등을 다 할수있음. 
      • AWS 콘솔 -> AWS Marketplace -> 구독 관리 -> 관리 할수있음.
  • (게임 스트리밍용) AMI 생성 해보기
    • EC2 윈도우 서버 최신(?) 이미지 "Microsoft Windows Server 2022 Full Locale English AMI provided by Amazon" 를 기반으로...
    • (Windows Server 2019 에서는 잘 안되는 이슈 있음 ㄷㄷ;;)
    • 0) 제어판 → 날짜 및 글자 → … , 크롬 , AppData\Local\Temp\EC2Launch 바로가기 , ...
    • 1) AWS 설치
      • https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
      • https://docs.aws.amazon.com/ko_kr/powershell/latest/userguide/pstools-getting-set-up.html
      • creditial 및 config 등록
    • 2) 그래픽드라이버 설치
      • https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/WindowsGuide/install-nvidia-driver.html
      • 옵션 4 : NVIDIA 게임 드라이버(G5 및 G4dn 인스턴스)
      • 1→2→3→4→5→6→7 순서대로
    • 3) 사운드카드 잡기
      • Virtual Audio Cable
      • '' (디폴트 사운드 설정도 한번 확인)
    • 4) git 설치 및 ssh key 등록
      • 윈도우용 설치 → git bash → ssh-keygen → github 등록
    • 5) python 3.11 (환경변수 체크)
    • 6) OBS
      • 방송, 출력, 비디오 셋팅, 스크린 및 사운드 캡쳐, …
      • Tools > WebSockets Server Settings > Enable WebSockets Server 
    • 7) StartUp 등록
      • 실행 창(Win + R) → shell:startup → 원하는.exe 등록
      • 로그온이 되는 시점에 동작하는 느낌...
    • 8) OpenSSH
      • https://docs.microsoft.com/ko-kr/windows-server/administration/openssh/openssh_install_firstuse
      • https://www.vultr.com/docs/how-to-install-openssh-on-windows-server-2019-or-2022
      • 서비스 실행, 결국 public key -> authorized_keys 등록 및 인식 하는 과정에서~ 뭔가 잘 알되었던거 같음...
  • AMI EC2Launch 
    • EC2Launch v2 프로그램
      • https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/WindowsGuide/ec2launch-v2-settings.html
      • General >
        • Admin Account Password : Random 그대로 함
        • Shutdown without Sysprep 이후 → AMI 생성
        • (with Sysprep 하면, "aws ec2 run-instances -user-data 인스턴스.yaml" 옵션이 안됨?!?!?!)
      • Volumes >
        • D 드라이버 잡아줘야 되는데... 굳이 여기 할 필요 없을듯!
    • 암호 관련
      • https://repost.aws/ko/knowledge-center/ec2-windows-password-not-available-error
      • https://dev.classmethod.jp/articles/jw-if-i-created-ec2-windows-using-ami-and-i-cant-get-a-password-what-is-the-solution
    • ...
  • AMI 실행 예시
    • https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/WindowsGuide/ec2-windows-user-data.html
    • run-instances
      • aws ec2 run-instances \
            --image-id 아이디 \
            --instance-type g4dn.xlarge \
            --security-group-ids 보안그룹 \
            --key-name 키 \
            --tag-specifications 'ResourceType=instance,Tags=[{Key=k1,Value=v0}]' \
            --user-data file://run-instance.yaml
      • version: 1.1
        tasks:
          - task: setAdminAccount
            inputs:
              password:
                type: random
          - task: initializeVolume
            inputs:
              initialize: devices
              devices:
                - device: /dev/nvme0n1
                  name: MyDrive
                  letter: D
                  partition: gpt
          - task: executeScript
            inputs:
              - frequency: always
                type: powershell
                runAs: admin
                content: |-
                  New-Item -ItemType Directory -Path "D:\폴더" -Force
              - frequency: always
                type: powershell
                runAs: admin
                content: |-
                  aws s3 cp s3://FOLDER/0.mp4 D:\폴더\0.mp4
              - frequency: always
                type: powershell
                runAs: admin
                content: |-
                  aws s3 cp s3://game.zip D:\game.zip
                  Expand-Archive -Path "D:\game.zip" -DestinationPath "D:\game"
              - frequency: always
                type: powershell
                runAs: admin
                content: |-
                  Start-Process -FilePath "C:\Program Files\obs-studio\bin\64bit\obs64.exe" -WorkingDirectory "C:\Program Files\obs-studio\bin\64bit\"
              - frequency: always
                type: batch
                runAs: admin
                content: |-
                  cd "C:\코드"
                  git pull
                  copy .env_wins .env
                  pip install -r src/requirements.txt
                  pip install pywin32
                  python -X utf8 src/main.py {아큐먼트} & > /dev/null 2>&1
        #  - task: executeProgram
        #    inputs:
        #      - frequency: always
        #        path: "C:\프로그램.exe"
        #        # arguments: ['C:\프로그램.cfg']
        #        runAs: localSystem
      • 예)
      • Admin 비밀번호 랜덤
      • D 드라이버 초기화
      • 필수 디렉토리 생성
      • S3 -> 각종 리소스 다운로드 및 unzip
      • git pull 코드 (및 .env 셋팅)
      • pip install -r src/requirements.txt
      • python -X utf8 main.py 아큐먼트 & > /dev/null 2>&1
      • 원하는 프로그램 실행...
    • terminate-instances
      • ...
  • (MacOS 용) AMI 생성 해보기
    • https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-mac-instances.html
    • 0) System
      • LockScreen : Never-Never-Never
      • DockDesk : 요술램프X
      • WallPaper : 검정
      • privacy & security → full disk access → + → shift+command+G → /usr/sbin/cron
      • usr grp → Auto login → !!!
      • general → sharing → remote app script
      • timezone : ...
      • 독 : Activity, DiskUtil, … 
    • 0) 크롬, VLC, ffmpeg, OBS, ...
    • 1) python 3.11, pip3, pycharm
      • which -a python3
      • brew install python@3.11
      • vi ~/.zshrc
        • alias python=python3
        • alias pip=pip3
        • export PYTHONPATH=/Users/ec2-user/Documents/avt-aistreamer-client/src
      • source ~/.zshrc
      • python -V , pip -V , echo $PYTHONPATH
    • 2) AWS
      • aws configure → creditial 및 config 입력
    • 3) git 키등록
      • ssh-keygen
      • cat ~/.ssh/id_rsa.pub
    • ...
  • EC2 부팅 -> (로그온없이) 프로그램 자동 실행 -> 곧바로 프로세싱
    • Windows Server 2022
      • 1차시 : OpenSSH 설치후, (비번없이) ssh 접속하여 실행하면 어떻까?
        • https://www.maskaravivek.com/post/how-to-ssh-into-an-ec2-instance-using-boto3/
        • https://stackoverflow.com/questions/42645196/how-to-ssh-and-run-commands-in-ec2-using-boto3
        • 파이썬에서 "paramiko" 기반으로 자동화 하면 될까 했는데...
        • 일단, ssh 에서 실행하니... 백그라운드 모드(?) 으로만 동작이 되는거 같아 실패~
      • 2차시 : "windows ssh run gui program" 검색 -> cywin ???
      • 3차시 : PsTools -> psexec
        • https://stackoverflow.com/questions/59880794/starting-gui-programs-via-openssh-on-windows
        • https://community.home-assistant.io/t/ssh-launch-gui-application-on-windows/339704/3
        • 마찬가지로, 백그라운드 모드(?) 으로만 동작.
      • 4차시 : schtasks
        • https://stackoverflow.com/questions/70380040/starting-application-gui-on-remote-windows-from-ssh-linux
        • https://learn.microsoft.com/ko-kr/windows-server/administration/windows-commands/schtasks-create
        • ssh 으로 접속하여, schtask 만들고 실행하면~ OBS 같은 일반적인건 되는데... Unity 는 화면이 안나왔음!
        • https://towardsdatascience.com/how-to-run-unity-on-amazon-cloud-or-without-monitor-3c10ce022639
        • 가상 모니터를 설치하면 되려나...
        • But 그런데!!! 부팅 스크립트(tasks.yaml) 에서~ 2분뒤 실행하는 schtask 만들게 했는데... 실행 자체도 18 안되자나!
        • // obs.bat
          start /d "C:\Program Files\obs-studio\bin\64bit\" /b obs64.exe
          혹은
          powershell Start-Process -FilePath obs64.exe -WorkingDirectory \"C:\Program Files\obs-studio\bin\64bit\" -WindowStyle Minimized
          
          
          // 즉각 한번만 실행하기.
          schtasks /create /TN obs_exe /TR "C:\Users\Administrator\Desktop\obs.bat" /SC MONTHLY
          schtasks /run /TN obs_exe
          schtasks /delete /TN obs_exe /F
          
          
          // 2분뒤 실행하기. (파이썬 코드로...)
          now = datetime.datetime.now()
          now2 = now + datetime.timedelta(minutes=2)
          st = now2.strftime('%H:%M')
          
          input = f"schtasks /create /TN obs_exe_task /TR \"C:\\obs.bat\" /SC ONCE /st {st}"
          output = ps_util.execute(input, is_shell=True, is_non_blocking=False)
        • 아... 1818 부팅후~ 접속 세션이 없어서 안되나? 부팅 스크립트(tasks.yaml) 단계말고, ssh 접속해서 schtask 만들어 보까?
        • ...
      • 5차시 : windows rdp python
        • python RDP, pyautogui remote desktop, python remote control windows, ...
        • https://stackoverflow.com/questions/73117457/how-to-open-gui-application-on-windows-via-ssh-if-no-active-user-sessions
        • https://stackoverflow.com/questions/56949942/pyautogui-on-rdp
        • 혹시? 자동 로그인 이슈 ??? tscon ???
      • 181818 그냥 맥서버로 넘어가자 더럽다 ㅎㅎㅎ
    • MacOS 14.0
      • 여윽시! 맥은 리눅스 써뻐! 무난히 잘 설치됨
      • ssh 접속후, 실행! 잘 되는거 같았음...
        • open -a /Applications/OBS.app
        • open -a /Applications/unity.app
      • 이제 crontab -e -l 잘 하면 되겠지???
        • */1 * * * * chmod 777 boot.sh
        • */1 * * * * boot.sh > /dev/null 2>&1
      • 아놔~ 시이발~ 재부팅후 crontab 동작 했는데... 프로그램 안뜨네? 아오!!!
      • #!/bin/bash
        
        if [[ -f "/boot.log" ]]
        then
            exit 0
        fi
        
        echo "OBS" >> /boot.log
        cd /Applications && open OBS.app >> /boot.log
        sleep 1
      • 알고봤더니, 재부팅 -> (로그온없이) -> ssh -> 실행하면 오류남
        • (별첨1)
      • 대 좌절후... 맥 설정 마지막으로 보다... '자동 로그인' 및 '원격 스트립트' 활성화 후~
      • 재부팅 -> open ... -> 와ggggg 이게되네 ㅎㅎㅎㅎㅎ
      • 아... 더 진행 할 의욕 사라짐 ㅎㅋㅎ (OBS 송출까지 확인후, 크론orSSH 로 자동화)
  • EC2 인스턴스 중단 -> 재시작 -> 기존 RDP 접속 안됨 이슈
    • 우클릭 편집 → 로그온 → 새로 작성 -> 다시 된거 같음!
    • (사운드 : 리모트 서버 재생)
    • (드라이브 및 포트 : 허용)
  • RDP 접속후, 나갈때~ 리모트 사운드가 끊기는(?) 이슈
    • ...
  • base 인스턴스 기반으로 또 AMI 만들기
    • AWS 콘솔 → EC2 → base 인스턴스 → 연결 → PublicDNS 복사 및 암호
    • → RDP 클라이언트 → 컴퓨터 수정 및 저장 → 연결 → (AMI 작업) → EC2LaunchV2 → …
  • ...

(별첨1)

-끝-

'AWS' 카테고리의 다른 글

Amazon DynamoDB (정리중...)  (0) 2023.11.21
The Complete AWS SAM Workshop  (0) 2023.07.18
AWS SAM 과 Lambda 이미지 커스텀  (0) 2022.08.31
AWS SAM <- Mangum(fastAPI)  (0) 2022.08.09
Amazon EFS  (0) 2022.05.19

+ Recent posts