자습서: 사용자 지정 Linux 기반 AppStream 2.0 이미지 만들기 - Amazon AppStream 2.0

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자습서: 사용자 지정 Linux 기반 AppStream 2.0 이미지 만들기

이 자습서에서는 사용자에게 스트리밍할 수 있는 애플리케이션이 포함된 사용자 지정 Linux 기반 Amazon AppStream 2.0 이미지를 생성하는 방법을 설명합니다.

1단계: 이미지 빌더에 Linux 애플리케이션 설치

이 단계에서는 Linux 이미지 빌더에 연결하고 이미지 빌더에 애플리케이션을 설치합니다.

이미지 빌더에 애플리케이션을 설치하려면
  1. 다음 중 하나를 수행하여 이미지 빌더에 연결합니다.

    • AppStream 2.0 콘솔 사용(웹 연결만 해당)

    • 스트리밍 URL 생성(웹 또는 AppStream 2.0 클라이언트 연결에 해당)

      참고

      Amazon Linux GNOME 데스크톱에 ImageBuilderAdmin 사용자로 로그인하고 루트 관리자 권한을 갖게 됩니다.

  2. 필요한 애플리케이션을 설치합니다. 예를 들어 퍼블릭 yum 리포지토리에서 Chromium 브라우저를 설치하려면 먼저 터미널 애플리케이션을 열고 다음 명령을 실행합니다.

    [ImageBuilderAdmin]$ sudo yum update && sudo yum install chromium.x86_64

    참고

    신뢰할 수 있는 사이트에서만 애플리케이션을 다운로드하여 설치합니다.

2단계: 애플리케이션 최적화 매니페스트 파일 생성

이 단계에서는 1단계에서 설치한 각 애플리케이션에 대한 매니페스트 파일을 생성합니다.

애플리케이션의 실행 성능을 최적화하기 위한 매니페스트 파일을 생성하는 방법
  1. 최적화하려는 애플리케이션(예: Chromium)이 시작되어 실행 중인지 확인합니다.

  2. 터미널 창에서 다음 명령을 실행하여 애플리케이션과 관련된 프로세스를 나열합니다.

    [ImageBuilderAdmin]$ ps -ef | grep chromium

  3. 위 명령의 출력에서 루트 상위 PID를 찾습니다. 다음은 예시 출력이며, 루트 상위 PID는 16712입니다.

    [ImageBuilderAdmin]$ ps -ef | grep chromium ImageBu+ 16712 4128 0 Aug26 ? 00:00:44 /usr/lib64/chromium- browser/chromium-browser --enable-plugins --enable-extensions -- enable-user- scripts --enable-printing --enable-gpu-rasterization -- enable-sync --auto-ssl- client-auth ImageBu+ 16726 16712 0 Aug26 ? 00:00:00 /usr/lib64/chromium- browser/chromium-browser --type=zygote --no-zygote-sandbox ImageBu+ 16727 16712 0 Aug26 ? 00:00:00 /usr/lib64/chromium- browser/chromium- browser --type=zygote ImageBu+ 16731 16727 0 Aug26 ? 00:00:00 /usr/lib64/chromium- browser/chromium-browser --type=zygot
  4. 애플리케이션을 계속 실행하고 사용자에게 필요한 초기 구성 요소를 사용해야 합니다. 그러면 최적화 프로세스가 이러한 구성 요소를 캡처할 수 있습니다.

  5. 다음 콘텐츠가 포함된 스크립트 파일(예: ~/getfilestool.sh)을 생성합니다.

    #!/bin/bash ## usage getfilestool.sh $pid lsof -p $(pstree -p $1 | grep -o '([0-9]\+)' | grep -o '[0-9]\+' | tr '\012' ,)|grep REG | sed -n '1!p' | awk '{print $9}'|awk 'NF'
  6. 다음 명령을 실행하여 파일을 실행할 수 있는지 확인합니다.

    [ImageBuilderAdmin]$ chmod u+x ~/getfilestool.sh

  7. 다음 명령을 실행하여 위의 3단계에서 찾은 루트 상위 프로세스에서 실행 중인 모든 파일을 캡처하고 임시 매니페스트 파일에 저장합니다.

    [ImageBuilderAdmin]$ sudo ~/getfilestool.sh 16712 > /tmp/chromium-manifest.txt

  8. 각 애플리케이션의 줄로 구분된 텍스트 파일인 최적화 매니페스트의 내용을 확인합니다.

