Amazon EC2 Mac インスタンス - Amazon Elastic Compute Cloud

Amazon EC2 Mac インスタンス

はじめに

Amazon EC2 Mac インスタンスは macOS オペレーティングシステムをネイティブでサポートしています。EC2 x86 Mac インスタンスは Mac mini ハードウェア上に構築され、3.2 GHz Intel 第 8 世代 (Coffee Lake) Core i7 プロセッサを搭載しています。EC2 M1 Mac インスタンスは Apple Silicon M1 プロセッサを搭載した Mac mini ハードウェアに構築されています。このインスタンスは、iPhone、iPad、iPod、Mac、Apple Watch、Apple TV などの Apple デバイス用のアプリケーションの開発、構築、テスト、署名に最適です。Mac インスタンスには、SSH または Apple Remote Desktop (ARD) を使用して接続できます。

注記

[unit of billing] (請求の単位) は [dedicated host] (専有ホスト) です。そのホスト上で実行されているインスタンスには追加料金はかかりません。

詳細については、「Amazon EC2 Mac インスタンス」および「料金」を参照してください。

考慮事項

Mac インスタンスには、次の考慮事項が適用されます。

  • Mac インスタンスは、Dedicated Hosts のベアメタルインスタンスとしてのみ使用でき、Dedicated Host をリリースできる前の最低割り当て期間は 24 時間です。Dedicated Host ごとに 1 つの Mac インスタンスを起動できます。Dedicated Host は、AWS アカウント、 AWS 組織内の 組織単位、あるいは AWS 組織全体と共有することができます。

  • Mac インスタンスは オンデマンドインスタンス としてのみ使用できます。スポットインスタンス または リザーブドインスタンス では使用できません。Savings Plan を購入すると、Mac インスタンスでコストを節約できます。

  • Mac インスタンスでは、次のいずれかのオペレーティングシステムを実行できます。

    • macOS Mojave (バージョン 10.14) (x86 Mac インスタンスのみ)

    • macOS Catalina (バージョン 10.15) (x86 Mac インスタンスのみ)

    • macOS Big Sur (バージョン 11)

    • macOS Monterey (バージョン 12)

  • EBS ホットプラグのサポートが開始されました。

  • AWS は、Apple ハードウェアの内部 SSD を管理またはサポートしません。代わりに、Amazon EBS ボリュームを使用することを強くお勧めします。EBS ボリュームは、他の EC2 インスタンスと同じ伸縮自在性、可用性、耐久性の利点を Mac インスタンスでもたらします。

  • Mac インスタンスで EBS のパフォーマンスを最適化するには、汎用 SSD (gp2gp3) およびプロビジョンド IOPS SSD (io1io2) の併用をお勧めします。

  • Mac インスタンスは現在、Amazon EC2 Auto Scaling をサポートしています。

  • x86 Mac インスタンスでは、自動ソフトウェア更新は無効化されています。インスタンスを本番環境に置く前に、更新を適用し、インスタンスでテストすることをお勧めします。詳細については、「オペレーティングシステムとソフトウェアの更新」を参照してください。

  • M1 Mac インスタンスでは現在、インプレースソフトウェアアップデートはサポートされていません。メジャー、マイナー、パッチの各 macOS バージョン用の新しい Amazon マシンイメージ (AMI) が配布されます。

  • Mac インスタンスを停止または終了すると、Dedicated Host でスクラブワークフローが実行されます。詳細については、Mac インスタンスの停止と終了 を参照してください。

  • 警告

    FileVault は使用しません。保存中と転送中のデータが必要な場合に、ブートの問題やパフォーマンスへの影響を回避するには、EBS 暗号化を使用します。パーティションがロックされているので、FileVault を有効にするとホストの起動に失敗します。

コンソールを使用した Mac インスタンスの起動

以下の手順で説明しているように AWS Management Console を使用して Mac インスタンスを起動できます。EC2 Mac インスタンスには専有ホストが必要です。EC2 Mac インスタンスには、2 つのファミリーがあります。

