Amazon EC2 Mac Instance を早速使ってみました

こんにちは。
本記事は、株式会社日立システムズのアドベントカレンダーの12/1の記事です。

2020/12/1 に公開された、 Amazon EC2 Mac Instance を早速使ってみました。
https://aws.amazon.com/jp/blogs/aws/new-use-mac-instances-to-build-test-macos-ios-ipados-tvos-and-watchos-apps/

本稿記載時点では、以下のリージョンでのみサポートされています。
また、一部のリージョンでは、起動制限数が0になっているため、制限解除が必要です。

* 米東（北バージニア）
* 米東（オハイオ）
* 米西（オレゴン）
* 欧州（アイルランド）
* アジア太平洋（シンガポール）

今回は、シンガポールリージョンで試してみました。

## 準備
### Dedicated Host を用意する
EC2 のコンソールへアクセスし、画面左側の「専有ホスト」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/3044a737-2177-3157-19b9-17470de50582.png)

[専有ホストを割り当て]ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/1d4c2068-311c-a406-31df-4539d490f148.png)

専有ホストの設定を適宜実施する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/2e895c2a-09bc-baee-5846-a60822a0ddf4.png)

設定例：
* Name tag: 専有ホストの名称を指定。(例：machost)
* インスタンスファミリー: **mac1**
* 複数のインスタンスタイプをサポート: 有効化のチェックを外す
* インスタンスタイプ: **mac1.metal**
* アベイラビリティゾーン: 任意のアベイラビリティゾーンを指定する

その他の設定については、今回の検証では試していませんが、必要に応じて試してみてください。

設定が終わったら、スクロールし、[割り当て]ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/b7880c1f-b0c6-acec-89c3-0ca458d4d91b.png)

割り当てが終わると、以下のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/87e755ef-c669-1e16-1b59-31b68d490c12.png)

#### 注意点
mac1.metal 専有ホストは作成後少なくとも２４時間は解放できません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/5a76fcd3-2fa2-b9ee-6335-158a521fc86c.png)

### EC2 Instance を起動する
Dedicated Host(専有ホスト)の設定が終わったら、次に EC2 インスタンスを起動します。

EC2 のコンソールから「インスタンス」を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/0a153ccd-620b-78bc-8991-7128f2f3ddfb.png)

画面右側の「インスタンスを起動」ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/01ed7222-ddc8-d1b6-5998-e736049683b5.png)

#### ステップ 1: Amazon マシンイメージ (AMI)
好みの macOS の AMI の右側にある、「選択」ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/0f618e6a-59d4-3bb3-016d-d35b191fdc48.png)

#### ステップ 2: インスタンスタイプの選択
インスタンスタイプの選択はデフォルトで「mac1.metal」が選択されているので、そのままにして、画面右下の「次のステップ: インスタンスの詳細の設定」ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/d9c4cce9-f527-a97c-278b-39e60203378f.png)

#### ステップ 3: インスタンスの詳細の設定
起動台数やアベイラビリティゾーンの設定は、Dedicated Host割り当て時に設定したものにする。
IAM ロールなどは適宜設定。

画面スクロールし、真ん中あたりにある「ホスト」の箇所において、Dedicated Hostで割り当てを行ったホストを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/9f923fba-0720-f687-4675-8e1e88e485ae.png)

#### ステップ 4: ストレージの追加
必要に応じて容量を増やしたり、個数を増やしたりする。

#### ステップ 5: タグの追加
必要に応じて Tag を設定する。

#### ステップ 6: セキュリティグループの設定
適宜、接続に使用するポートとアクセス元を指定する。
今回は、SSHを指定。GUI検証時に追加する予定。

#### ステップ 7: インスタンス作成の確認
一覧を確認し問題がなければ、「起動」ボタンをクリックして EC2 インスタンスを起動させます。

これで Amazon EC2 Mac インスタンスの起動は完了です！