3단계: AppStream 2.0 애플리케이션 카탈로그 생성

이 단계에서는 이미지 빌더의 CLI 도구 AppStreamImageAssistant를 사용하여 이미지에 대한 애플리케이션을 지정하여 AppStream 2.0 애플리케이션 카탈로그를 생성합니다. 스트리밍하려는 각 애플리케이션에 대해 이름, 표시 이름, 시작할 실행 파일, 표시할 아이콘을 지정할 수 있습니다.

AppStream 2.0 애플리케이션 카탈로그를 생성하는 방법
  1. 이미지 빌더 데스크톱에서 사이드 패널로부터 또는 앱 그리드를 열어 터미널을 엽니다.

  2. AppStreamImageAssistant --help를 실행하여 사용 가능한 명령 목록을 확인합니다. 이 명령을 사용하여 애플리케이션을 추가하고 이미지를 생성합니다.

  3. 다음 명령을 실행하여 설치된 애플리케이션(예: Chromium)을 AppStream 2.0 사용자의 애플리케이션 목록에 추가합니다.

    AppStreamImageAssistant add-application \ --name Chromium \ --absolute-app-path /usr/lib64/chromium-browser/chromium-browser \ --display-name Chromium \ --absolute-icon-path /usr/share/icons/hicolor/256x256/apps/chromium-browser.png \ --absolute-manifest-path /tmp/chromium-manifest.txt

    또는 다음 명령을 실행합니다.

    AppStreamImageAssistant add-application \ --name="Chromium" \ --absolute-app-path="/usr/lib64/chromium-browser/chromium-browser" \ --display-name="Chromium" \ --absolute-icon-path="/usr/share/icons/hicolor/256x256/apps/chromium-browser.png" \ --absolute-manifest-path="/tmp/chromium-manifest.txt"
  4. 애플리케이션을 더 추가하려면 각 애플리케이션에 대해 3단계를 반복합니다.

  5. 카탈로그에 추가된 애플리케이션 목록과 아이콘 경로, 실행 파라미터와 같은 메타데이터를 보려면 다음 명령을 실행합니다.

    AppStreamImageAssistant list-applications

  6. 카탈로그에서 애플리케이션을 제거하려면 다음 명령을 실행합니다.

    AppStreamImageAssistant remove-application –-name application_name

4단계: 기본 애플리케이션 설정 및 환경 변수 생성

이 단계에서는 AppStream 2.0 사용자의 기본 애플리케이션 설정 및 환경 변수를 만듭니다. 이렇게 하면 사용자가 이러한 설정을 직접 만들거나 구성할 필요 없이 AppStream 2.0 스트리밍 세션 중에 애플리케이션을 빠르게 시작할 수 있습니다.

사용자를 위한 기본 애플리케이션 및 환경 변수를 생성하는 방법
  1. 기본 설정을 만들려는 애플리케이션을 시작합니다. 예를 들어 터미널 창에서 다음 명령을 실행하여 Chromium 브라우저를 시작합니다.

    [ImageBuilderAdmin]$ chromium-browser

  2. 애플리케이션의 설정을 구성합니다. 예를 들어 Chromium 브라우저의 홈 페이지를 https://aws.amazon.com으로 설정합니다.

  3. 다음 명령을 실행하여 Chromium의 구성을 /etc/skel에 복사합니다.

    [ImageBuilderAdmin]$ sudo mkdir /etc/skel/.config

    [ImageBuilderAdmin]$ sudo cp -R ~/.config/chromium /etc/skel/.config

  4. 환경 변수를 설정하고 스크립트 파일에 추가합니다. 예를 들어 다음 명령을 실행합니다.

    [ImageBuilderAdmin]$ echo "export FOO=BAR" | sudo tee -a /etc/profile.d/myenvvars.sh

    [ImageBuilderAdmin]$ sudo chmod +x /etc/profile.d/myenvvars.sh