どちらのファミリーも起動の手順は同じです。Mac インスタンスを専有ホストで起動するには以下の手順を実施します。

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [Dedicated Hosts] を選択します。

  3. [Dedicated Host の割り当て] を選択し、次の操作を行います。

    1. [Instance family] (インスタンスファミリー) で、mac1 または mac2 を選択します。リストにインスタンスファミリーが表示されない場合、それは、現在選択されているリージョンではサポートされていません。

    2. [Instance type] (インスタンスタイプ) で、選択したインスタンスファミリーに基づいて mac1.metal または mac2.metal を選択します。

    3. [アベイラビリティーゾーン] で、Dedicated Host のアベイラビリティーゾーンを選択します。

    4. [数量] では 1 をそのままにします。

    5. [Allocate] を選択します。

  4. 作成した Dedicated Host を選択し、次の操作を実行します。

    1. [アクション]、[ホストへのインスタンスの起動] の順に選択します。

    2. macOS AMI を選択します。

    3. 適切なインスタンスタイプ (mac1.metal か mac2.metal) を選択してください。

    4. [インスタンスの詳細の設定] ページで、作成した Dedicated Host に基づいて [テナンシー] と [ホスト] が事前に設定されていることを確認します。

    5. mac1.metal インスタンスタイプを選択します。

    6. [インスタンスの詳細の設定] ページで、作成した Dedicated Host に基づいて [テナンシー] と [ホスト] が事前に設定されていることを確認します。必要に応じて [アフィニティ] を更新します。

    7. ウィザードを完了し、必要に応じて EBS ボリューム、セキュリティグループ、およびキーペアを指定します。

  5. インスタンスを起動することを知らせる確認ページが表示されます。[View Instances] (インスタンスを表示) を選択して確認ページを閉じ、コンソールに戻ります。インスタンスの初期状態は pending です。インスタンスの状態が running に変わると、ステータスチェックに合格すると、インスタンスは準備完了になります。

AWS CLI を使用した Mac インスタンスの起動

以下の allocate-hosts コマンドを使用して、お使いの Mac インスタンスに専有ホストを割り当て、インスタンスタイプを mac1.metal か mac2.metal に、リージョンとアベイラビリティゾーンを環境に適したものに、それぞれ置き換えます。

aws ec2 allocate-hosts --region us-east-1 --instance-type mac1.metal --availability-zone us-east-1b --auto-placement "on" --quantity 1

以下の run-instances コマンドを使用して Mac インスタンスを起動し、インスタンスタイプを mac1.metal か mac2.metal に、リージョンとアベイラビリティゾーンを以前使用したものに、それぞれ再度置き換えます。

aws ec2 run-instances --region us-east-1 --instance-type mac1.metal --placement Tenancy=host --image-id ami_id --key-name my-key-pair

インスタンスの初期状態は pending です。インスタンスの状態が running に変わると、ステータスチェックに合格すると、インスタンスは準備完了になります。インスタンスのステータス情報を表示するには、次の describe-instance-status コマンドを使用します。

aws ec2 describe-instance-status --instance-ids i-017f8354e2dc69c4f

次に、ステータスチェックに合格した実行中のインスタンスの出力例を示します。

{ "InstanceStatuses": [ { "AvailabilityZone": "us-east-1b", "InstanceId": "i-017f8354e2dc69c4f", "InstanceState": { "Code": 16, "Name": "running" }, "InstanceStatus": { "Details": [ { "Name": "reachability", "Status": "passed" } ], "Status": "ok" }, "SystemStatus": { "Details": [ { "Name": "reachability", "Status": "passed" } ], "Status": "ok" } } ] }

インスタンスの準備

以下のような小さなシェルスクリプトを使用すれば、describe-instance-status API をポーリングし、インスタンスで SSH アクセスの準備ができたかどうかを知ることができます。x86 Mac インスタンスでは、これに、起動から最大 15 分かかります。M1 Mac インスタンスでは、これに、起動から最大 40 分かかります。サンプルの インスタンス ID を自分のものに置き換えてください。

for i in seq 1 200; do aws ec2 describe-instance-status --instance-ids=i-017f8354e2dc69c4f \ --query='InstanceStatuses[0].InstanceStatus.Status'; sleep 5; done;

