Help us understand the problem. What is going on with this article?

[JAWS-UG CLI]Amazon AppStream 2.0 入門 (4) Streaming URLの作成/動作確認

More than 3 years have passed since last update.

この記事について

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": []
}

以上

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away