

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

# チュートリアル: Linux ベースのカスタム WorkSpaces アプリケーションイメージを作成する
<a name="tutorial-create-linux-image"></a>

このチュートリアルでは、ユーザーにストリーミングできるアプリケーションを含むカスタム Linux ベースの Amazon WorkSpaces アプリケーションイメージを作成する方法について説明します。

**重要**  
Image Builder で「as2-streaming-user」という名前のユーザーを作成しないでください。これは Fleet の予約ユーザー名です。WorkSpaces アプリケーションワークフローの外部でこのユーザー名を作成すると、フリートでストリーミングの問題が発生する可能性があります。

**Topics**
+ [ステップ 1: Image Builder に Linux アプリケーションをインストールする](#tutorial-linux-image-install)
+ [ステップ 2: アプリケーション最適化マニフェストファイルを生成する](#tutorial-linux-image-manifest)
+ [ステップ 3: WorkSpaces アプリケーションアプリケーションカタログを作成する](#tutorial-linux-image-catalog)
+ [ステップ 4: デフォルトのアプリケーション設定と環境変数を作成する](#tutorial-linux-image-create-default-app-settings)
+ [ステップ 5: アプリケーションと設定をテストする](#tutorial-linux-image-test-applications)
+ [ステップ 6: イメージの作成を完了する](#tutorial-linux-image-finish-create-image)
+ [ステップ 7 (オプション): イメージにタグを付け、コピーする](#tutorial-linux-image-tag-copy)
+ [ステップ 8: クリーンアップ](#tutorial-linux-image-finish)

## ステップ 1: Image Builder に Linux アプリケーションをインストールする
<a name="tutorial-linux-image-install"></a>

このステップでは、Linux Image Builder を接続して、Image Builder にアプリケーションをインストールします。

**Image Builder にアプリケーションをインストールする**

1. 以下のいずれかを実行して、Image Builder に接続します。
   + [WorkSpaces アプリケーションコンソールを使用する](managing-image-builders-connect-console.md) (ウェブ接続のみ)
   + [ストリーミング URL を作成する](managing-image-builders-connect-streaming-URL.md) (ウェブまたは WorkSpaces アプリケーションクライアント接続用)
**注記**  
Amazon Linux GNOME デスクトップには ImageBuilderAdmin ユーザーとしてログインされ、ルート管理者権限が付与されます。

1. 必要なアプリケーションをインストールします。例えば、パブリック yum リポジトリから Chromium ブラウザをインストールするには、まず Terminal アプリケーションを開いてから、以下のコマンドを実行します。

   **[ImageBuilderAdmin]\$1 sudo yum update && sudo yum install chromium.x86\$164** 
**注記**  
アプリケーションのダウンロードおよびインストールは、信頼済みサイトからのみ行います。

## ステップ 2: アプリケーション最適化マニフェストファイルを生成する
<a name="tutorial-linux-image-manifest"></a>

このステップでは、手順 1 でインストールしたアプリケーションごとにマニフェストファイルを生成します。

**アプリケーションの起動パフォーマンスを最適化するためのマニフェストファイルを生成する**

1. 最適化しようとしているアプリケーション (Chromium など) が起動済みで実行中であることを確認します。

1. Terminal ウィンドウで以下のコマンドを実行して、アプリケーションに関連するプロセスをリストします。

   **[ImageBuilderAdmin]\$1 ps -ef \$1 grep chromium **

1. 上記のコマンドの出力から、ルート親 PID を見つけます。以下はサンプル出力で、ルート親 PID は 16712 です。  
**Example**  

   ```
   [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
   ```

1. アプリケーションが実行されている状態を維持して、ユーザーが必要とする初期コンポーネントを使用するようにしてください。そうすることで、これらのコンポーネントが最適化プロセスによってキャプチャされることを確実にします。

1. 以下のコンテンツを使用して、スクリプトファイル (`~/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'
   ```

1. 以下のコマンドを実行して、ファイルが実行可能であることを検証します。

   **[ImageBuilderAdmin]\$1 chmod u\$1x \$1/getfilestool.sh** 

1. 以下のコマンドを実行して、上記のステップ 3 で見つかったルート親プロセスからの実行中ファイルをすべてキャプチャし、一時的なマニフェストファイルに保存します。

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

1. 最適化マニフェストの内容を確認します。最適化マニフェストは、アプリケーションごとの行区切りテキストファイルです。

## ステップ 3: WorkSpaces アプリケーションアプリケーションカタログを作成する
<a name="tutorial-linux-image-catalog"></a>

このステップでは、Image Builder `AppStreamImageAssistant`の CLI ツールを使用して、イメージのアプリケーションを指定して WorkSpaces アプリケーションカタログを作成します。ストリーミングする予定のアプリケーションごとに、名前、表示名、起動する実行可能ファイル、および表示するアイコンを指定できます。

**WorkSpaces アプリケーションカタログを作成するには**

1. Image Builder デスクトップで、サイドパネルから、またはアプリケーショングリッドを開いて **[Terminal]** (ターミナル) を開きます。

1. **AppStreamImageAssistant --help** を実行して、使用可能なコマンドのリストを表示します。これらのコマンドを使用して、アプリケーションを追加し、イメージを作成します。

1. 次のコマンドを実行して、インストールされたアプリケーション (Chromium など) を WorkSpaces Applications ユーザーのアプリケーションリストに追加します。

   ```
   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"
   ```

1. 他のアプリケーションを追加するには、追加のアプリケーションごとにステップ 3 を繰り返します。

1. カタログに追加されたアプリケーションのリストを、アイコンパスや起動パラメータといったメタデータと共に表示するには、以下のコマンドを実行します。

   **AppStreamImageAssistant list-applications**

1. アプリケーションをカタログから削除するには、以下のコマンドを実行します。

   **AppStreamImageAssistant remove-application –-name *application\$1name***

## ステップ 4: デフォルトのアプリケーション設定と環境変数を作成する
<a name="tutorial-linux-image-create-default-app-settings"></a>

このステップでは、WorkSpaces Applications ユーザーのデフォルトのアプリケーション設定と環境変数を作成します。これにより、ユーザーは WorkSpaces アプリケーションストリーミングセッション中にアプリケーションをすばやく開始できます。これらの設定を自分で作成または設定する必要はありません。

**ユーザー用のデフォルトのアプリケーション変数と環境変数を作成する**

1. デフォルト設定を作成するアプリケーションを起動します。例えば、Terminal ウィンドウで以下のコマンドを実行して、Chromium ブラウザを起動します。

    **[ImageBuilderAdmin]\$1 chromium-browser**

1. アプリケーションの設定を行う 例えば、Chromium ブラウザのホームページを **https://aws.amazon.com** に設定します。

1. Chromium アプリケーションが閉じられていることを確認し、次のコマンドを実行して Chromium の設定を **/etc/skel** にコピーします。

   **[ImageBuilderAdmin]\$1 sudo mkdir /etc/skel/.config**

   **[ImageBuilderAdmin]\$1 sudo cp -R \$1/.config/chromium /etc/skel/.config** 

1. 環境変数を設定して、スクリプトファイルに追加します。例えば、以下のコマンドを実行します。

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

   **[ImageBuilderAdmin]\$1 sudo chmod \$1x /etc/profile.d/myenvvars.sh** 

## ステップ 5: アプリケーションと設定をテストする
<a name="tutorial-linux-image-test-applications"></a>

このステップでは、追加したアプリケーションが正しく実行され、デフォルトのアプリケーション設定と環境変数が期待どおりに動作することを検証します。

**Image Builder でアプリケーションとデフォルト設定をテストする**

1. root 権限がないテストユーザーを作成します。例えば、**[Terminal]** (ターミナル) ウィンドウで以下のコマンドを実行して、Image Builder に **test-user** を作成します。

   **[ImageBuilderAdmin]\$1 sudo useradd -m test-user**

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

1. テストユーザーに切り替えます。

   **[ImageBuilderAdmin]\$1 su - test-user**

1. アプリケーション (Chromium など) をテストユーザーとして起動します。

   **[test-user]\$1 /usr/bin/chromium-browser** 

1. テストユーザーに対してデフォルト設定が利用可能であることを検証します (Chromium ホームページが https://aws.amazon.com/ であるなど)。

1. テストユーザーに対して環境変数が利用可能であることを検証します。例えば、以下のコマンドを使用します。

   **[test-user]\$1 echo \$1*FOO***

   このコマンドは、Terminal に出力 ***BAR*** を表示します。

1. この Image Builder からイメージを作成する前に、以下のコマンドを実行してテストユーザーを削除します。

   **\$1 logout test user**

   **[test-user]\$1 logout**

   **\$1 kill test user's running processes**

   **[ImageBuilderAdmin]\$1 sudo killall -u test-user**

   **\$1 delete user**

   **[ImageBuilderAdmin]\$1 sudo userdel -r test-user**

## ステップ 6: イメージの作成を完了する
<a name="tutorial-linux-image-finish-create-image"></a>

このステップでは、イメージの名前を選択してイメージの作成を完了します。

**イメージを作成する**

1. **[Terminal]** (ターミナル) ウィンドウで **AppStreamImageAssistant create-image** を実行して、Image Builder からイメージを作成します。このイメージには、インストール済みかつ登録済みのアプリケーションに加えて、設定したセッションスクリプトとデフォルトのアプリケーション設定が含まれています。

   利用可能なオプションのリストを表示するには、**AppStreamImageAssistant create-image --help** を実行します。詳細については、[Image Assistant CLI オペレーションを使用して Amazon WorkSpaces アプリケーションイメージをプログラムで作成する](programmatically-create-image.md) で **create-image** 操作を参照してください。

1. 数秒後にリモートセッションが切断されます。[**Lost Connectivity**] メッセージが表示されたら、ブラウザタブを閉じます。イメージが作成されると、Image Builder のステータスが [**Snapshotting**] と表示されます。このプロセスが終了するまで Image Builder に接続することはできません。

1. コンソールに戻り、[**Images**]、[**Image Registry**] の順に移動します。新しいイメージがリストに表示されていることを確認します。

   イメージの作成中、イメージのステータスは、コンソールのイメージレジストリに [**Pending (保留中)**] と表示されます。**[Pending]** (保留中) ステータスのイメージに接続することはできません。status。

1. ステータスを更新するには、**[Refresh]** (更新) アイコンをクリックします。イメージが作成されたら、イメージのステータスは [**Available**] に変わり、Image Builder が自動的に停止されます。

   イメージの作成を続行するには、Image Builder を開始してコンソールから接続するか、新しい Image Builder を作成することができます。

## ステップ 7 (オプション): イメージにタグを付け、コピーする
<a name="tutorial-linux-image-tag-copy"></a>

イメージの作成中または作成後に 1 つ以上のタグをイメージに追加できます。イメージは、同じリージョン内でコピーする、または同じ Amazon Web Services アカウント内の新しいリージョンにコピーすることもできます。ただし、ソースイメージをコピーすると、送信先イメージは同一でも区別されます。 AWS はユーザー定義タグをコピーしません。また、コピーできるのは独自に作成したカスタムイメージのみであり、 AWSが提供するベースイメージはコピーできません。

**注記**  
同時に 2 つのイメージをコピー先にコピーできます。イメージのコピー先がイメージの制限に達している場合は、エラーが発生します。この場合にイメージをコピーするには、最初にコピー先からイメージを削除する必要があります。コピー先がイメージのクォータ（制限とも呼ばれます）を下回ったら、ソースリージョンからイメージのコピーを開始します。詳細については、「[Amazon WorkSpaces Applications Service Quotas](limits.md)」を参照してください。

**既存のイメージにタグを追加するには**

1. ナビゲーションペインで、[**イメージ**]、[**イメージレジストリ**] の順に選択します。

1. イメージのリストで、タグを追加するイメージを選択します。

1. **[Tags]** (タグ)、**[Add/Edit Tags]** (タグの追加/編集) の順に選択してから、[**Add Tag**] (タグを追加する) をクリックします。タグのキーと値を指定してから、**[Save]** (保存) をクリックします。

詳細については、「[Amazon WorkSpaces アプリケーションリソースのタグ付け](tagging-basic.md)」を参照してください。

**イメージをコピーするには**

地理的に異なるリージョン間でイメージをコピーすると、同じイメージに基づいて複数のリージョンからアプリケーションをストリーミングできます。ユーザーの近くでアプリケーションをストリーミングすることで、WorkSpaces アプリケーションを使用してユーザーのストリーミングアプリケーションエクスペリエンスを向上させることができます。

1. ナビゲーションペインで、[**イメージ**]、[**イメージレジストリ**] の順に選択します。

1. イメージのリストで、コピーするイメージを選択します。

1. **[アクション]**、**[コピー]** の順に選択します。

1. [**Copy Image (イメージのコピー)**] ダイアログボックスで、以下の情報を指定し、[**Copy Image (イメージのコピー)**] を選択します。
   + [**送信先リージョン**] で、新しいイメージのコピー先となるリージョンを選択します。
   + [**名前**] に、イメージが送信先にコピーされるときの名前を指定します。
   + [**説明**] (オプション) に、イメージが送信先にコピーされるときの説明を指定します。

1. コピー操作の進行状況を確認するには、コンソールに戻り、[**イメージ**]、[**イメージレジストリ**] に移動します。ナビゲーションバーを使用して、コピー先のリージョンに切り替え (該当する場合)、新しいイメージがイメージのリストに表示されることを確認します。

   新しいイメージは、コンソールのイメージレジストリで、最初のステータスが**コピー中**として表示されます。イメージが正常に作成されると、イメージのステータスが [**Available**] に変わります。つまり、イメージを使用してスタックを起動し、アプリケーションをストリーミングすることができます。

## ステップ 8: クリーンアップ
<a name="tutorial-linux-image-finish"></a>

最後に、実行中の Image Builder を停止してリソースを解放し、アカウントに意図しない料金が発生しないようにすることができます。使用していない、実行中の Image Builder を停止することをお勧めします。詳細については、[WorkSpaces アプリケーションの料金](https://aws.amazon.com/appstream2/pricing/)」を参照してください。

**実行中の Image Builder を停止するには**

1. ナビゲーションペインで、[**Images**]、[**Image Builders**] の順に選択し、実行中の Image Builder インスタンスを選択します。

1. [**Actions**]、[**Stop**] の順に選択します。