AWS CDK v2 でEC2を自分好みに!

ならたけぽん
2023-12-25
2023-12-25

おつかれさまです。ならたけぽんです。🌈

季節外れの暖かさもありつつ、
いろいろと大変だなぁ、と、
いろいろと思いを巡らせながら眠りについたら、
凍える寒さでガクガク震えながら目が覚めました。🌬️

冬、来ちゃってた。⛄

秋、満喫していないような。
秋刀魚、店頭に並んでたっけ?🐟
なに、寒鰤だぁ? 蟹だぁ?
そんなブルジョアなものおいそれと食えるわけなかろうが!💣
頭冷やしてくる!❄️

というわけで、冷やしすぎて凍ってしまう前に、
AWS CDK v2で「EC2」にデコレーションしていきます!🎂



前回、まだ冬が小さいころ、

  • instanceType:インスタンスタイプ
  • machineImage:OSイメージ(Amazon Machine Image、略してAMI)
  • vpc:VPC

上記の3個の設定必須のパラメータのみを設定して、

const ec2Instance = new ec2.Instance(this, 'Ec2', {
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MICRO),
    machineImage: new ec2.GenericLinuxImage({
        'ap-northeast-1': 'ami-012261b9035f8f938'
    }),

    vpc: vpc
})

こんな感じでEC2を作成しました。
今回はここから盛っていきます。🍚

🕊️主なオプション引数🕊️:

  (1) associatePublicIpAddress:boolean:
    パブリックIPアドレスを自動付与するかいなか
    ※EC2をパブリックサブネットに置くけどEIPは使用しないときにtrue

  (2) availabilityZone:string:
    アベイラビリティゾーンを設定
    後述のサブネットと合わせて設定する際、
    サブネットと合わないアベイラビリティゾーンを指定するとエラーになる

  (3) blockDevices:BlockDevice[]:
   (3-1) BlockDevice:
    (3-1-1) deviceName:string:
        EBSを付与する"/dev/sda1"等のデバイス名を設定
    (3-1-2) volume:BlockDeviceVolume:
        BlockDeviceVolume.ebs(10)等のEBSのボリュームサイズを設定

  (4) instanceName:string:
    インスタンス名を設定

  (5) keyPair:IKeyPair:
    ec2.KeyPair.fromKeyPairName(this, [任意のID文字列], [キーペア名])で
    キーペア名を設定

  (6) securityGroup:ISecurityGroup:
    セキュリティグループオブジェクトを設定

  (7) vpcSubnets:SubnetSelection:
   (7-1) SubnetSelection:
    (7-1-1) subnets:ISubnets[]:
        サブネットオブジェクトを設定

こちらのオプションを全部設定すると、

const ec2Instance = new ec2.Instance(this, 'Ec2', {
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MICRO),
    machineImage: new ec2.GenericLinuxImage({
        'ap-northeast-1': 'ami-012261b9035f8f938'
    }),

    vpc: vpc
    associatePublicIpAddress: false,
    availabilityZone: 'ap-northeast-1a',
    blockDevices: [{
        deviceName: '/dev/sda1',
        volume: ec2.BlockDeviceVolume.ebs()10,
    }
]
,
    instanceName: 'PiyoPiyoPiyoPiyo',
    keyPair: ec2.KeyPair.fromKeyPairName(this, 'KeyPair', 'piyopiyopiyo'),
    securityGroup: sg,
    vpcSubnets: {
        subnets: [
            subnetPubA
        ]
    }

}
)

こんな感じになります!!!✨
どんどん自分好みになっていきますね!!!💞😍💞

また、公式ページにはもっと多くのオプションが記載されていますので、
もっともっと探求して盛ってくださいね。🍚



さて、この辺まで触ってくると、何だか慣れてきてませんか?

そう。そうなんですよ。
EC2デコレーションできたら、後は応用で何とかなるんですよ!✨

え?
私は何とかなったのかって?
なってないわ!
わしは日々のちょっとした積み重ねがないと、うまくいくもんもいかんのじゃ!🤓
頭冷やしてくる!❄️

というわけで、冷やしすぎて凍ってしまう前に、
次回は、また別のサービスをさわっていきます~。🐌

今年は暖冬と言っていた人たちは、いまいずこへ。
ちょっと厳しめに問いただしたい。⛄

それでは、良き良き、AWS CDKライフを!!!🌈