この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Amazon AppStream 2.0 のイメージビルダーには Image Assistant CLI(image-assistant.exe
)というプログラムがインストールされています。
このプログラムを使用し、コマンドラインからカスタムイメージを作成する方法を紹介します。
前提
イメージビルダーは、2019 年 7 月 26 日以降にリリースされたバージョンの AppStream 2.0 エージェントを使用する必要があります。
やってみた
次の手順でイメージを作成します。
- イメージビルダーを起動
- イメージビルダーに必要なアプリケーションをインストール
- アプリケーションのメタデータを登録
- イメージを作成
- フリートにイメージを紐付け
- アプリケーションの動作確認
インストールするアプリケーションには SSH クライアントの PuTTY を利用します。
また、イメージビルダー内のコマンドライン操作には PowerShell を利用します。
1. イメージビルダーを起動
イメージビルダーを起動し、インスタンスに Connect し、Administrator でログインします。
2. イメージビルダーに必要なアプリケーションをインストール
PuTTY をダウンロードします。
PS C:\Users\ImageBuilderAdmin> Invoke-WebRequest `
-Uri https://the.earth.li/~sgtatham/putty/latest/w64/putty-64bit-0.72-installer.msi `
-OutFile putty-64bit-0.72-installer.msi
インストールを実行します。
PS C:\Users\ImageBuilderAdmin> msiexec /i putty-64bit-0.72-installer.msi `
/passive /l*v install-putty-64bit-0.72-installer.msi.log
PS C:\Users\ImageBuilderAdmin> dir 'C:\Program Files\PuTTY\'
Directory: C:\Program Files\PuTTY
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 7/14/2019 8:59 AM 1471 LICENCE
-a---- 7/14/2019 9:01 AM 327552 pageant.exe
-a---- 7/14/2019 9:01 AM 680856 plink.exe
-a---- 7/14/2019 9:01 AM 688504 pscp.exe
-a---- 7/14/2019 9:01 AM 704392 psftp.exe
-a---- 7/14/2019 8:59 AM 295163 putty.chm
-a---- 7/14/2019 9:01 AM 886144 putty.exe
-a---- 7/14/2019 9:01 AM 404864 puttygen.exe
-a---- 7/14/2019 8:58 AM 1573 README.txt
-a---- 7/14/2019 8:58 AM 104 website.url
PuTTY は C:\Program Files\PuTTY\
以下にインストールされています。
3. アプリケーションのメタデータを登録
add-application
API でアプリケーションを登録します。
# アプリケーションを登録
PS C:\Users\ImageBuilderAdmin> image-assistant add-application `
--display-name PuTTY `
--name PuTTY-0.72 `
--absolute-app-path "C:\Program Files\PuTTY\putty.exe" `
--working-directory "C:\Program Files\PuTTY"
{
"status": 0,
"message": "Success"
}
# 登録済みアプリケーション一覧を確認
PS C:\Users\ImageBuilderAdmin> image-assistant list-applications
{
"status": 0,
"message": "Success",
"applications": [
{
"Name": "PuTTY-0.72",
"AbsoluteAppPath": "C:\\Program Files\\PuTTY\\putty.exe",
"DisplayName": "PuTTY",
"AbsoluteIconPath": "C:\\ProgramData\\Amazon\\Photon\\AppCatalogHelper\\AppIcons\\3de069ab-6079-4399-af8f-745920ff9a48.png",
"WorkingDirectory": "C:\\Program Files\\PuTTY",
"AbsoluteManifestPath": "C:\\ProgramData\\Amazon\\Photon\\AppCatalogHelper\\AppManifests\\9d3bfe1f-89bf-47d0-9267-42c0ae93b146.txt"
}
]
}
--display-name
はユーザーが起動アプリケーションを選択するときに利用され、--name
はイメージビルダー内のアプリケーション管理に利用されます。
そのため、--display-name
は汎用的な名前にし、--name
にはバージョンも含めた名前にすると管理しやすいでしょう。
4. イメージを作成
create-image
API でイメージを作成します。
PS C:\Users\ImageBuilderAdmin> image-assistant create-image `
--name CLI20191001 `
--description "CLI Image Created At 20191001" `
--use-latest-agent-version
{
"status": 0,
"message": "Success"
}
イメージ名はリージョン内でユニークである必要があります。
--name
にはイメージ作成日時を含めた名前にすると管理しやすいでしょう。
このコマンドを実行すると、イメージビルダーインスタンスはステータスが RUNNNING
から SNAPSHOTTING
に遷移し、ユーザーはログアウトします。
イメージビルダーのステータスは、最終的には STOPPED
になります。
同時に、作成命令を行ったイメージが Image Registry にPENDING
で作成されているのを確認できます。
このステータスが AVAILABLE
になると、利用可能です。
残念ながら、ステート遷移時にイベントは発火されないようです。
5. フリートにイメージを紐付け
最後に作成したイメージをフリートに紐付けます。
コンソールのフリート編集画面からイメージを選択することもできますし、以下のように update-fleet
API で更新することも可能です。
# フリートに紐付いたイメージを確認
$ aws appstream describe-fleets --name CLI
{
"Fleets": [
{
"Arn": "arn:aws:appstream:eu-central-1:123456789012:fleet/CLI",
"Name": "CLI",
"DisplayName": "CLI",
"Description": "CLI Fleet",
"ImageName": "CLI20190908",
"ImageArn": "arn:aws:appstream:eu-central-1:123456789012:image/CLI20190908",
...
}
]
}
# フリートのイメージを「CLI20191001」に変更
$ aws appstream update-fleet \
--name CLI \
--image-name CLI20191001
{
"Fleet": {
"Arn": "arn:aws:appstream:eu-central-1:123456789012:fleet/CLI",
"Name": "CLI",
"DisplayName": "CLI",
"Description": "LI Fleeta",
"ImageName": "CLI20191001",
"ImageArn": "arn:aws:appstream:eu-central-1:123456789012:image/CLI20191001",
...
6.アプリケーションの動作確認
ストリームにアクセスすると、追加したアプリケーション PuTTY が利用可能になっています。
改善ポイント
今回はイメージを作成するミニマムな手順のみをお伝えしたため、いくつかの改善ポイントを紹介します。
設定をカスタマイズ
イメージ作成時に、アプリケーションや Windows の設定を行ったり、アプリケーションの起動パフォーマンスを最適化することも可能です。 詳細は、次のドキュメントを参照ください。
デフォルトのアプリケーションおよび Windows 設定とアプリケーション起動パフォーマンス - Amazon AppStream 2.0
リモートサーバーからイメージ作成
今回はイメージ作成作業をイメージビルダー内から行いました。
イメージビルダーをリモートから管理し、リモートからコマンドを実行することも可能です。 詳細は、次のドキュメントを参照ください。
最後に
Image Assistant CLI を利用して、コマンドラインから AppStream 2.0 のイメージを作成する方法を紹介しました。
イメージ作成手順をスクリプト化すると、再現性の確保や情報の共有が容易になるほか、アプリケーションの更新作業のように、同じ操作を定期的に繰り返すケースで有効活用できます。
今後、SSM 経由で外部からイメージビルダーにコマンドを投入できたり、イメージ作成完了時にイベント通知されるようになると、イメージ作成パイプラインをより構築しやすくなると思います。
参考
- Amazon AppStream 2.0 Adds CLI Operations for Programmatic Image Creation
- Creating an image programmatically with AppStream 2.0 Image Assistant CLI operations | Desktop and Application Streaming
- Create Your AppStream 2.0 Image Programmatically by Using the Image Assistant CLI Operations - Amazon AppStream 2.0