SSH を使用したインスタンスへの接続

重要

複数のユーザーが同時に OS にアクセスすることは可能ですが、自社の適切な macOS SLA を顧問と確認し、ワークロードのコンプライアンスを確認してください。ポート 5900 の画面共有サービスが組み込まれているため、通常、1:1 user:GUI セッションがあります。macOS 内で SSH を使用すると、sshd_config ファイルの [Max Sessions] (最大セッション) 制限まで、複数のセッションがサポートされます。

Amazon EC2 Mac インスタンスは、デフォルトではリモートルート SSH を許可しません。パスワード認証は、パスワードのブルートフォース攻撃を防ぐために無効になっています。ec2-user アカウントは、SSH を使用してリモートでログインするように設定されています。ec2-user アカウントにも sudo 権限があります。インスタンスに接続したら、他のユーザーを追加できます。

SSH を使用したインスタンスへの接続をサポートするには、SSH アクセスを許可するキーペアとセキュリティグループを使用してインスタンスを起動し、インスタンスにインターネット接続があることを確認します。インスタンスに接続するときに、キーペアの .pem ファイルを指定します。

SSH クライアントを使用して Mac インスタンスに接続するには、次の手順に従います。インスタンスの接続でエラーが発生した場合は、「インスタンスへの接続に関するトラブルシューティング」を参照してください。

SSH を使用してインスタンスに接続するには

  1. コマンドラインで「ssh」と入力して、ローカルコンピュータに SSH クライアントがインストールされていることを確認します。コンピュータがコマンドを認識しない場合は、お使いのオペレーティングシステム用の SSH クライアントを検索し、インストールします。

  2. インスタンスのパブリック DNS 名を取得します。Amazon EC2 コンソールを使用して、[詳細] タブと [ネットワーク] タブの両方でパブリック DNS 名を確認できます。AWS CLI を使用して、describe-instances コマンドを使用してパブリック DNS 名を見つけることができます。

  3. インスタンスの起動時に指定したキーペアの .pem ファイルを見つけます。

  4. 次の ssh コマンドを使用してインスタンスに接続し、インスタンスのパブリック DNS 名と .pem ファイルを指定します。

    ssh -i /path/key-pair-name.pem ec2-user@instance-public-dns-name

Apple Remote Desktop を使用してインスタンスに接続する

Apple Remote Desktop (ARD) を使用してインスタンスに接続するには、以下の手順に従います。

注記

macOS 10.14 以降では、画面共有がシステム環境設定で有効になっている場合のみ制御できます。

ARD を使用してインスタンスに接続するには

  1. ローカルコンピューターに、ARD をサポートしている ARD クライアントまたは VNC クライアントが、インストールされていることを確認します。macOS では、組み込みの画面共有アプリケーションを利用できます。インストールされていない場合は、お使いのオペレーティングシステム向けの ARD を検索し、インストールします。

  2. ローカルコンピューターから、SSH を使用してインスタンスに接続します

  3. 次のように passwd コマンドを使用して、ec2-user アカウントのパスワードを設定します。

    [ec2-user ~]$ sudo passwd ec2-user
  4. 次の手順に従って Apple Remote Desktop エージェントを起動し、リモートデスクトップへのアクセスを有効にします。

    [ec2-user ~]$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \ -activate -configure -access -on \ -restart -agent -privs -all
  5. コンピュータから、次の ssh コマンドを使用してインスタンスに接続します。前のセクションで示したオプションに加えて、ポート転送を有効にしローカルポート 5900 のすべてのトラフィックをインスタンスの ARD サーバーに転送する場合は、-L オプションを使用します。

    ssh -L 5900:localhost:5900 -i /path/key-pair-name.pem ec2-user@instance-public-dns-name
  6. ローカルコンピュータから、ARD をサポートしている ARD クライアントまたは VNC クライアントを使用して、ポート 5900 を通じローカルホストに接続します。例えば、macOS で画面共有アプリケーションを次のように使用します。

    1. Finder を開き、画面共有アプリケーションを起動します。

    2. [Connect to] に、「localhost」と入力します。

    3. プロンプトに従って、ec2-user を使用して ec2-user アカウント用に作成したユーザ名とパスワードでログインします。