## いざ接続！
### SSH
Windows 10 環境で鍵を使って TeraTerm を使って試しました。

#### ログイン直後の表示
アップルマークアスキーアートの横に EC2 アスキーアートが並んでいます。 

```sh
             .:'
         __ :'__       __|  __|_  )
      .'`  `-'  ``.    _|  (     /
     :          .-'   ___|\___|___|
     :         :
      :         `-;   Amazon EC2
       `.__.-.__.'    macOS Catalina 10.15.7

ec2-user@ip-172-31-25-*** ~ %
```


#### uname コマンドの結果
uname -a を実行して結果を確認します。

```sh
ec2-user@ip-172-31-25-*** ~ % uname -a
Darwin ip-172-31-25-***.ap-southeast-1.compute.internal 19.6.0 Darwin Kernel Version 19.6.0: Thu Oct 29 22:56:45 PDT 2020; root:xnu-6153.141.2.2~1/RELEASE_X86_64 x86_64
```

#### sw_vers コマンドの結果
sw_vers　を実行して結果を確認します。

```sh
ec2-user@ip-172-31-25-*** ~ % sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.7
BuildVersion:   19H15
```

#### brew コマンドの結果
brew list コマンドを実行して、何がインストールされているか確認します。

```sh
ec2-user@ip-172-31-25-*** ~ % brew list
awscli				python@3.9
ec2-macos-init			readline
ec2-macos-system-monitor	sqlite
gdbm				xz
openssl@1.1
amazon-ena-ethernet             amazon-ssm-agent
```

#### ストレージの見え方を確認
df コマンドを実行して、ストレージの見え方を確認します。

```sh
ec2-user@ip-172-31-25-*** ~ % df -h
Filesystem      Size   Used  Avail Capacity iused     ifree %iused  Mounted on
/dev/disk2s5    30Gi   10Gi   11Gi    48%  488252 312036148    0%   /
devfs          186Ki  186Ki    0Bi   100%     642         0  100%   /dev
/dev/disk2s1    30Gi  5.7Gi   11Gi    34%  151351 312373049    0%   /System/Volumes/Data
/dev/disk2s4    30Gi  2.0Gi   11Gi    16%       1 312524399    0%   /private/var/vm
map auto_home    0Bi    0Bi    0Bi   100%       0         0  100%   /System/Volumes/Data/home
```

Macintosh HD ではないんですね。 

#### プロセスの確認
ps -ef コマンドでプロセスを確認します
ちょっと多いので、折りたたんでいます。

<details><summary>詳細を開く</summary><div>

