目次
BeeXの榊原です。先月Amazon Qからコンソール画面上の操作を記録して、その操作をコード化してくれるConsole-to-CodeがGAされたので試しに触ってみました。注意点だけすぐに知りたい方は本記事の最後、まとめをご参照ください。より詳しくConsole-to-Codeを知りたい方は公式ドキュメントや下のリリース記事をご覧ください。
こちらの機能は2024/10/10時点では、EC2、VPC、RDSのみ対象となっております。今回は試しにEC2のみ触ってみました。前提として本記事の内容は、2024/11/24時点のものとなっております。
早速使ってみた
EC2のコンソール画面の右上のアイコン>「記録を開始」でコード生成の準備をします。
記録が進行中と表示されたら、さっそくインスタンスを起動させましょう。
EC2起動時コンソール画面のスクリーンショットは省略しますが、設定は以下の内容にして起動しました。特に記載の無いものはデフォルトから変更していません。
・EC2にNameタグ付与
・AMIは「Windows_Server-2022-Japanese-Full-Base-2024.11.13」を利用
・インスタンスタイプはm6i.xlarge
・キーペアやVPC、サブネット、SGは環境内の適当なもの
・ルートボリュームは100GiBでgp3、デフォルトのKMSキーで暗号化
・データボリューム(xvdd)50GiB、gp3、終了時削除をいいえ、デフォルトのKMSキーで暗号化
・IAMインスタンスプロファイルを指定
・終了保護を有効化
起動し終えて、コンソールを確認したらオペレーション「RunInstances」が追加されています。チェックを入れて、CFN YAMLを生成をクリックします。
ちなみにCloudFormationテンプレートを作成する場合、初回は下のように表示されます。ここで許可を選択するとテンプレートファイルがダウンロードできます。
なお現時点ですと出力されるコマンドには以下の選択肢があります。
・AWS CLI
・CDK Java
・CDK Python
・CDK TypeScript
・CloudFormation JSON
・CloudFormation YAML
ダウンロードされたテンプレートは下記の通りでした。
Resources: EC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-09eb7f8fa1e947e23
InstanceType: m6i.xlarge
KeyName: test20230131
BlockDeviceMappings:
- DeviceName: /dev/sda1
Ebs:
Encrypted: true
DeleteOnTermination: true
Iops: 3000
KmsKeyId: 1321c80e-d7a6-40c4-99dc-9287d8bfc2f9
SnapshotId: snap-0699719d8c0b9cf77
VolumeSize: 100
VolumeType: gp3
Throughput: 125
- DeviceName: xvdd
Ebs:
Encrypted: true
DeleteOnTermination: false
Iops: 3000
KmsKeyId: 1321c80e-d7a6-40c4-99dc-9287d8bfc2f9
VolumeSize: 50
VolumeType: gp3
Throughput: 125
NetworkInterfaces:
- AssociatePublicIpAddress: false
DeviceIndex: 0
GroupSet:
- sg-0093b22b1b3d39c2e
SubnetId: subnet-0ad3eb52274d57478
IamInstanceProfile:
Arn: arn:aws:iam::XXXXXXXXXXXX:instance-profile/EC2_SSM
PrivateDnsNameOptions:
HostnameType: ip-name
EnableResourceNameDnsARecord: false
EnableResourceNameDnsAAAARecord: false
Tags:
- Key: Name
Value: testInstance
Reasoning: {The provided AWS CLI command creates an EC2 instance with the specified properties such as AMI ID, instance type, key pair, block device mappings, network interface, IAM instance profile, private DNS name options, and a tag. The generated CloudFormation YAML code creates an AWS::EC2::Instance resource with the corresponding properties mapped from the CLI command. This ensures that the infrastructure as code accurately represents the intended EC2 instance configuration.}
さて、このままの状態でテンプレートを流したところエラーが出力されました。下記の通り編集を加えましょう。
・EBSを指定する際、スループットの指定はできないためThroughputをコメントアウト
・一番下の行の内容はコメントアウト
・IamInstanceProfileを下記の通り書き換える
# 修正前
IamInstanceProfile:
Arn: arn:aws:iam::297193093732:instance-profile/EC2_SSM
# 修正後
IamInstanceProfile: EC2_SSM
この状態でEC2インスタンスを起動し、元のEC2インスタンスと差異が無いか念のため調べたところ1点設定が違うところを発見しました。元のインスタンスでは終了保護が有効化されていましたが、終了保護が無効になっていました。
ここは環境問わず重要な設定なので、上のyamlファイルのEC2部分にDisbleApiTermination: trueを追記する等して対処しましょう。ちなみにEBSの方はDeleteOnTerminationの設定は反映されていました。(インスタンスID等は当然違う値になるので省略)
まとめ
検証の結果、投稿時点では下記に気を付けて運用すれば、Console-to-Codeを有効に使えると判断しました。
出力されたCloudFormationのyamlファイルについて、
・IAMインスタンスプロファイルの記法を修正
・EBSのThroughputの行と最後の行をコメントアウト
・インスタンスの終了保護の設定を追記
気が向いたら他に残っているVPCとRDSも検証します。ここまでお読みいただきありがとうございました。
- カテゴリー