Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS CDKでもMacを 管理したい

AWS CDKでもMacを 管理したい

AWS CDK で Mac on AWS を管理する手法についての解説です

[email protected]

March 23, 2023
Tweet

Other Decks in Research

Transcript

  1. © NTT Communications Corporation All Rights Reserved. 2 自己紹介
 -

    氏名
 - moban - 所属
 - NTT Communications 株式会社 - イノベーションズセンター - やっていること
 - パブリッククラウドとハイブリッドクラウドの検証 - AWS / GCP/ Azure の検証とか - 好きなこと
 - IaC - クラウド - DevOps
  2. © 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 を動かすイメージ
  3. © 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 時間

  4. © NTT Communications Corporation All Rights Reserved. 5 CDK 化手順


    1. 専有ホストで Mac を借りる 
 2. 起動したい Mac AMI を選択 
 3. 専有ホストを指定して 2. の AMI を指定して EC2 インスタンス起動 

  5. © 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", });
  6. © 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;
  7. © NTT Communications Corporation All Rights Reserved. 8 まとめ
 -

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