Mac インスタンスで macOS の画面解像度を変更する

ARD またはインストールされた ARD をサポートする VNC クライアントを使用して EC2 Mac インスタンスに接続したら、displayplacer などの公開されている macOS ツールまたはユーティリティのいずれかを使用して macOS 環境の画面解像度を変更できます。

注記

displayplacer の現在のビルドは、M1 Mac インスタンスでサポートされていません

displayplacer を使用して画面解像度を変更する

  1. displayplacer をインストールします。

    brew tap jakehilborn/jakehilborn && brew install displayplacer
  2. 現在の画面情報と可能な画面解像度を表示します。

    displayplacer list
  3. 希望の画面解像度を適用します。

    displayplacer "id:<screenID> res:<width>x<height> origin:(0,0) degree:0"

    次に例を示します。

    RES="2560x1600" displayplacer "id:69784AF1-CD7D-B79B-E5D4-60D937407F68 res:${RES} scaling:off origin:(0,0) degree:0"

EC2 macOS AMI

Amazon EC2 macOS は、Amazon EC2 Mac インスタンスで実行されるデベロッパーワークロードに対して、安定性、安全性、高パフォーマンスの環境を実現するように設計されています。EC2 macOS AMI には、起動設定ツールや一般的な AWS ライブラリやツールなど、AWS との統合を容易にするパッケージが含まれています。EC2 macOS AMI には、デフォルトで以下が含まれます。

  • ENA ドライバー

  • EC2 macOS Init

  • macOS 用の SSM Agent

  • macOS の EC2 System Monitoring (x86 Mac インスタンスのみ)

  • AWS Command Line Interface (AWS CLI) バージョン 2

  • Xcode 用のコマンドラインツール

  • Homebrew

AWS は、更新済みの EC2 macOS AMI を定期的に提供します。これには、AWS が所有するパッケージの更新と、完全にテストされた macOS の最新バージョンが含まれます。さらに、AWS は更新された AMI を提供し、さらに完全にテストおよび検証できるとすぐに最新のマイナーバージョンアップデートやメジャーバージョンアップデートを提供します。Mac インスタンスのデータやカスタマイズ情報を保持する必要がない場合は、現在の AMI を使用して新しいインスタンスを起動してから、前のインスタンスを終了することで、最新の更新プログラムを取得できます。また、Mac インスタンスに適用するアップデートを選択できます。

オペレーティングシステムとソフトウェアの更新

警告

この構成は現在サポートされていないため、EC2 Mac インスタンスにベータ版またはプレリリース版の macOS をインストールしないでください。ベータ版またはプレリリース版の macOS をインストールすると、インスタンスを停止または終了した際に、EC2 Mac 専有ホストがデグレードし、そのホストで新しいインスタンスを開始または起動できなくなります。

x86 Mac インスタンスでは、softwareupdate コマンドを使用して、Apple からオペレーティングシステムの更新をインストールできます。オペレーティングシステムのインプレース更新は、現在、M1 Mac インスタンスではサポートされていません。

x86 Mac インスタンスで Apple からオペレーティングシステムの更新プログラムをインストールするには

  1. 次のコマンドを使用して、利用可能な更新プログラムを含むパッケージを一覧表示します。

    [ec2-user ~]$ softwareupdate --list
  2. すべての更新プログラムをインストールするか、特定の更新プログラムのみをインストールします。特定の更新プログラムをインストールするには、次のコマンドを使用します。

    [ec2-user ~]$ sudo softwareupdate --install label

    すべての更新プログラムをインストールするには、次のコマンドを使用します。

    [ec2-user ~]$ sudo softwareupdate --install --all --restart

システム管理者は、AWS Systems Manager を使用することで、事前に承認されたオペレーティングシステムの更新を x86 Mac インスタンスにロールアウトできます。詳細については、AWS Systems Manager ユーザーガイドを参照してください。

