Slide 1

Slide 1 text

© NTT Communications Corporation All Rights Reserved. AWS CDKでもMacを
 管理したい
 moban


Slide 2

Slide 2 text

© NTT Communications Corporation All Rights Reserved. 2 自己紹介
 - 氏名
 - moban - 所属
 - NTT Communications 株式会社 - イノベーションズセンター - やっていること
 - パブリッククラウドとハイブリッドクラウドの検証 - AWS / GCP/ Azure の検証とか - 好きなこと
 - IaC - クラウド - DevOps

Slide 3

Slide 3 text

© NTT Communications Corporation All Rights Reserved. 3 Mac on AWS
 - 2020 年に Mac インスタンスが登場 
 - Mac mini を Thunderbolt 3 で Nitro System に接続したもの - AWS で Mac が利用可能に - Intel 版 - ap-northeast-1 でも現在利用可能 - 2022 年に M1 Mac インスタンスが GA 
 - arm Mac が利用可能に - 現在 ap-northeast-1 では利用不可だが、 us-east-1 などでは利用可能 - Apple 側からの要請によって最低利用時間として24時間必要 
 - 借りてから24時間経てばいつでも返却可能 - 課金単位時間は1秒 - mac1.metal か mac2.metal な専有ホストを借りて、その上に mac AMI を 
 投入して利用する
 - 要は Mac mini 本体をまず借りて、その上で macOS を動かすイメージ

Slide 4

Slide 4 text

© NTT Communications Corporation All Rights Reserved. 4 値段
 1時間あたり(USD)*1 *2 1ヶ月かかる料金(USD)*1 *3 Intel Mac 1.083 790.59 Arm Mac 0.65 474.5 1. us-east-1 基準
 2. Intel Mac は ap-northeast-1 だと 1.399 USD
 3. 1ヶ月 = 730 時間


Slide 5

Slide 5 text

© NTT Communications Corporation All Rights Reserved. 5 CDK 化手順
 1. 専有ホストで Mac を借りる 
 2. 起動したい Mac AMI を選択 
 3. 専有ホストを指定して 2. の AMI を指定して EC2 インスタンス起動 


Slide 6

Slide 6 text

© NTT Communications Corporation All Rights Reserved. 6 コード
 // CfnHost: CloudFormation における専有ホスト用コンポーネント const macHost = new cdk.aws_ec2.CfnHost(scope, "MacHost", { // Arm Mac を利用するので us-east-1 の AZ を指定している // Intel Mac であれば ap-northeast-1 の AZ も利用できる availabilityZone: "us-east-1a", // Intel Mac を借りたければ `mac1.metal` に変更する instanceType: "mac2.metal", });

Slide 7

Slide 7 text

© NTT Communications Corporation All Rights Reserved. 7 コード
 const macInstance = new cdk.aws_ec2.Instance(this, "MacInstance", { // … // インスタンスタイプには macHost の instanceType と同じものを指定する instanceType: new cdk.aws_ec2.InstanceType("mac2.metal"), machineImage: cdk.aws_ec2.MachineImage.lookup({ // macOS 12 (Monterey) を利用 name: "amzn-ec2-macos-12.*-arm64", owners: ["amazon"], }), }); // macOS インスタンスを専有ホストに紐付け // L2 コンストラクタには `hostId`プロパティを設定する方法がないので、 // L2 コンストラクタから L1 コンストラクタをひっぱって無理矢理設定 (instance.node.defaultChild as cdk.aws_ec2.CfnInstance).hostId = macHost.attrHostId;

Slide 8

Slide 8 text

© NTT Communications Corporation All Rights Reserved. 8 まとめ
 - AWS Mac について解説 
 - 最低 24 時間の割り当て - 専有ホストによる提供 - ap-northeast-1 では Intel Mac のみ提供 - AWS Mac を CDK で借りる方法について解説 
 - 専有ホストを借りて EC2 インスタンスにその専有ホストを使うように指示するという方法で CDK でも利用可能

Slide 9

Slide 9 text

© NTT Communications Corporation All Rights Reserved. 9