Amazon WorkSpaces Webを利用してみる
Amazon WorkSpaces Webを利用してみる
DevelopersIO BASECAMP参加者の加藤です。
今回は「Amazon WorkSpaces Web」を利用してみたいと思います。
IAM Identity Centerも手順に含まれますのでご興味があればご覧いただければ幸いです。
元のハンズオン
日本語のAWSハンズオンをカテゴリ別にまとめたJP Contents Hub内に元のハンズオン教材があります。
元々は全てテンプレートで完結してみるつもりでしたが、残念ながらIAM Identity CenterやWorkSpaces Webの作業も含めテンプレートだけで完結というのは難しそうでした。
JP Contents Hub>Amazon WorkSpaces Web ワークショップ
実際に作成されない方も手順部分をザッと眺めていただければと思います。
(作成される方は料金がかかりますのでご注意ください。)
作成
VPCコンソールで作成するリソースのテンプレート
このテンプレートをCloudFormationで実行します。
AWSTemplateFormatVersion: "2010-09-09"
# ------------------------------------------------------------#
# Metadata
# ------------------------------------------------------------#
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: Stack
Parameters:
- Prefix
- Label:
default: VPC
Parameters:
- VPCCidrBlock
- Label:
default: Subnet
Parameters:
- PublicSubnet1aCidrBlock
- PrivateSubnet1aCidrBlock
- PrivateSubnet1cCidrBlock
# ------------------------------------------------------------#
# Parameters
# ------------------------------------------------------------#
Parameters:
Prefix:
Type: String
MinLength: 1
MaxLength: 13
AllowedPattern: "[a-z][a-z0-9]*"
Default: workapacesweb
VPCCidrBlock:
Type: String
Default: 10.0.0.0/16
MinLength: 9
MaxLength: 18
AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})
PublicSubnet1aCidrBlock:
Type: String
Default: 10.0.0.0/20
MinLength: 9
MaxLength: 18
AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})
PrivateSubnet1aCidrBlock:
Type: String
Default: 10.0.128.0/20
MinLength: 9
MaxLength: 18
AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})
PrivateSubnet1cCidrBlock:
Type: String
Default: 10.0.120.0/20
MinLength: 9
MaxLength: 18
AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})
# ------------------------------------------------------------#
# Resources
# ------------------------------------------------------------#
Resources:
# ------------------------------------------------------------#
# VPC
# ------------------------------------------------------------#
VPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Ref VPCCidrBlock
InstanceTenancy: default
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: !Sub ${Prefix}-vpc
# ------------------------------------------------------------#
# RouteTable
# ------------------------------------------------------------#
# ルートテーブル
PublicRTB:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:
- Key: Name
Value: !Sub ${Prefix}-rtb-public
PrivateRTB:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:
- Key: Name
Value: !Sub ${Prefix}-rtb-private-1a
# ルート
PublicRoute:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PublicRTB
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref IGW
PrivateRoute1a:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PrivateRTB
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref NGW1a
# アソシエーション
PublicSN1aAssoc:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PublicSubnet1a
RouteTableId: !Ref PublicRTB
PrivateSN1aAssoc:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PrivateSubnet1a
RouteTableId: !Ref PrivateRTB
PrivateSN1cAssoc:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PrivateSubnet1c
RouteTableId: !Ref PrivateRTB
# ------------------------------------------------------------#
# InternetGateway
# ------------------------------------------------------------#
# IGW
IGW:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: !Sub ${Prefix}-igw
# アタッチメント
IGWAttach:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref IGW
VpcId: !Ref VPC
# ------------------------------------------------------------#
# NatGateway
# ------------------------------------------------------------#
NGW1a:
Type: AWS::EC2::NatGateway
Properties:
AllocationId: !GetAtt EIPForNGW1a.AllocationId
SubnetId: !Ref PublicSubnet1a
Tags:
- Key: Name
Value: !Sub ${Prefix}-ngw-1a
# ------------------------------------------------------------#
# EIP
# ------------------------------------------------------------#
EIPForNGW1a:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
Tags:
- Key: Name
Value: !Sub ${Prefix}-eip-forngw1a
# ------------------------------------------------------------#
# VPCEndpoint
# ------------------------------------------------------------#
VPCES3:
Type: AWS::EC2::VPCEndpoint
Properties:
RouteTableIds:
- !Ref PrivateRTB
ServiceName: !Sub com.amazonaws.${AWS::Region}.s3
VpcEndpointType: Gateway
VpcId: !Ref VPC
VPCEKMS:
Type: AWS::EC2::VPCEndpoint
Properties:
PrivateDnsEnabled: true
ServiceName: !Sub com.amazonaws.${AWS::Region}.kms
SubnetIds:
- !Ref PrivateSubnet1a
- !Ref PrivateSubnet1c
VpcEndpointType: Interface
VpcId: !Ref VPC
VPCELogs:
Type: AWS::EC2::VPCEndpoint
Properties:
PrivateDnsEnabled: true
ServiceName: !Sub com.amazonaws.${AWS::Region}.logs
SubnetIds:
- !Ref PrivateSubnet1a
- !Ref PrivateSubnet1c
VpcEndpointType: Interface
VpcId: !Ref VPC
# ------------------------------------------------------------#
# Subnet
# ------------------------------------------------------------#
PublicSubnet1a:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: !Ref PublicSubnet1aCidrBlock
VpcId: !Ref VPC
AvailabilityZone: !Select [ 0, !GetAZs ]
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub ${Prefix}-subnet-public-1a
PrivateSubnet1a:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: !Ref PrivateSubnet1aCidrBlock
VpcId: !Ref VPC
AvailabilityZone: !Select [ 0, !GetAZs ]
Tags:
- Key: Name
Value: !Sub ${Prefix}-subnet-private-1a
PrivateSubnet1c:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: !Ref PrivateSubnet1cCidrBlock
VpcId: !Ref VPC
AvailabilityZone: !Select [ 1, !GetAZs ]
Tags:
- Key: Name
Value: !Sub ${Prefix}-subnet-private-1c
※AZについて「商用環境では可用性を考慮して2以上を指定する事をお勧めします。」と元のハンズオン内で説明がありました。
IAM Identity Centerコンソールでの作業
IAM Identity Centerコンソールにアクセスします。
↓
左サイドカラムから「ユーザー」をクリックし、「ユーザーを追加」ボタンをクリックします。
↓
全ての項目を入力します。
Eメールアドレスは実在するご自身のアドレスをご入力ください。
↓
画像のブロック以外の「任意」と記載のあるブロック(畳まれている部分)はそのままで「次へ」ボタンをクリック。
↓
グループ追加はせずに「次へ」をクリック。
↓
内容を確認して「ユーザーを追加」をクリック。
↓
ユーザー作成が完了しました。
↓
左サイドカラムから「アプリケーション」をクリックし、「アプリケーションを追加」をクリックします。
↓
「カスタム SAML 2.0 アプリケーションの追加」にチェックを入れます。
↓
その他は何も選択せずに。「次」をクリック。
↓
中段の「IAM Identity Center メタデータ」ブロックで「IAM Identity Center SAML メタデータファイル」をダウンロードします。
↓
「送信」ボタンは押さずに一旦この画面を閉じずに放置します。
※次の章の作業は別のタブで行います。
指定したメールアドレスに来たメールを確認
先ほど入力したメールアドレス宛に「Invitation to join IAM Identity Center (successor to AWS Single Sign-On)」というメールが届いています。
以下の「Accept Invitation」ボタンをクリックします。
↓
ブラウザ上に「新規ユーザーのサインアップ」画面が開きます。
任意のパスワードを入力し、「新しいパスワードを設定」をクリック。
↓
「サインイン」画面で「次へ」をクリック
↓
先ほど設定したパスワードを入力し「サインイン」をクリック。
↓
以下画面が確認出来ればこのブロックは一旦完了です。
WorkSpaces Webコンソールでの作業
WorkSpaces Webコンソールにアクセスします。
↓
左サイドカラムから「ウェブポータル」をクリックし、「ウェブポータルを作成」ボタンをクリックします。
↓
VPC:テンプレートで作成されたVPCを選択
サブネット:テンプレートで作成されたプライベートサブネット×2を選択。
セキュリティグループ:デフォルトのセキュリティグループ
を選択して「次へ」をクリック。
↓
ステップ2「ウェブポータルの設定を構成」
ステップ3「ユーザー設定を選択」
は何もせず「次へ」をクリック。
↓
ステップ4「アイデンティティプロバイダーを設定」で
「標準」にチェックのまま
「標準IdPで続行」ボタンをクリック。
↓
上部に「ウェブポータルが正常に作成されました。」という緑帯が確認出来ます。
↓
中段の「サービスプロバイダー (SP) の詳細」ブロックで、「メタデータファイルをダウンロード」ボタンをクリックします。
↓
すぐ下の「シングルログアウト (SLO)」ブロックで、「IdP メタデータドキュメント」ブロックの「ファイルを選択」ボタンをクリックします。
↓
前々章の最後でダウンロードした以下ファイルを選択して「開く」をクリック。
「Custom SAML 2.0 application_ins-xxxxxxxxxxxxxxxx.xml」
↓
「次へ」をクリック。
↓
確認画面で内容を確認し「ウェブポータルを起動」ボタンをクリック。
↓
上部に「ウェブポータルを起動しています。このプロセスが完了するまでに通常10〜15分かかります。」という青帯が確認出来ます。
↓
一旦このブロックは完了です。
再びIAM Identity Centerコンソールでの作業
先ほど放置していた画面に戻ります。
最下部の「アプリケーションメタデータ」ブロックから「アプリケーション SAML メタデータファイル」にチェックを入れ「ファイルの選択」ボタンをクリックします。
↓
「ServiceProviderMetadata_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.xml」ファイルを選択し「開く」をクリック。
↓
「送信」をクリック。
↓
上部に「「Custom SAML 2.0 application」の設定が保存されました。」という緑帯が確認出来ます。
↓
表示画面内で「アクションボタン」をクリックし「属性マッピングを編集」をクリック。
↓
中央欄:「${user:email}」
右ドロップダウンリスト:「emailAddress」
として、「変更の保存」ボタンをクリック。
↓
上部に「SAMLアサーションは正常に更新されました。」と緑帯が確認出来ます。
↓
今度は「ユーザーを割り当て」ボタンをクリック。
↓
作成したユーザーを選択し、「ユーザーを割り当て」ボタンをクリック。
↓
以上で全ての設定が終わりました。
WorkSpaces Webコンソールからエンドポイントへアクセスして表示を確認
WorkSpaces Webコンソールへ戻ります。
↓
「ウェブポータルエンドポイント」が完成していますのでクリックします。
↓
別タブで以下画面が開きます。「サインイン」をクリック。
↓
起動待ち
↓
無事Chromeに接続出来ました。(若干解像度が低めの為リモートアクセスしている感じがわかります。)
以上でした。
おまけ
①日本語入力を可能にする
右上の入力言語が「en」になっている為、日本語入力が出来ません。
↓
日本語を選択します。
↓
入力出来るようになりました。
②上部のメニューを確認
上部にあるバーのメニューアイコン
↓
「Appstream 2.0」のアプリとして動いている事がわかります。
ファイルをアップ出来るようです。
機器接続
2画面分割
Fnキー
終了
↓
③片付けが必要なリソース(実際に作成した方向け)
「WorkSpaces Web」コンソール
ウェブポータル
「IAM Identity Center」コンソール
・アプリケーション
・ユーザー
「CloudFormation」コンソール
・スタック
終わりに
お付き合いいただき、有難うございました。
Discussion