```sh
  UID   PID  PPID   C STIME   TTY           TIME CMD
    0     1     0   0  6:08AM ??         0:02.47 /sbin/launchd
    0    40     1   0  6:10AM ??         0:00.24 /usr/sbin/syslogd
    0    41     1   0  6:10AM ??         0:00.45 /usr/libexec/UserEventAgent (System)
    0    44     1   0  6:10AM ??         0:00.05 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld
    0    45     1   0  6:10AM ??         0:30.36 /usr/libexec/kextd
    0    46     1   0  6:10AM ??         0:00.32 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd
    0    47     1   0  6:10AM ??         0:00.17 /System/Library/PrivateFrameworks/MediaRemote.framework/Support/mediaremoted
    0    51     1   0  6:10AM ??         0:00.26 /usr/sbin/systemstats --daemon
    0    52     1   0  6:10AM ??         0:00.49 /usr/libexec/configd
    0    54     1   0  6:10AM ??         0:00.03 endpointsecurityd
    0    55     1   0  6:10AM ??         0:00.16 /System/Library/CoreServices/powerd.bundle/powerd
    0    59     1   0  6:10AM ??         0:02.74 /usr/libexec/logd
    0    60     1   0  6:10AM ??         0:00.02 /usr/libexec/keybagd -t 15
    0    63     1   0  6:10AM ??         0:00.05 /usr/libexec/watchdogd
    0    66     1   0  6:10AM ??         0:00.03 /usr/libexec/warmd
    0    67     1   0  6:10AM ??         8:41.31 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
  240    68     1   0  6:10AM ??         0:00.11 /System/Library/CoreServices/iconservicesd
    0    69     1   0  6:10AM ??         0:00.35 /usr/libexec/diskarbitrationd
    0    72     1   0  6:10AM ??         0:00.27 /usr/libexec/coreduetd
    0    75     1   0  6:10AM ??         0:01.79 /usr/libexec/opendirectoryd
    0    78     1   0  6:10AM ??         0:00.22 /System/Library/CoreServices/launchservicesd
  266    79     1   0  6:10AM ??         0:00.05 /usr/libexec/timed
  213    81     1   0  6:10AM ??         0:00.05 /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd -launchd
    0    82     1   0  6:10AM ??         0:01.23 /usr/sbin/securityd -i
    0    83     1   0  6:10AM ??         0:00.01 auditd -l
  205    85     1   0  6:10AM ??         0:00.17 /usr/libexec/locationd
    0    89     1   0  6:10AM ??         0:00.01 autofsd
  244    90     1   0  6:10AM ??         0:00.34 /usr/libexec/displaypolicyd -k 1
    0    91     1   0  6:10AM ??         0:00.27 /usr/libexec/dasd
    0    94     1   0  6:10AM ??         0:00.87 /usr/libexec/PerfPowerServices
    0    97     1   0  6:10AM ??         0:00.02 /System/Library/CoreServices/logind
    0    98     1   0  6:10AM ??         0:00.04 /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/Support/revisiond
    0    99     1   0  6:10AM ??         0:00.01 /usr/sbin/KernelEventAgent
    0   101     1   0  6:10AM ??         0:00.14 /usr/sbin/bluetoothd
  261   102     1   0  6:10AM ??         0:00.06 /usr/libexec/hidd
    0   103     1   0  6:10AM ??         0:00.06 /usr/libexec/sandboxd
    0   104     1   0  6:10AM ??         0:00.96 /usr/libexec/corebrightnessd --launchd
    0   105     1   0  6:10AM ??         0:00.35 /usr/libexec/AirPlayXPCHelper
    0   106     1   0  6:10AM ??         0:00.40 /usr/sbin/notifyd
    0   107     1   0  6:10AM ??         0:18.01 /usr/libexec/syspolicyd
    0   108     1   0  6:10AM ??         0:00.06 /usr/libexec/taskgated
  241   110     1   0  6:10AM ??         0:00.09 /usr/sbin/distnoted daemon
    0   113     1   0  6:10AM ??         0:00.66 /usr/sbin/cfprefsd daemon
    0   114     1   0  6:10AM ??         0:00.71 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow console
  263   116     1   0  6:10AM ??         0:00.28 /System/Library/PrivateFrameworks/CoreAnalytics.framework/Support/analyticsd
    0   117     1   0  6:10AM ??         0:00.16 /System/Library/CoreServices/coreservicesd
    0   118     1   0  6:10AM ??         0:00.01 aslmanager
    0   121     1   0  6:10AM ??         0:00.40 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/authd.xpc/Contents/MacOS/authd
    0   122     1   0  6:10AM ??         0:00.15 /System/Library/PrivateFrameworks/TCC.framework/Resources/tccd system
    0   132     1   0  6:10AM ??         0:16.59 /usr/libexec/lsd runAsRoot
    0   135     1   0  6:10AM ??         0:00.27 /usr/libexec/nehelper
   65   136     1   0  6:10AM ??         0:00.17 /usr/sbin/mDNSResponder
    0   140     1   0  6:10AM ??         0:00.11 /usr/libexec/searchpartyd
    0   150     1   0  6:10AM ??         0:06.32 /usr/libexec/trustd
  202   151     1   0  6:10AM ??         0:00.29 /usr/sbin/coreaudiod
  202   165     1   0  6:10AM ??         0:00.03 /System/Library/Frameworks/CoreAudio.framework/Versions/A/XPCServices/com.apple.audio.DriverHelper.xpc/Contents/MacOS/com.apple.audio.DriverHelper
    0   166     1   0  6:10AM ??         0:00.26 /usr/libexec/mobileassetd
   88   168     1   0  6:10AM ??         0:03.71 /System/Library/PrivateFrameworks/SkyLight.framework/Resources/WindowServer -daemon
    0   169     1   0  6:10AM ??         0:00.00 /usr/libexec/smd
    0   170     1   0  6:10AM ??         0:00.29 /usr/libexec/diskmanagementd
    0   171     1   0  6:10AM ??         0:00.03 /System/Library/PrivateFrameworks/WirelessDiagnostics.framework/Support/awdd
    0   172     1   0  6:10AM ??         0:00.03 /System/Library/PrivateFrameworks/SystemAdministration.framework/XPCServices/writeconfig.xpc/Contents/MacOS/writeconfig
    0   173     1   0  6:10AM ??         0:00.14 /usr/libexec/airportd
  242   174     1   0  6:10AM ??         0:00.19 /usr/libexec/nsurlsessiond --privileged
    0   175     1   0  6:10AM ??         0:00.01 /usr/libexec/multiversed
    0   176     1   0  6:10AM ??         0:00.01 /System/Library/CryptoTokenKit/com.apple.ifdreader.slotd/Contents/MacOS/com.apple.ifdreader
    0   177     1   0  6:10AM ??         0:00.02 /usr/libexec/apfsd
    0   178     1   0  6:10AM ??         0:00.05 /usr/libexec/usbd
    0   179     1   0  6:10AM ??         0:00.01 /usr/libexec/firmwarecheckers/ethcheck/ethcheck --integrity-check-daemon
  200   190     1   0  6:10AM ??         0:00.01 /System/Library/PrivateFrameworks/BridgeOSSoftwareUpdate.framework/Support/bosUpdateProxy
    0   191     1   0  6:10AM ??         0:00.10 /System/Library/CoreServices/SubmitDiagInfo server-init
  205   196     1   0  6:10AM ??         0:01.57 /System/Library/PrivateFrameworks/GeoServices.framework/Versions/A/XPCServices/com.apple.geod.xpc/Contents/MacOS/com.apple.geod
  205   197     1   0  6:10AM ??         0:00.26 /usr/libexec/secinitd
  205   198     1   0  6:10AM ??         0:00.01 /usr/sbin/cfprefsd agent
  205   200     1   0  6:10AM ??         0:00.82 /usr/libexec/trustd --agent
    0   268     1   0  6:10AM ??         0:00.06 /usr/libexec/sysmond
    0   269    51   0  6:10AM ??         0:00.04 /usr/sbin/systemstats --logger-helper /private/var/db/systemstats
    0   270     1   0  6:10AM ??         0:01.74 /System/Library/PrivateFrameworks/XprotectFramework.framework/Versions/A/XPCServices/XprotectService.xpc/Contents/MacOS/XprotectService
    0   271     1   0  6:10AM ??         0:00.19 /System/Library/PrivateFrameworks/CoreDuetContext.framework/Resources/contextstored
    0   276     1   0  6:10AM ??         0:00.09 /usr/sbin/mDNSResponderHelper
    0   277     1   0  6:10AM ??         0:00.05 /usr/libexec/findmydeviced
   24   278     1   0  6:10AM ??         0:00.08 /usr/libexec/symptomsd
    0   293     1   0  6:10AM ??         0:00.30 /System/Library/PrivateFrameworks/ApplePushService.framework/apsd
    0   295     1   0  6:10AM ??         0:00.01 /System/Library/CoreServices/ReportCrash daemon
    0   297     1   0  6:10AM ??         0:00.01 /System/Library/Frameworks/PreferencePanes.framework/Versions/A/XPCServices/cacheAssistant.xpc/Contents/MacOS/cacheAssistant
    0   298     1   0  6:10AM ??         0:00.49 /usr/libexec/secinitd
    0   341     1   0  6:11AM ??         0:00.06 /usr/libexec/nesessionmanager
    0   346     1   0  6:11AM ??         0:00.06 /System/Library/Frameworks/SystemExtensions.framework/Versions/A/Helpers/sysextd
    0   347     1   0  6:11AM ??         0:00.05 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/com.apple.CodeSigningHelper.xpc/Contents/MacOS/com.apple.CodeSigningHelper
    0   414     1   0  6:13AM ??         0:00.10 /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper -launchd
    0   422     1   0  6:13AM ??         0:00.03 /System/Library/Frameworks/AudioToolbox.framework/AudioComponentRegistrar -daemon
  202   423     1   0  6:13AM ??         0:00.01 /System/Library/Frameworks/AudioToolbox.framework/XPCServices/com.apple.audio.SandboxHelper.xpc/Contents/MacOS/com.apple.audio.SandboxHelper
  270   424     1   0  6:13AM ??         0:00.02 /System/Library/DriverExtensions/AppleUserHIDDrivers.dext/AppleUserHIDDrivers com.apple.driverkit.AppleUserUSBHostHIDDevice0 0x1000006cc
    0   425     1   0  6:13AM ??         0:00.01 /usr/libexec/thermald
  270   426     1   0  6:13AM ??         0:00.00 /System/Library/DriverExtensions/AppleUserHIDDrivers.dext/AppleUserHIDDrivers com.apple.driverkit.AppleUserHIDEventDriver 0x1000006fc
    0   428     1   0  6:13AM ??         0:00.04 /usr/libexec/runningboardd
    0   429     1   0  6:13AM ??         0:00.17 /System/Library/Frameworks/InputMethodKit.framework/Resources/imklaunchagent
    0   430     1   0  6:13AM ??         0:00.05 /usr/libexec/UserEventAgent (LoginWindow)
    0   431     1   0  6:13AM ??         0:00.05 /usr/sbin/universalaccessd launchd -s
    0   432     1   0  6:13AM ??         0:00.47 /usr/libexec/pkd
  205   433     1   0  6:13AM ??         0:00.02 /usr/sbin/distnoted agent
    0   434     1   0  6:13AM ??         4:34.75 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mds_stores
   89   448     1   0  6:13AM ??         0:00.85 /usr/libexec/trustd --agent
   88   451     1   0  6:13AM ??         0:06.85 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService
    0   452     1   0  6:13AM ??         0:00.01 /usr/local/Cellar/ec2-macos-system-monitor/1.1.0/libexec/bin/ec2monitoring-relayd
   89   456     1   0  6:13AM ??         0:00.02 /usr/sbin/distnoted agent
   97   464     1   0  6:13AM ??         0:00.52 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/ATS.framework/Support/fontd
    0   469     1   0  6:13AM ??         0:00.01 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/CVMServer
    0   470     1   0  6:13AM ??         0:00.01 /usr/libexec/colorsync.displayservices
    0   471     1   0  6:13AM ??         0:00.02 /usr/libexec/colorsyncd
    0   472     1   0  6:13AM ??         0:00.03 /System/Library/PrivateFrameworks/AmbientDisplay.framework/Versions/A/XPCServices/com.apple.AmbientDisplayAgent.xpc/Contents/MacOS/com.apple.AmbientDisplayAgent
   55   473     1   0  6:13AM ??         0:00.02 /System/Library/CoreServices/appleeventsd --server
    0   476     1   0  6:13AM ??         0:00.02 /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/XPCServices/ViewBridgeAuxiliary.xpc/Contents/MacOS/ViewBridgeAuxiliary
    0   477     1   0  6:13AM ??         0:00.02 /usr/sbin/distnoted agent
    0   478     1   0  6:13AM ??         0:00.02 /usr/libexec/bootinstalld
    0   479     1   0  6:13AM ??         0:00.02 /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/XPCServices/ViewBridgeAuxiliary.xpc/Contents/MacOS/ViewBridgeAuxiliary
   92   480     1   0  6:13AM ??         0:03.61 /System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle/Contents/MacOS/SecurityAgent
    0   481     1   0  6:13AM ??         0:00.03 /System/Library/CoreServices/ManagedClient.app/Contents/MacOS/ManagedClient
    0   482     1   0  6:13AM ??         0:00.01 /usr/libexec/corecaptured
    0   483     1   0  6:13AM ??         0:00.02 /usr/sbin/spindump
   88   484     1   0  6:13AM ??         0:00.24 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService
   92   485     1   0  6:13AM ??         0:00.15 /System/Library/Frameworks/VideoToolbox.framework/Versions/A/XPCServices/VTDecoderXPCService.xpc/Contents/MacOS/VTDecoderXPCService
   92   486     1   0  6:13AM ??         0:00.10 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService
    0   491     1   0  6:13AM ??         0:00.01 /System/Library/PrivateFrameworks/AccountPolicy.framework/XPCServices/com.apple.AccountPolicyHelper.xpc/Contents/MacOS/com.apple.AccountPolicyHelper
    0   492     1   0  6:13AM ??         0:00.02 /System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd
    0   493     1   0  6:13AM ??         0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp -d
    0   495     1   0  6:13AM ??         0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp
    0   496     1   0  6:13AM ??         0:00.03 /System/Library/Frameworks/CryptoTokenKit.framework/ctkd -tw
    0   498     1   0  6:13AM ??         0:00.02 /usr/sbin/systemsoundserverd
  259   500     1   0  6:14AM ??         0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkd -s
  501   514     1   0  6:14AM ??         0:00.03 /usr/sbin/cfprefsd agent
  501   515     1   0  6:14AM ??         0:14.00 /usr/libexec/lsd
  501   516     1   0  6:14AM ??         0:01.21 /usr/libexec/trustd --agent
  501   517     1   0  6:14AM ??         0:00.02 /usr/sbin/distnoted agent
  501   518     1   0  6:14AM ??         0:00.07 /usr/libexec/secd
  222   585     1   0  6:14AM ??         0:00.08 /usr/sbin/netbiosd
    0   588     1   0  6:14AM ??         0:00.66 /opt/aws/ssm/bin/amazon-ssm-agent
    0   674     1   0  6:14AM ??         0:00.22 /System/Library/CoreServices/iconservicesagent runAsRoot
    0   675     1   0  6:14AM ??         0:00.07 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService
    0   676     1   0  6:14AM ??         0:00.05 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService
    0   681   588   0  6:14AM ??         0:01.27 /opt/aws/ssm/bin/ssm-agent-worker
    0   697     1   0  6:14AM ??         0:00.35 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/SpeechSynthesis.framework/Resources/com.apple.speech.speechsynthesisd
    0   698     1   0  6:14AM ??         0:00.01 /System/Library/Frameworks/AudioToolbox.framework/XPCServices/com.apple.audio.SandboxHelper.xpc/Contents/MacOS/com.apple.audio.SandboxHelper
  200   745     1   0  6:15AM ??         0:05.63 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated
    0   747     1   0  6:15AM ??         0:00.01 /System/Library/CoreServices/Software Update.app/Contents/Resources/suhelperd
    0   748     1   0  6:15AM ??         0:00.13 /usr/libexec/rtcreportingd
  243   749     1   0  6:15AM ??         0:00.15 /usr/libexec/nsurlstoraged --privileged
    0  1712     1   0  6:34AM ??         0:00.03 sshd: ec2-user [priv] 
  501  1719  1712   0  6:35AM ??         0:00.01 sshd: ec2-user@ttys000 
  501  1720  1719   0  6:35AM ttys000    0:00.01 -zsh
    0  1727  1720   0  6:36AM ttys000    0:00.00 ps -ef
```

