Amazon EC2 Auto Scalingは、アクセス変動に応じてインスタンス数を自動調整するAWSのサービスです。需要増加時にはリソースを追加し、需要減少時には不要なインスタンスを削除することで、可用性とコストのバランスを取ります。本記事では、Amazon EC2 Auto Scalingの仕組みから、コスト最適化設計、費用管理の注意点まで解説します。1、Amazon EC2 Auto Scalingの仕組みAmazon EC2 Auto Scalingの仕組みを理解するためには、以下のような主要ポイントを押さえておくことが重要です。・解決できる課題・主要な構成要素・スケーリングの動作原理・インスタンスの分散配置これらを把握することで、EC2の自動スケーリング機能をより効果的に活用し、可用性・コスト・運用効率のバランスを最適化できます。Amazon EC2 Auto Scalingは、需要の変動に応じてEC2インスタンスの台数を自動で増減するサービスです。(1)解決できる課題Amazon EC2 Auto Scalingは、手動によるインスタンス管理が抱える課題を解消します。需要に応じてEC2インスタンス数を自動で増減させることで、アクセスが急増した場合でもアプリケーションの可用性とパフォーマンスを維持でき、サーバーダウンのリスクを抑えられます。イベントやキャンペーンによってトラフィックが一時的に跳ね上がる場面でも、システムを安定して稼働させられるのは、この自動調整機能によるものです。コスト面でのメリットも見逃せません。需要が落ち着いたタイミングではインスタンス数を減らし、必要最小限のリソースだけを使用することで、無駄な支出を回避できます。運用面では、手作業によるリソース管理が不要になる点が大きな利点です。アプリケーション負荷に応じてEC2インスタンスが自動的に起動・終了するため、24時間体制での監視や手動対応に追われる必要はありません。(2)主要な構成要素Amazon EC2 Auto Scalingは、主に3つのコンポーネントで構成されます。まず、管理対象のインスタンスをまとめる単位が「Auto Scalingグループ」です。グループ内のインスタンスの最小数・最大数・希望数を指定することで、リソース量を自在に制御できます。次に、AMIやインスタンスタイプ、セキュリティグループなどの設定を定義する設計図として「起動テンプレート」が活用されます。これを用いることで、常に統一された設定でのインスタンス起動が可能です。そして、どのような条件で拡張・縮小を行うかを「スケーリングポリシー」で決定します。CPU使用率やリクエスト数などのメトリクスを監視し、閾値を超えた際にスケーリングを実行する仕組みです。あわせて、インスタンスの稼働状態を定期的に確認するヘルスチェック機能も備わっています。異常検知時には自動で新しいインスタンスへ置き換えを行うため、サービスの継続性を安定して維持します。(3)スケーリングの動作原理Amazon EC2 Auto Scalingは、あらかじめ設定した条件に基づきインスタンスの増減を実行します。負荷増加時にインスタンスを追加する動作を「スケールアウト」と呼びます。CloudWatchメトリクスが閾値を超えると、起動テンプレートに基づいて新しいインスタンスが起動される仕組みです。インスタンスはロードバランサーへ登録された後、ヘルスチェックに合格した段階で「InService」状態へ移行します。これにより、増加したトラフィックへの迅速な対応を可能にします。一方、負荷減少時にインスタンスを削除する動作については「スケールイン」という呼称が適当です。メトリクスが閾値を下回った際、終了ポリシーに従って特定のインスタンスが自動で終了します。また、スケーリング実行後の待機時間として「クールダウン期間」が設けられています。デフォルトでは300秒に設定されており、前回の動作がシステムに反映されるまで待機する仕様です。この期間を設けることで、短時間での過剰なスケーリングを効果的に防ぎます。(4)インスタンスの分散配置運用上の注意点として、Auto ScalingグループにElastic Load Balancing(ELB)をアタッチする場合、「クロスゾーン負荷分散」の設定がコストと可用性の両面に影響を及ぼします。クロスゾーン負荷分散を「有効」に設定すると、特定のAZにインスタンスが偏った際でもトラフィックを均等に分散可能です。ただし、AZ間通信に伴い、ロードバランサーの種類によってはデータ転送料金が別途発生します。一方で、この設定を「無効」にすれば転送コストは抑えられます。しかし、インスタンス配置が不均等になった場合に、特定の個体へ負荷が集中するリスクを考慮しなければなりません。高可用性を追求しつつコストを最適化するには、ロードバランサーの設定を含めたトータルなアーキテクチャ設計が極めて重要です。2、コスト最適化を意識した設計コスト最適化を意識したAmazon EC2 Auto Scaling設計では、以下のような重要なポイントを押さえることが求められます。・サイズ設定の基準・スポットインスタンスの活用・ロードバランサーとの連携・ヘルスチェックの設定・終了ポリシーの選択これらの設計ポイントを意識することで、システムの安定性を維持しながら、無駄なリソースコストを削減し、効率的なクラウド運用が実現できます。(1)サイズ設定の基準Auto Scalingグループのサイズ設定は、コストと可用性のバランスを決定する重要な要素です。最小台数は、トラフィックが極めて少ない時間帯でも維持すべきインスタンスの数を意味します。可用性を重視し、複数のAZ(アベイラビリティゾーン)へ最低1台ずつ分散配置するためには、最小台数を2台以上に設定する運用が一般的です。希望台数は、通常時に稼働させるインスタンスの基準値です。過去のトラフィックデータを分析し、平時の負荷に耐えうる台数をあらかじめ定めておけば、安定した稼働が見込めます。一方、最大台数はピーク時でも超過させないインスタンス数の上限を定めます。意図せず過大な値を設定すると、DDoS攻撃やミスによって膨大なインスタンスが起動し、高額な請求を招くリスクが否定できません。そのため、予算内で許容できる適切な台数の設定が求められます。こうしたサイズ設定を適正に保つためには、CloudWatchメトリクスの定期的な確認が不可欠です。(2)スポットインスタンスの活用スポットインスタンスは、AWSの余剰リソースを利用する割引価格のインスタンスで、オンデマンド価格の最大90%割引で利用できます。Auto Scalingグループでスポットインスタンスを指定すると、起動時に自動で安価なインスタンスが選択されます。ただし、AWSが容量を必要とした場合、2分前の通知で中断される点には注意が必要です。オンデマンドインスタンスと混合することで、コストと安定性を両立できます。オンデマンドインスタンスで最小限の可用性を確保し、追加のスケールアウトはスポットインスタンスで賄う構成が一般的です。この混合構成では、オンデマンドの比率を「オンデマンドベース容量」と「オンデマンド割合」で指定します。(3)ロードバランサーとの連携Amazon EC2 Auto ScalingとElastic Load Balancing(ELB)を連携させることで、トラフィックの分散と可用性の向上を同時に実現します。Application Load Balancer(ALB)をグループにアタッチすれば、起動したインスタンスは自動でターゲットグループへ登録されます。ロードバランサーは登録済みの個体へトラフィックを均等に割り振るため、特定のインスタンスへの負荷集中を未然に防ぐ仕組みです。また、ヘルスチェックに失敗したインスタンスへのリクエスト送信を遮断し、正常な個体のみを利用することで、サービスの信頼性を高めます。こうした仕組みに加え、ターゲット追跡スケーリングポリシーの活用により、ALBのリクエスト数を基準とした動的なスケーリングも可能となります。スケーリングの判断基準を実際のトラフィック量に置くことで、リソースの過不足を最小限に抑える効率的な運用が実現可能です。(4)ヘルスチェックの設定ヘルスチェックは、インスタンスの稼働状態を監視して異常を自動で検知するための仕組みです。EC2ヘルスチェックでは、インスタンス自体のステータスを確認します。インスタンスが停止または終了状態に陥った場合、システムが異常と判定して新しい個体への置き換えを実行します。一方、ELBヘルスチェックは、ロードバランサーが行う死活監視の結果を利用する方式です。ここではHTTPステータスコードやレスポンス時間を基準に、アプリケーション層の健全性を判断します。また、インスタンス起動後から監視を開始するまでの待機時間を「ヘルスチェックの猶予期間」と呼びます。この期間をアプリケーションの起動時間に合わせて調整しないと、正常に起動処理中の個体が「異常」と誤判定されるループに陥りかねません。適切な猶予時間を設定することで、安定したサービスの立ち上げが可能となります。(5)終了ポリシーの選択終了ポリシーは、スケールイン時にどのインスタンスを削除するかを決定するルールです。ポリシー説明デフォルトポリシーインスタンス数が最も多いAZから、古い起動設定や、古いバージョンの起動テンプレートを使用しているインスタンスを優先して終了OldestInstance起動時刻が最も古いインスタンスを優先的に終了NewestInstance最も新しいインスタンスを優先的に終了OldestLaunchTemplate古いバージョンの起動テンプレートで起動したインスタンスから削除AllocationStrategyを使用すると、設定した配分戦略(インスタンスタイプの優先順位やスポットの配分設定)に基づいた終了が可能です。例えば、オンデマンドインスタンスでは優先度の低いタイプを終了して優先度の高いタイプへ入れ替えたり、スポットインスタンスでは価格や容量の最適化戦略に沿ってインスタンス構成を維持したりするのに役立ちます。3、起動テンプレートとポリシー起動テンプレートは、Amazon EC2 Auto Scalingで起動するインスタンスの設定を定義する設計図です。(1)起動テンプレートの設計起動テンプレートはバージョン管理機能を備えているため、設定変更の履歴を確実に保持できます。新しいAMIやインスタンスタイプを試行する際、別バージョンとして作成しておけば、問題発生時にも旧設定へ即座に戻せます。インスタンスタイプについては、アプリケーションの要件に合致したものを選ぶことで、コストとパフォーマンスの最適化が可能です。また、セキュリティグループの設定では、必要最小限のポートのみを開放する「最小権限の原則」を適用します。たとえばWebサーバーであれば、HTTPとHTTPSのポート(80と443)に限定し、SSHアクセスは特定のIPアドレスからのみ許可する構成が望ましいでしょう。あわせて、IAMロールに関しても必要な権限のみを付与する運用を徹底します。これにより、万が一の際のセキュリティリスクを最小限に抑制できます。(2)AMIとユーザーデータの活用AMI(Amazon Machine Image)は、インスタンス起動時のベースとなるディスクイメージです。カスタムAMIをあらかじめ作成しておけば、アプリケーションやミドルウェアがインストール済みの状態でインスタンスを起動できます。これにより、起動時の初期化時間が大幅に短縮されるため、トラフィック急増時におけるスケールアウトの高速化を実現します。ただし、運用面ではAMIに対して常に最新のセキュリティパッチを適用しておく管理が欠かせません。一方、インスタンス起動時に特定のスクリプトを実行する仕組みが「ユーザーデータ」を指します。こちらは環境変数の設定や個別のアプリケーション起動など、動的な初期化処理が必要なシーンで重要な役割を担います。(3)ターゲット追跡スケーリングターゲット追跡スケーリングは、特定のメトリクスを目標値に維持するように機能するスケーリング方式です。CPU使用率やネットワーク送受信量、ALBリクエスト数といったCloudWatchメトリクスに基づき、インスタンス数を自動で調整します。たとえば「CPU使用率50%」を目標に設定した場合、この値を超過すればインスタンスが追加され、下回れば自動で削除が実行されます。この方式の最大の特徴は、目標値に近づけるために必要なリソース量をシステムが都度算出する点です。急激な負荷変化に対しても最適な台数を維持できるため、過剰なスケーリングを防止する上で極めて効果を発揮します。このように、ターゲット追跡スケーリングを活用すれば、コストとパフォーマンスの両立を容易に実現可能です。(4)スケジュールベーススケーリングスケジュールベーススケーリングは、あらかじめ決めた時刻にインスタンス数を変更する方式です。トラフィックのパターンが予測可能な場合に有効で、毎日の営業時間や週末のアクセス増加に対応できます。たとえば、平日の9時に最小台数を2台から5台に増やし、18時に2台へ戻す設定が可能です。スケジュールベーススケーリングは、cron形式で時刻を指定します。開発環境や検証環境であれば、夜間や週末は最小台数を0台にし、営業時間のみ起動する設定も選べます。24時間365日稼働させる場合と比べて約64%のコスト削減が期待できるため、本番以外の環境では積極的に活用したい機能です。4、Amazon EC2 Auto Scalingの費用と注意点起動テンプレートとスケーリングポリシーを適切に設計・活用することで、パフォーマンスとコスト効率の高いAmazon EC2 Auto Scaling運用が可能になります。以下の点に注目しましょう。・起動テンプレートの設計・AMIとユーザーデータの活用・ターゲット追跡スケーリングこれらの設定を活用することで、スムーズなスケーリングと柔軟な運用が実現し、特にピーク対応力やコスト効率の面で大きな効果を発揮します。(1)Auto Scaling自体の料金Amazon EC2 Auto Scalingというサービスを利用すること自体に、追加の料金は発生しません。 Auto Scalingグループの作成やスケーリングポリシーの設定、インスタンスの起動・停止といった一連の操作は、すべて無料です。実際に課金対象となるのは、Amazon EC2 Auto Scalingによって起動されたEC2インスタンスや、付随するAWSリソースの利用分のみとなります。たとえば、グループ内で10台のインスタンスが起動された場合には、その10台分のEC2利用料が課金されます。インスタンスが1時間稼働すれば1時間分、10分で停止すれば10分というように、実稼働時間に応じた料金が請求される仕組みです。(2)従量課金となる対象リソースAmazon EC2 Auto Scalingに関連して料金が発生するリソースは、主に3つあります。EC2インスタンスは、起動している時間に応じて課金されます。CloudWatchは、メトリクスの収集と保存に料金が発生します。Elastic Load Balancingは、ロードバランサーの稼働時間と処理したデータ量に応じて課金される仕組みです。リソースコスト削減ポイントEC2適切なインスタンスタイプを選択CloudWatch不要なログは定期削除またはS3へアーカイブALB静的コンテンツをCloudFrontで配信データ転送料金も見逃せない要素です。インターネットへのデータ送信、リージョン間のデータ転送には料金がかかります。(3)コスト急増を防ぐポイントAmazon EC2 Auto Scalingの設定ミスや突発的なトラフィック増加により、コストが急増する事例が見受けられます。最大台数の上限を適切に定めることが、コストの暴騰を防ぐための第一歩です。意図せず過大な値を設定すると、DDoS攻撃や設定ミスによって想定外の数のインスタンスが起動し、高額な請求を招く恐れがあります。また、スケーリングポリシーの閾値についても慎重な設計が求められます。たとえば、ターゲット値を10%といった極端に低い値に設定すると、わずかな負荷上昇でもスケールアウトが誘発されるため、動作が不安定な状態に陥りかねません。このような事態を避けるために、システムの特性に応じた適切な閾値設定を心がけましょう。あわせて、クールダウン期間を正しく設定することも欠かせません。前回のスケーリングによる変化が反映されるまで待機時間を確保すれば、グループが過剰に拡張されるのを効率的に防げます。なお、開発環境や検証環境であれば、最大台数をあえて低く抑えるか、スケジュールベースのスケーリングで夜間や休日を停止させる運用の検討が推奨されます。(4)クラウド破産の回避策想定外のクラウド利用料金により、企業の財務が危機的状況に陥ることをクラウド破産と呼びます。予算管理とアラート設定は、こうした事態を防ぐための基本です。AWS Budgetsでコスト予算アラートを設定する際、予算の50%、80%、100%到達時にアラートを送信する設定は、コスト管理のベストプラクティスとして広く採用されている設定例の一つです。消費額が予算の80%に達した時点でアラートを受け取る仕組みを構築しておけば、コストが暴騰する前に対策を打てます。ただし、予算アクションでAuto Scalingグループ内のインスタンスを停止した場合、Amazon EC2 Auto Scalingは「停止中」のインスタンスを異常とみなして終了し、自動的に新しいインスタンスを起動して置き換えてしまうため、コスト削減にならず意図しない動作になる可能性があることには注意が必要です。AWS Cost Anomaly Detectionは、機械学習モデルを活用して異常なコスト増加を検知するサービスです。Amazon EC2 Auto Scalingを含むすべてのAWSサービスのコスト異常を検知できます。タグを活用したコスト配分も欠かせません。部門別、プロジェクト別、環境別にタグを付与し、どこでコストが発生しているかを可視化します。5、まとめこの記事では、Amazon EC2 Auto Scalingの仕組みからコスト最適化設計、費用管理の注意点まで解説しました。・Amazon EC2 Auto Scalingはアクセス変動に応じてインスタンス数を自動調整する・Auto Scalingグループ、起動テンプレート、スケーリングポリシーが主要な構成要素・複数AZへの分散配置により障害発生時もサービス継続が可能・スポットインスタンスとオンデマンドの混合構成でコストと安定性を両立・ターゲット追跡やスケジュールベースで柔軟なスケーリングを実現・Amazon EC2 Auto Scaling自体は無料だがEC2やCloudWatch、ELBには料金が発生・最大台数の設定とAWS Budgetsの予算アラートでコスト急増を防止Amazon EC2 Auto Scalingは、可用性とコスト効率を両立しながら運用負荷を軽減できるサービスです。開発環境や検証環境から導入を始め、スケジュールベーススケーリングで営業時間外のインスタンスを停止する設定を試してみると、コスト削減効果を実感しやすくなるでしょう。%3Cstyle%3E%0A%20%20%20%20%40import%20url('https%3A%2F%2Ffonts.googleapis.com%2Fcss2%3Ffamily%3DNoto%2BSans%2BJP%3Awght%40400%3B700%26display%3Dswap')%3B%0A%20%20%20%20%0A%20%20%20%20.ctaBox%20%7B%0A%20%20%20%20%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20%20%20%20%20margin%3A%2024px%200%3B%0A%20%20%20%20%20%20%20%20box-sizing%3A%20border-box%3B%0A%20%20%20%20%20%20%20%20font-family%3A%20'Noto%20Sans%20JP'%2C%20sans-serif%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20.ctaBox__inner%20%7B%0A%20%20%20%20%20%20%20%20background%3A%20%23FFFFFF%3B%0A%20%20%20%20%20%20%20%20color%3A%20%23000000%3B%20%0A%20%20%20%20%20%20%20%20border-radius%3A%208px%3B%0A%20%20%20%20%20%20%20%20padding%3A%2016px%3B%20%2F*%20SP%20padding%20changed%20to%2016px%20*%2F%0A%20%20%20%20%20%20%20%20box-sizing%3A%20border-box%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20.ctaBox__title%20%7B%0A%20%20%20%20%20%20%20%20font-weight%3A%20700%3B%0A%20%20%20%20%20%20%20%20font-size%3A%201.5rem%3B%20%2F*%20Default%20for%20mobile%20*%2F%0A%20%20%20%20%20%20%20%20line-height%3A%202rem%3B%0A%20%20%20%20%20%20%20%20margin%3A%200%200%201.5rem%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20.ctaBox__list%20%7B%0A%20%20%20%20%20%20%20%20margin%3A%200%200%201.5rem%201.2em%3B%0A%20%20%20%20%20%20%20%20padding%3A%200%3B%0A%20%20%20%20%20%20%20%20display%3A%20flex%3B%0A%20%20%20%20%20%20%20%20flex-direction%3A%20column%3B%0A%20%20%20%20%20%20%20%20gap%3A%200.25rem%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20.ctaBox__list%20li%20%7B%0A%20%20%20%20%20%20%20%20list-style%3A%20disc%3B%0A%20%20%20%20%20%20%20%20font-size%3A%201rem%3B%20%2F*%20Default%20for%20mobile%20*%2F%0A%20%20%20%20%20%20%20%20line-height%3A%201.7%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20.ctaBox__text%20%7B%0A%20%20%20%20%20%20%20%20margin%3A%200%200%202rem%3B%0A%20%20%20%20%20%20%20%20font-size%3A%201rem%3B%20%2F*%20Default%20for%20mobile%20*%2F%0A%20%20%20%20%20%20%20%20line-height%3A%201.8%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20.ctaBox__buttons%20%7B%0A%20%20%20%20%20%20%20%20display%3A%20flex%3B%0A%20%20%20%20%20%20%20%20flex-direction%3A%20column%3B%20%2F*%20Buttons%20are%20vertical%20by%20default%20(mobile)%20*%2F%0A%20%20%20%20%20%20%20%20gap%3A%201rem%3B%0A%20%20%20%20%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20.ctaBox__btn%20%7B%0A%20%20%20%20%20%20%20%20display%3A%20block%3B%0A%20%20%20%20%20%20%20%20text-align%3A%20center%3B%0A%20%20%20%20%20%20%20%20padding%3A%201rem%201.5rem%3B%0A%20%20%20%20%20%20%20%20border-radius%3A%208px%3B%0A%20%20%20%20%20%20%20%20text-decoration%3A%20none%3B%0A%20%20%20%20%20%20%20%20font-weight%3A%20700%3B%0A%20%20%20%20%20%20%20%20border%3A%202px%20solid%20transparent%3B%0A%20%20%20%20%20%20%20%20transition%3A%200.2s%3B%0A%20%20%20%20%20%20%20%20box-sizing%3A%20border-box%3B%0A%20%20%20%20%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20.ctaBox__btn--primary%20%7B%0A%20%20%20%20%20%20%20%20background-color%3A%20%23ff7a1a%3B%0A%20%20%20%20%20%20%20%20color%3A%20white%3B%0A%20%20%20%20%20%20%20%20border-color%3A%20%23ff7a1a%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20.ctaBox__btn--primary%3Ahover%20%7B%0A%20%20%20%20%20%20%20%20background-color%3A%20white%3B%0A%20%20%20%20%20%20%20%20color%3A%20%23ff7a1a%3B%0A%20%20%20%20%20%20%20%20border-color%3A%20%23ff7a1a%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F*%20New%20styles%20for%20the%20new%20button%20design%20*%2F%0A%20%20%20%20.ctaBox__btn--ghost%20%7B%0A%20%20%20%20%20%20%20%20background-color%3A%20white%3B%0A%20%20%20%20%20%20%20%20color%3A%20%23ff7a1a%3B%0A%20%20%20%20%20%20%20%20border%3A%202px%20solid%20%23ff7a1a%3B%0A%20%20%20%20%20%20%20%20transition%3A%20all%200.2s%20ease%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20.ctaBox__btn--ghost%3Ahover%20%7B%0A%20%20%20%20%20%20%20%20background-color%3A%20%23ff7a1a%3B%0A%20%20%20%20%20%20%20%20color%3A%20white%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F*%20Breakpoint%20for%20400px%20and%20up%20*%2F%0A%20%20%20%20%40media%20(min-width%3A%20400px)%20%7B%0A%20%20%20%20%20%20%20%20.ctaBox__inner%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20padding%3A%2040px%3B%20%2F*%20Padding%20for%20desktop%20*%2F%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%2F*%20Tablet%20and%20larger%20screens%20(768px%20and%20up)%20*%2F%0A%20%20%20%20%40media%20(min-width%3A%20768px)%20%7B%0A%20%20%20%20%20%20%20%20.ctaBox__title%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20font-size%3A%201.5rem%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20.ctaBox__list%20li%2C%0A%20%20%20%20%20%20%20%20.ctaBox__text%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20font-size%3A%201rem%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20.ctaBox__buttons%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20flex-direction%3A%20row%3B%20%2F*%20Horizontal%20on%20tablet%2Fdesktop%20*%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20justify-content%3A%20center%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20gap%3A%201rem%3B%20%2F*%20Added%20gap%20to%20tablet%20*%2F%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%2F*%20Desktop%20screens%20(960px%20and%20up)%20*%2F%0A%20%20%20%20%40media%20(min-width%3A%20960px)%20%7B%0A%20%20%20%20%20%20%20%20.ctaBox__buttons%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20gap%3A%2016px%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20.ctaBox__btn%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20width%3A%20auto%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20min-width%3A%20260px%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%3C%2Fstyle%3E%0A%0A%3Cdiv%20class%3D%22ctaBox%22%3E%0A%20%20%20%20%3Cdiv%20class%3D%22ctaBox__inner%22%3E%0A%20%20%20%20%20%20%20%20%3Ch2%20class%3D%22ctaBox__title%22%3E%E5%B0%8E%E5%85%A5%E3%81%97%E3%81%9F%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%B3%E3%82%B9%E3%83%88%E7%AE%A1%E7%90%86%E3%82%92srest%E3%81%8B%E3%82%89%E5%A7%8B%E3%82%81%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8B%EF%BC%9F%3C%2Fh2%3E%0A%0A%20%20%20%20%20%20%20%20%3Cul%20class%3D%22ctaBox__list%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cli%3E%E8%A4%87%E6%95%B0%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E7%92%B0%E5%A2%83%E3%81%AE%E4%B8%80%E5%85%83%E7%AE%A1%E7%90%86%3C%2Fli%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cli%3E%E4%BB%BB%E6%84%8F%E3%81%AE%E5%8D%98%E4%BD%8D%E3%81%A7%E3%81%AE%E3%82%B3%E3%82%B9%E3%83%88%E3%81%AE%E6%8A%8A%E6%8F%A1%3C%2Fli%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cli%3E%E8%AB%8B%E6%B1%82%E9%A1%8D%E5%86%85%E8%A8%B3%E3%81%AE%E7%A2%BA%E8%AA%8D%3C%2Fli%3E%0A%20%20%20%20%20%20%20%20%3C%2Ful%3E%0A%0A%20%20%20%20%20%20%20%20%3Cp%20class%3D%22ctaBox__text%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20srest(%E3%82%B9%E3%83%AC%E3%82%B9%E3%83%88)%E3%81%AFAWS%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%99%E3%82%92%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%92%E6%A8%AA%E6%96%AD%E3%81%97%E3%81%A6%E4%B8%80%E5%85%83%E7%AE%A1%E7%90%86%E3%81%A7%E3%81%8D%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%99%E3%80%82%3Cbr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E5%88%A9%E7%94%A8%E7%8A%B6%E6%B3%81%E3%82%92%E5%8F%AF%E8%A6%96%E5%8C%96%E3%83%BB%E5%88%86%E6%9E%90%E3%81%97%E3%80%81%E3%82%B3%E3%82%B9%E3%83%88%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96%E3%80%81FinOps%E3%81%AE%E5%AE%9F%E8%B7%B5%E3%82%92%E6%94%AF%E6%8F%B4%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3Cbr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%E3%81%BE%E3%81%9A%E3%81%AF%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E8%A9%B3%E7%B4%B0%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8B%E8%B3%87%E6%96%99%E3%82%92%E3%81%94%E8%A6%A7%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%0A%20%20%20%20%20%20%20%20%3C%2Fp%3E%0A%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22ctaBox__buttons%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20class%3D%22ctaBox__btn%20ctaBox__btn--ghost%22%20href%3D%22https%3A%2F%2Fcontents.srest.io%2Fform%2Fdashboard%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%E8%B3%87%E6%96%99%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fa%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20class%3D%22ctaBox__btn%20ctaBox__btn--primary%22%20href%3D%22https%3A%2F%2Fcontents.srest.io%2Fform%2Fdashboard%2Fgovernmentcloud%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%E8%87%AA%E6%B2%BB%E4%BD%93%E5%90%91%E3%81%91%E3%81%AEAWS%E3%82%B3%E3%82%B9%E3%83%88%E7%AE%A1%E7%90%86%E3%81%AF%E3%81%93%E3%81%A1%E3%82%89%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fa%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%3C%2Fdiv%3E