Homebrew を使用して、EC2 macOS AMI にパッケージへの更新プログラムをインストールします。これにより、インスタンスでこのパッケージの最新バージョンを使用できます。また、Homebrew を使用して Amazon EC2 macOS に共通の macOS アプリケーションをインストールして実行することもできます。詳細については、Homwbrew ドキュメントを参照してください。

Homebrew を使用して更新プログラムをインストールするには

  1. 次のコマンドを使用して Homwbrew を更新します。

    [ec2-user ~]$ brew update
  2. 次のコマンドを使用して、利用可能な更新プログラムを含むパッケージを一覧表示します。

    [ec2-user ~]$ brew outdated
  3. すべての更新プログラムをインストールするか、特定の更新プログラムのみをインストールします。特定の更新プログラムをインストールするには、次のコマンドを使用します。

    [ec2-user ~]$ brew upgrade package name

    すべての更新プログラムをインストールするには、次のコマンドを使用します。

    [ec2-user ~]$ brew upgrade

EC2 macOS Init

EC2 macOS Init は、起動時に EC2 Mac インスタンスを初期化するために使用します。優先順位グループを使用して、タスクの論理グループを同時に実行します。

launchd plist ファイルは /Library/LaunchDaemons/com.amazon.ec2.macos-init.plist です。EC2 macOS Init 用のファイルは、/usr/local/aws/ec2-macos-init にあります。

詳細については、https://github.com/aws/ec2-macos-init を参照してください。

macOS 用の EC2 System Monitoring

macOS 用の EC2 System Monitoring は、Amazon CloudWatch で CPU 使用率メトリクスを使用できるようにします。このメトリクスは、カスタムシリアルデバイス経由で 1 分間隔で CloudWatch に送信されます。このエージェントを有効または無効にするには、次の手順に従います。このエージェントは、デフォルトでは有効になっています。

sudo setup-ec2monitoring [enable | disable]
注記

macOS の EC2 System Monitoring は、現在、M1 Mac インスタンスではサポートされていません。

Mac インスタンスの EBS ボリュームのサイズを増やす

Mac インスタンスの Amazon EBS ボリュームのサイズを増やすことができます。詳細については、Amazon EBS Elastic Volumes を参照してください。

ボリュームのサイズを大きくした後、APFS コンテナのサイズを以下のように大きくする必要があります。

使用可能なディスク容量を増やす

  1. 再起動が必要かどうかを判断します。実行中の Mac インスタンスで既存の EBS ボリュームのサイズを変更した場合、新たなサイズを使用可能にするには、そのインスタンスを再起動する必要があります。起動中にディスク領域の変更が行われた場合、再起動は必要ありません。

    ディスクサイズに関する現在のステータスを表示します。

    [ec2-user ~]$ diskutil list external physical /dev/disk0 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *322.1 GB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_APFS Container disk2 321.9 GB disk0s2
  2. 以下のコマンドをコピーして貼り付けます。

    PDISK=$(diskutil list physical external | head -n1 | cut -d" " -f1) APFSCONT=$(diskutil list physical external | grep "Apple_APFS" | tr -s " " | cut -d" " -f8) yes | sudo diskutil repairDisk $PDISK
  3. 以下のコマンドをコピーして貼り付けます。

    sudo diskutil apfs resizeContainer $APFSCONT 0

Mac インスタンスの停止と終了

Mac インスタンスを停止すると、インスタンスは、stopping 状態に入るまでの約 15 分間は stopped 状態のままになります。

Mac インスタンスを停止または終了すると、Amazon EC2 は基盤となる専有ホスト上でスクラブワークフローを実行して、内部 SSD を消去し、永続的な NVRAM 変数をクリアし、最新のデバイスファームウェアに更新します。これにより、Mac インスタンスは、他の EC2 Nitro インスタンスと同じセキュリティとデータプライバシーを提供できます。また、最新の macOS AMI を実行することも可能です。スクラブワークフローの最中に、専有ホストは一時的に保留状態になります。x86 Mac インスタンスでは、スクラブワークフローが完了するまでに最大で 50 分かかります。M1 Mac インスタンスでは、スクラブワークフローが完了するまでに最大で 110 分かかります。さらに、x86 Mac インスタンスでは、デバイスファームウェアの更新が必要となる場合、スクラブワークフローが完了するまでに最大で 3 時間かかります。