</div></details>

### VNC(GUI)接続
VNC 接続を行えるように、SSH 接続で Amazon EC2 Mac Instance に接続して以下の操作を行います。
また、AWSの[発表記事](https://aws.amazon.com/jp/blogs/aws/new-use-mac-instances-to-build-test-macos-ios-ipados-tvos-and-watchos-apps/)にある通り、VNCにはセキュリティ脆弱性があるので、セキュリティグループの設定を厳しくしたり、記事中にあるとおり、SSH経由でVNCをトンネリングしたりすることも合わせてご検討ください。

#### (検証用途として)ec2-user のパスワードをリセット（再設定）する
今回はとりあえず、VNC で接続できることを確認したいので、サクッと ec2-user のパスワードをリセット（再設定）してしまいます。
passwd コマンドでも構わないのですが、 macOS ではユーザー管理はディレクトリ構造となっており、 dscl コマンドで実行します。

```sh
sudo dscl . -passwd /Users/ec2-user <Password文字列>
```

#### VNC Server を起動する
以下のコマンドを実行する

```sh
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -on -clientopts -setvnclegacy -vnclegacy yes -clientopts -setvncpw -vncpw <Password文字列> -restart -agent -privs -all
```

#### VNC 接続をする
検証時は、自前の Macbook Pro(Big Sur)環境の画面共有(VNC)機能で行いました。
WindowsやLinuxなどの方は適宜、VNCアプリを使ってください。

macOS のFinder の「移動」ー＞[サーバへ接続]を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/d49a460f-45d0-a908-f0ed-51d5fe6ffe7a.png)

