岩石です。このブログの最後の方で20円という言葉がでてきます。20円ってどれぐらいと思って、タバコの値段を思い浮かべたのですが、最近は1本25円以上になってますね。昔々20代前半にタバコを吸ってましたが1本が25円もすると思うと吸っていなかったんだろうなと思いました。
でもお酒は以前より高いものを好むようになり、案外コスト高かもしれません。きちんと計算してないですが、あまりちゃんと計算したくない気持ちもあります。嗜好品にはコストって関係ないのかもって再認識しました。
今回は前回記事(仮想マシン+Windowsの代わりにAmazon AppStream2.0を使ってみるのはどうでしょう?)の続きです。
前回記事の最後にこんなことを書きました。
ここまで一般的なAppStreamの使い方の想定で書きましたが、AppStreamにはElastic Fleetという動作イメージを作らないサーバレス(?)な形態のサービス提供も追加されていました。
OSの起動イメージはAWS提供のものを使用し、Amazon S3に配置したアプリケーションファイルをマウントして起動するタイプのFleetとなります。
ご紹介したAmazon AppStream 2.0(以下AppStream)の一般的なFleetは、OSを含めた動作イメージを作成しそれを展開して動作するものでした。 これに対してElastic Fleetsは動作させたい追加アプリケーションなどが含まれた仮想ディスクイメージ(VHD)や動作スクリプトをAmazon S3(以下S3)に配置し関連づけることで動作させることになります。
Elastic Fleetsに関するAWSのドキュメントはElastic フリート用の App Block とアプリケーションを作成して管理する - Amazon AppStream 2.0になります。このドキュメントは公式の情報であり正しいのですが、セットアップスクリプト(S3に配置したVHDや起動するアプリケーションへの関連付けを行う処理を記述したもの)に関しての内容が詳しく触れられていません(2023年3月6日現在)。
このため私はクラスメソッドさんの記事を参照して取り組みました。本当にいつも詳しい解説をありがとうございます。
[アップデート] AppStream 2.0 で新しいタイプのフリート Elastic Fleets が追加されました | DevelopersIO
今回はアプリケーションよりはElastic Fleetsについての検証がメインなので、シンプルにインストーラータイプでないものを一つだけ検証することとしてTera Termを選びました。
Tera Term Open Source Project
Tera Termはとても有名なのでアプリケーションに関する説明は省きます。以前の職場ではWindowsを使用してネットワーク機器の設定などをさせてただいていたのでとても活用させていただきました。PCからLinuxサーバのメンテナンスなどをする際にもTera Termがデフォルトアプリでした。macOSを使用するようになってからもTera Termのようなアプリケーションが存在しないか探していたぐらい好んで使用していたアプリケーションです。
通常のAppStreamではImage Builderを起動し動作マシンイメージを作成するのですが、Elastic FleetsではマウントするVHDを作成することになるので、専用の環境を用意したり起動する必要はありません。ただし私はWindows環境を持ってないので今回はAmazon EC2(以下EC2)でWindowsインスタンス(Windows Server 2022)を作成しました。実際にElastic Fleetsで動作する基盤はWindows Server 2019のようですが、互換性などに問題がなければVHDは他のバージョンのWindowsで作成しても問題ないと思います。作成したVHDはS3にアップロードしますので、もしWindows PC環境をお持ちでしたらその環境で作成されるのが良いと思います。
今回はAWSのドキュメントに従いMicrosoft diskpart ユーティリティを使用してVHDを作成しました。 そしてVHDをZドライブにマウントし、Tera TermのZIPを展開したものを配置しました。
セットアップスクリプトは実際のFleetが動作する手順などがまとめられたものになります。Elastic Fleetsでは基盤とそれが動作する仕組みのみ提供され、どのように起動するかやフォルダ関連付けなどについてはセットアップスクリプトに記載する必要があります。
これについてはクラスメソッドさんの記事を参考にしました。Windows Powershellのスクリプトです。
$VhdxPath = "C:\AppStream\AppBlocks\Teraterm\file.vhdx" $MountPoint = 'C:\Program Files\teraterm\' if (-not (Test-Path -LiteralPath $MountPoint)) { mkdir $MountPoint } $Vhdx = Mount-DiskImage -ImagePath $VhdxPath -StorageType VHDX -NoDriveLetter Get-Disk -DeviceId $Vhdx.Number | Get-Partition | Add-PartitionAccessPath -AccessPath $MountPoint
内容としては、
という内容です。これにより作成したVHDを C:\Program Files\teraterm\
にマウントします。
VHDのパスですが、 C:\AppStream\AppBlocks\Teraterm\
の部分についての説明は、上記 VHDの作成 のところで示したAWSのドキュメントの中程「VHD 用のセットアップスクリプトを作成する」に書かれています。これによりこの後作成するApp Blockでは Teraterm というブロックを作成することになります(※名称を合わせる必要がある)。
作成したVHDなどをS3にアップロードします。 アップロードするファイルは次の3つです。
今回は使用しませんが、利用者のセッションが開始されるタイミングと終わるタイミングにスクリプトを実行することができるセッションスクリプトという機能があり、そのスクリプトを使用する場合も同様にアップロードします。
セッションスクリプトの設定については下記を参照してください。
セッションスクリプトを使用して AppStream 2.0 ユーザーのストリーミングエクスペリエンスを管理する - Amazon AppStream 2.0
アップロード先のS3へはAppStreamからのアクセス許可設定が必要です。設定するバケットポリシーについてはこちらの一番下に書かれています。今回検証用で継続して利用するわけではないので下記のようにリソースを省略して記載しました(警告は出ますが設定可能です)。リソースを特定して設定するのが望ましいと感じますので、実際に利用するものであればAWSのドキュメントに従ってオブジェクト(ファイル)を指定した方が良いと思われます(多くても4つですし)。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAppStream2.0ToRetrieveObjects", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::[対象バケット名称]/*" } ] }
次にFleetsが動作する環境設定ともいえるApp Blocksの設定をします。ここで Setup script executable
欄に設定する値はセットアップスクリプトを実行するコマンドになりますので、今回はWindows Powershellを指定します。また Setup executable arguments
のところにセットアップスクリプトのファイルを指定します。
実際の動作に関連する設定はApplicationsにて行います。具体的にはAppStreamの起動画面でのアイコンの選択、アプリケーションの起動設定、そして利用するApp Blockです。
AppStream Elastic Fleetsでの動作に関する設定はおおよそこのApp BlocksとApplicationsとなりますが、設定する項目が何を設定する場所か理解するとそれほど困る内容はありません。
そしてFleetの設定をします。おおよその設定内容は前回の記事と同じです。設定項目の中でFleet TypeについてElasticを選択するとApplicationの選択など特化した内容に項目が変わります。
運用開始後にApplicationの設定を変更する場合は Fleetの Assigned applications についてAssociateしたりDisassociateしたりしてStackやFleetをSTOPさせずに変更することができます。
最後にStackを設定します。Stack設定については一般的なAppStreamの設定と同じです(認証についても同様)。Fleets、Stacks共に設定にそれほど悩む内容はないのかなと思われます。
User poolでユーザにStackをアサインする方法やSAMLフェデレーション設定などの準備が終われば、指定のURLにアクセスするとTera Termを利用することができるようになります。感覚的なものなのかわかりませんが、起動が早く感じます。スポット的な使用であれば全く問題ないと思います。
前回も料金の話を書いたので今回も書きます。Elastic FleetsはImage Builderを使用せず、またFleetを占用しないので料金体系がややこしいAppStreamの中では比較的シンプルです。待機中は課金されず使用中のみ規定の課金が発生します。
前回の条件に合わせてみます。
項目 | 数量 | 単価 | 金額 |
---|---|---|---|
Image Builder | 1h | 0.12USD | 0.12USD |
Fleet | 5h | 0.12USD | 0.6USD |
Fleet (On-Demand Stopped) | 715h (24*30-5) | 0.029USD | 20.735USD |
利用ユーザ | 1人 | 4.19USD | 4.19USD |
合計 | 25.645USD |
項目 | 数量 | 単価 | 金額 |
---|---|---|---|
Image Builder | 1h | 0.12USD | 0.12USD |
Fleet | 5h | 0.12USD | 0.6USD |
Fleet (On-Demand Stopped) | 2h (1*2) | 0.029USD | 0.058USD |
利用ユーザ | 1人 | 4.19USD | 4.19USD |
合計 | 4.968USD |
※VHD作成のEC2料金、VHD等配置のS3費用は含めていません
項目 | 数量 | 単価 | 金額 |
---|---|---|---|
Image Builder | (使用なし) | ||
Elastic Fleet | 5h | 0.18USD | 0.9USD |
利用ユーザ | 1人 | 4.19USD | 4.19USD |
合計 | 5.09USD |
条件付き利用方法と同じ(わずかに高い)程度になりましたが、特別な運用をする必要もなく普通に使えてこの金額なら良いのではないでしょうか。コストが下がった大きな理由としては待機中のFleetが課金対象にならないこととImage Builderを使わなくても動作環境が作成できることがあります。待機中のFleetが課金対象にならないのは大きなメリットで、単価は高いものの使用時間が少ない利用形態であればこちらの方が有利になります。
VHD作成コストについて、Windows PCを持っていないという方のための話が元々の想定でしたので今回はEC2でWindows Serverを立ち上げましたが、スポットインスタンスを使用することでかなり削減できると思います(Windows PCを持っている人ならそもそもこの費用はかからない!)。
費用に含めていないEC2とS3についての課金の参考額ですが、
という内容から、毎月メンテナンスしたとしても毎月0.125USD以下(高めに見積もっても20円以下)の追加コストになりそうです。
ローンチ後の管理はアプリケーションを更新したVHDをS3に置き換えるだけなので、EC2の起動時間もわずかと思われます。管理作業も楽チンですね。
AppStreamの話を2回に分けて書きました。今回はWindowsOS機器を保有していない場合のアプリケーション利用案として考えてみましたが、テレワークでの活用やアプリケーション利用者・操作対象への接続元の限定などセキュリティ対策などの観点でも有効です。
Elastic Fleetsはドキュメントが整備されてない面もあり、とっつきにくくわからないことも多かったのですが、クラスメソッドさんのブログなどを参照しながら検証をしてみて、一般的なFleetsよりもシンプルでわかりやすく、また管理も楽なので「これはイイ!」という感想です。どちらを使うべきかという点については、メンテナンスを含めたコストで選ぶのが良いと思います。個人的にはメンテナンスが簡単そうなのでElastic Fleetsがお勧めです。
Elastic Fleetsの利用記事が少ないので、今回の内容が皆さんの参考になると幸いです。
【スタッフ募集中】
弊社ではAWSを活用したソリューションの企画・設計・構築・運用や、Ruby on Rails・JavaScriptフレームワークなどを使用したアプリケーション開発を行うスタッフを募集しています。採用情報の詳細
弊社での勤務に関心をお持ちの方は、知り合いの弊社社員・関係者を通じてご連絡ください。
![]() |
MacでWindowsアプリを動作させるアイデアの一つとしてAppStreamを使ってみました。 |
![]() |
サポート業務の品質を向上のためビジネス文章力アップ講座を受講。 |
![]() |
ローカルブランチが溜まり気味なのが悩み。削除コマンドをエイリアスに設定し簡単に削除できるようにしました。 |
![]() |
Redmineのユーザーや権限など自分たちが必要な情報を扱いやすい形式にまとめたい場合、REST APIを利用するのがお勧めです。 |
![]() |
Application Load Balancer のログが見にくいので、Glue と Athena を利用してクエリーでログを検索できるようにしました。 |
![]() |
社員研修に伴うサポート体制変更・休業のお知らせ(5/20〜23) 社員研修に伴い、5月20日〜23日はサポート体制の変更および休業とさせていただきます。 |
![]() |
オープンソースカンファレンス2025 Nagoyaに弊社代表の前田が登壇(ブース出展あり) オープンソースカンファレンス(OSC)2025 Nagoyaに弊社代表の前田が登壇。『Redmineの意外と知らない便利な機能(Redmine 6.0 対応版)』をテーマに発表します。 |
![]() |
エンタープライズプラン向け「優先サポート」を開始 My Redmineでは、エンタープライズプランをご契約のお客様向けにサポート対応を優先的に行う「優先サポート(プライオリティサポート)」を開始いたしました。 |
![]() |
プロジェクト管理ツール「RedMica」バージョン 3.1.0をリリース Redmine互換のオープンソースソフトウェア ファーエンドテクノロジー株式会社は、2024年11月19日(日本時間)、Redmine互換のプロジェクト管理ソフトウェア「RedMica 3.1.0」をリリースしました。 |
![]() |
Redmineの最新情報をメールでお知らせする「Redmine News」配信中 新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け |