スクラブワークフローが完了するまで、停止した Mac インスタンスを起動したり、新しい Mac インスタンスを起動したりすることはできません。完了の時点で、Dedicated Host は available 状態になります。

専有ホストが pending 状態になると、メータリングと課金が一時停止されます。スクラブワークフロー中は課金されません。

macOS AMI の通知へのサブスクライブ

新しい AMI のリリース時、あるいは BridgeOS の更新時に通知を受け取るには、Amazon SNS を使用して通知にサブスクライブします。

macOS AMI の通知にサブスクライブするには

  1. Amazon SNS コンソール(https://console.aws.amazon.com/sns/v3/home)を開きます。

  2. ナビゲーションバーで、必要に応じて、リージョンを [米国東部 (バージニア北部)] に変更します。購読する SNS 通知がこのリージョンで作成されているため、このリージョンを使用する必要があります。

  3. ナビゲーションペインで [Subscriptions] を選択します。

  4. [Create subscription] を選択します。

  5. [サブスクリプションの作成] ダイアログボックスで、次の操作を行います。

    1. [ARN のトピック] で、次の Amazon リソースネーム (ARN) のいずれかをコピーアンドペーストします。

      • arn:aws:sns:us-east-1:898855652048:amazon-ec2-macos-ami-updates

      • arn:aws:sns:us-east-1:898855652048:amazon-ec2-bridgeos-updates

      [プロトコル] の設定

    2. E メール:

      [エンドポイント] では、通知を受信するために使用できる E メールアドレスを入力します。サブスクリプションを作成した後、件名が「AWS Notification - Subscription Confirmation」とされた確認メッセージが送られてきます。このメールを開き、[サブスクリプションの確認] をクリックして受信登録を完了します。

    3. SMS:

      エンドポイントに、通知を受信するために使用する E メールアドレスを入力します。

    4. AWS Lambda、Amazon SQS、Amazon Kinesis Data Firehose (通知は JSON 形式で送信されます):

      [Endpoint] (エンドポイント) に、通知を受信するために使用する Lambda 関数、SQS キュー、または Firehose ストリームの ARN を入力します。

    5. [Create subscription] を選択します。

macOS AMI がリリースされるたびに、amazon-ec2-macos-ami-updates トピックのサブスクライバーに対し通知が送信されます。BridgeOS が変更されるたびに、amazon-ec2-bridgeos-updates トピックのサブスクライバーに対し通知が送信されます。通知が不要になった場合は、次の手順で受信登録を解除します。

macOS AMI の通知のサブスクライブを解除するには

  1. Amazon SNS コンソール(https://console.aws.amazon.com/sns/v3/home)を開きます。

  2. ナビゲーションバーで、必要に応じて、リージョンを [米国東部 (バージニア北部)] に変更します。SNS 通知はこのリージョンで作成されたため、このリージョンを使用する必要があります。

  3. ナビゲーションペインで [Subscriptions] を選択します。

  4. サブスクリプションを選択し、[アクション]、[サブスクリプションの削除] を選択します。確認のプロンプトが表示されたら、[削除] を選択します。

Mac インスタンス用の Dedicated Host を解放する

Mac インスタンスの使用が終了したら、Dedicated Host を解放することでクリーンアップできます。Dedicated Host を解放する前に、Mac インスタンスを停止または終了する必要があります。割り当て期間が少なくとも 24 時間を超えるまで、ホストを解放することはできません。

Dedicated Host を解放するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. インスタンスを選択し、[インスタンスの状態] をクリックしてから、[インスタンスの停止] または [インスタンスの終了 ] を選択します。

  4. ナビゲーションペインで [Dedicated Hosts] を選択します。

  5. Dedicated Host を選択し、[アクション]、[ホストの解放] の順に選択します。

  6. 確認を求めるメッセージが表示されたら、[解放] を選択します。