サーバへ接続のウィンドウが開いたら、Amazon EC2 Mac Instance のIPアドレス（今回はグローバルIPv4アドレス）を以下のように指定し、接続ボタンをクリックする。
vnc://***.***.***.***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/c2544cbc-f76e-bea7-3f0e-4528aacde00a.png)

ユーザ名とパスワードを指定するウィンドウが開くので以下のように指定し、サインインボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/bdb98879-55db-7590-d8ab-e7b2f112eb4e.png)

すると、macOS ログイン画面が表示されるので、パスワードを指定し、Enterキーを押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/5e273f62-d866-def0-bc65-5fa5dbc254dd.png)

ログインが行えれば、以下のように macOS のデスクトップ画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/f78b7198-181d-e0fc-0df6-149af5d60c0e.png)

### おまけ
Geekbench 5 を使ってベンチマークをとってみました。
Mac mini(Late 2018)のようです。

#### CPU ベンチの結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/8383c57a-8939-1c14-cdb4-51c7964ebc90.png)

#### Compute ベンチの結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/fe2fd9d4-aa36-3f6d-6db8-a06f68c715d4.png)

### 価格
シンガポールリージョンでは 1時間当たり 1.354 USD のようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/c4e2c3b1-94cc-c54b-4927-c0dbc06cf18d.png)


## まとめ
macOS が Amazon EC2 インスタンスでサポートされたことで、シンクライアントから AWS 上の mac による開発環境へ接続して利用するといったことができるようになりました。
しかも、ほぼまっさらな状態で利用ができるためカスタム AMI を利用しての開発環境統一といったこともしやすそうですね。
さらに、各種記事にもありましたが、iOSアプリなどの開発環境を集約できるといったことも期待されています。
また、最近リリースされた M1 Chip 搭載モデルにも対応予定とのことで、これからとても楽しみなサービスアップデートでした。

記載されている会社名、製品名、サービス名、ロゴ等は各社の商標または登録商標です。