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.
    AWS CDKでもMacを

    管理したい

    moban


    View Slide

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

    - 氏名

    - moban
    - 所属

    - NTT Communications 株式会社
    - イノベーションズセンター
    - やっていること

    - パブリッククラウドとハイブリッドクラウドの検証
    - AWS / GCP/ Azure の検証とか
    - 好きなこと

    - IaC
    - クラウド
    - DevOps

    View Slide

  3. © 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 を動かすイメージ

    View Slide

  4. © 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 時間


    View Slide

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

    1. 専有ホストで Mac を借りる 

    2. 起動したい Mac AMI を選択 

    3. 専有ホストを指定して 2. の AMI を指定して EC2 インスタンス起動 


    View Slide

  6. © 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",
    });

    View Slide

  7. © 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;

    View Slide

  8. © NTT Communications Corporation All Rights Reserved. 8
    まとめ

    - AWS Mac について解説 

    - 最低 24 時間の割り当て
    - 専有ホストによる提供
    - ap-northeast-1 では Intel Mac のみ提供
    - AWS Mac を CDK で借りる方法について解説 

    - 専有ホストを借りて EC2 インスタンスにその専有ホストを使うように指示するという方法で
    CDK でも利用可能

    View Slide

  9. © NTT Communications Corporation All Rights Reserved. 9

    View Slide