5단계: 애플리케이션 및 설정 테스트

이 단계에서는 추가한 애플리케이션이 제대로 실행되고 기본 애플리케이션 설정과 환경 변수가 예상대로 작동하는지 확인합니다.

이미지 빌더에서 애플리케이션 및 기본 설정을 테스트하는 방법
  1. 루트 권한이 없는 테스트 사용자를 만듭니다. 예를 들어 터미널 창에서 다음 명령을 실행하여 이미지 빌더에서 test-user를 생성합니다.

    [ImageBuilderAdmin]$ sudo useradd -m test-user

    [ImageBuilderAdmin]$ echo -e 'Pa55w0rdas2!!!\nPa55w0rdas2!!!\n' | sudo passwd test-user

  2. 테스트 사용자로 전환합니다.

    [ImageBuilderAdmin]$ su - test-user

  3. 테스트 사용자로 애플리케이션(예: Chromium)을 실행합니다.

    [test-user]$ /usr/bin/chromium-browser

  4. 테스트 사용자가 기본 설정을 사용할 수 있는지 확인합니다(예: Chromium 홈페이지는 https://aws.amazon.com/).

  5. 테스트 사용자가 환경 변수를 사용할 수 있는지 확인합니다. 예를 들어 다음 명령을 실행합니다.

    [test-user]$ echo $FOO

    이 명령은 BAR 터미널에 출력을 표시합니다.

  6. 이 이미지 빌더에서 이미지를 생성하기 전에 다음 명령을 실행하여 테스트 사용자를 삭제합니다.

    # logout test user

    [test-user]$ logout

    # kill test user's running processes

    [ImageBuilderAdmin]$ sudo killall -u test-user

    # delete user

    [ImageBuilderAdmin]$ sudo userdel -r test-user

6단계: 이미지 생성 완료

이 단계에서는 이미지 이름을 선택하고 이미지 생성을 완료합니다.

이미지를 생성하려면
  1. 터미널 창에서 AppStreamImageAssistant create-image를 실행하여 이미지를 생성합니다. 이 이미지에는 설치 및 등록된 애플리케이션, 구성한 모든 세션 스크립트 및 기본 애플리케이션 설정이 들어 있습니다.

    사용 가능한 명령 목록을 확인하려면 AppStreamImageAssistant create-image --help를 실행합니다. 자세한 내용은 Image Assistant CLI 작업을 사용하여 프로그래밍 방식으로 Amazon AppStream 2.0 이미지 생성create-image를 참조하세요.

  2. 원격 세션이 잠시 후 연결 해제됩니다. Lost Connectivity(연결 끊김) 메시지가 표시되면 브라우저 탭을 닫습니다. 이미지가 생성되는 동안 이미지 빌더 상태는 Snapshotting(스냅샷을 만드는 중)으로 표시됩니다. 이 프로세스를 완료할 때까지 이미지 빌더에 연결할 수 없습니다.

  3. 콘솔로 되돌아가 [Images], [Image Registry]를 선택합니다. 새 이미지가 목록에 나타나는지 확인합니다.

    이미지가 생성되는 동안 콘솔의 이미지 레지스트리에 있는 이미지 상태는 Pending(대기 중)으로 표시됩니다. 보류 중중 상태인 이미지에는 연결할 수 없습니다.

  4. 새로 고침 아이콘을 선택하여 상태를 업데이트합니다. 이미지가 생성되면 이미지 상태가 Available(사용 가능)로 변경되고 이미지 빌더가 자동으로 중지됩니다.

    이미지 만들기를 계속하려면 이미지 빌더를 시작하고 콘솔에서 이미지 빌더에 연결하거나, 새 이미지 빌더를 만듭니다.

7단계(선택 사항): 이미지 태그 및 복사

이미지 생성 중에 또는 이미지를 생성한 후 이미지에 태그를 하나 이상 추가할 수 있습니다. 이미지를 동일한 리전 안에서 복사하거나 동일한 Amazon Web Services 계정 안의 새 리전으로 복사할 수도 있습니다. 소스 이미지를 복사하면 동일하지만 구별되는 대상 이미지가 생성됩니다. 그러나 AWS는 사용자 지정 태그는 복사하지 않습니다. 그리고 AWS가 제공하는 기본 이미지가 아니라 사용자가 생성하는 사용자 지정 이미지만 복사할 수 있습니다.

참고

동시에 2개의 이미지를 한 대상에 복사할 수 있습니다. 이미지를 복사하려는 대상이 이미지 한계에 도달한 경우, 오류가 발생합니다. 이 경우 이미지를 복사하려면 먼저 그 대상에서 이미지를 삭제해야 합니다. 대상이 이미지 할당량(한도라고도 함)보다 작으면 소스 리전에서 이미지 복사본을 시작합니다. 자세한 내용은 Amazon AppStream 2.0 Service Quotas 섹션을 참조하세요.

기존 이미지에 태그를 추가하려면
  1. 탐색 창에서 [Images], [Image Registry]를 선택합니다.

  2. 이미지 목록에서 태그를 추가할 이미지를 선택합니다.

  3. 태그를 선택하고 태그 추가/편집을 선택한 후 태그 추가를 선택합니다. 태그의 키와 값을 지정한 다음 저장을 선택합니다.

자세한 내용은 Amazon AppStream 2.0 리소스 태그 지정 섹션을 참조하세요.

이미지를 복사하려면

지리적으로 분산된 리전들에 걸쳐 이미지를 복사하면 동일한 이미지에 기초하여 여러 리전의 애플리케이션들을 스트리밍할 수 있습니다. 사용자들과 보다 가까이서 애플리케이션을 스트리밍함으로써 AppStream 2.0의 애플리케이션 스트리밍에 관한 사용자 경험을 개선할 수 있습니다.

  1. 탐색 창에서 [Images], [Image Registry]를 선택합니다.

  2. 이미지 목록에서 복사하려는 이미지를 선택합니다.

  3. [Actions], [Copy]를 선택합니다.

  4. [Copy Image] 대화 상자에서 다음 정보를 지정한 다음 [Copy Image]를 선택합니다.

    • [Destination region]에서 새 이미지를 복사할 리전을 선택합니다.

    • Name에는 그 이미지가 대상에 복사될 때 갖게 될 이름을 지정합니다.

    • Description(선택 사항)에는 그 이미지가 대상에 복사될 때 갖게 될 설명 정보를 지정합니다.

  5. 복사 작업의 진행률을 확인하려면 콘솔로 돌아가서 [Images], [Image Registry]로 이동합니다. 탐색 모음을 이용하여 대상 리전으로 전환하고, 이미지 목록에 새 이미지가 나타나는지 확인합니다.

    새 이미지는 처음에 콘솔의 이미지 레지스트리에 Copying 상태로 나타납니다. 이미지가 생성된 후에는 이미지 상태가 사용 가능으로 바뀝니다. 이 상태가 되면 이제 이미지를 사용하여 스택을 시작하고 애플리케이션을 스트리밍할 수 있습니다.

8단계: 정리

마지막으로 이미지 빌더 실행을 중지하여 리소스를 비우고 의도하지 않은 계정 변경을 방지할 수 있습니다. 사용하지 않는 실행 중인 이미지 빌더를 모두 중단하는 것이 좋습니다. 자세한 정보는 AppStream 2.0 요금을 참조하세요.

실행 중인 이미지 빌더를 중단하려면
  1. 탐색 창에서 [Images], [Image Builders]를 선택하고 실행 중인 이미지 빌더 인스턴스를 선택합니다.

  2. [Actions], [Stop]을 선택합니다.