この記事について
JAWS-UG CLI専門支部 #76 AppStream 2.0入門で実施するハンズオン用の手順書です。
前提条件
必要な権限
作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。
- AppStream(2.0)のフルコントロール権限
- EC2のフルコントロール権限
- CloudFormationの関するフルコントロール権限
- IAMの関するフルコントロール権限
0. 準備
0.1. リージョンを指定
コマンド
export AWS_DEFAULT_REGION="ap-northeast-1"
0.2. 資格情報を確認
コマンド
aws configure list
インスタンスプロファイルを設定したEC2インスタンスでアクセスキーを設定せずに実行した場合、以下のようになります。
結果
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************QSAA iam-role
secret_key ****************c1xY iam-role
region us-west-2 env AWS_DEFAULT_REGION
0.3. バージョン確認
コマンド
aws --version
結果
aws-cli/1.11.35 Python/2.7.12 Linux/4.4.35-33.55.amzn1.x86_64 botocore/1.4.92
0.4. バージョンアップ(必要に応じて)
コマンド
sudo pip install -U awscli
1. Streaming URLの取得
ユーザはStreaming URLを利用してアプリケーションにアクセスします。生成されるStreaming URLには、認証情報が含まれます。
1.1. Streaming URLの取得
パラメータの指定
USER_IDは、ユーザを識別するIDです。AppStream 2.0ではRDS SAL(Windows Serverにリモートアクセスする際に必要となるクライアント用のライセンスで、サービスプロバイダー経由でのみ提供)の費用が発生しますが、ユーザ数に応じてSALの費用が発生します。【当日、渡邉さんに確認】
VALIDITYは、Streaming URLの有効期限です。
現在のAppStream 2.0では、ユーザ認証機能(Directory Serviceとの連携など)は提供されていません。
(ユーザが何らかの方法で認証およびStreaming URLを発行する機能を実装する必要があります。)
コマンド
USER_ID="jawsug"
VALIDITY="3600"
変数の確認
コマンド
cat << ETX
STACK_NAME: ${STACK_NAME}
FLEET_NAME: ${FLEET_NAME}
USER_ID: ${USER_ID}
VALIDITY: ${VALIDITY}
ETX
結果
STACK_NAME: JAWSUG_CLI
FLEET_NAME: JAWSUG_CLI
USER_ID: jawsug
VALIDITY: 3600
Streaming URLの生成
コマンド
aws appstream create-streaming-url \
--stack-name ${STACK_NAME} \
--fleet-name ${FLEET_NAME} \
--user-id ${USER_ID} \
--validity ${VALIDITY} \
--query StreamingURL \
--output text
結果
{
"Expires": 1483123249.92,
"StreamingURL": "https://stream.ap-northeast-1.amazonappstream.com/authenticate?parameters=****************&signature=********"
}
2. 動作確認
2.1. 動作確認
- FirefoxでWebブラウジングを行う
- 接続元のIPアドレスを確認する(NAT Gatewayに関連づけたEIPに名なっていることを確認)
- タイムアウトや有効時間などのパラメータ通りに動作していることを確認
2.2. セッション情報の表示
コマンド
aws appstream describe-sessions \
--stack-name ${STACK_NAME} \
--fleet-name ${FLEET_NAME}
結果
{
"Sessions": [
{
"StackName": "JAWSUG_CLI",
"FleetName": "JAWSUG_CLI",
"State": "ACTIVE",
"UserId": "jawsug",
"Id": "********-****-****-****-************"
}
]
}
2.3. セッションの切断
セッションIDの取得
コマンド
SESSION_ID=$(aws appstream describe-sessions \
--stack-name ${STACK_NAME} \
--fleet-name ${FLEET_NAME} \
--query Sessions[0].Id \
--output text) \
&& echo ${SESSION_ID}
結果
********-****-****-****-************
セッションの強制切断
コマンド
aws appstream expire-session \
--session-id ${SESSION_ID}
結果
(返値無し)
セッション情報の表示(削除されたことを確認)
コマンド
aws appstream describe-sessions \
--stack-name ${STACK_NAME} \
--fleet-name ${FLEET_NAME}
結果
{
"Sessions": []
}
以上