この記事で伝えたいこと
- AWS Console-to-Codeをハンズオンしているよ
- AWS Console-to-Codeの展望や実用に耐えうるかを考察しているよ
はじめに
この記事では「この前リリースされた機能って実際に動かすとどんな感じなんだろう」とか「もしかしたら内容次第では使えるかも」などAWSサービスの中でも特定の機能にフォーカスして検証していく記事です。主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば書き直していく予定です。
今回はAWS Console-to-Code(以下、AWS CtoC)を検証してみます。
AWSマネジメントコンソールを操作したらコードが生成されるってさ?
コンソールを操作したらコードが生成されるって?!なんだって?
AWS Console-to-CodeはAWS re:Invent 2023でプレビュー版として発表されたサービスです。
プレビューとして発表されたときのwhats-newとしては以下のとおりです。
コンソールアクションに対するコードを生成する AWS Console-to-Code (プレビュー) の発表 - whats-new
正式リリースとして告知がなされたのは2024年10月10日です。(以下、参考リンク)
紹介ブログ
対応状況(リージョン・サービス)
実際に使うまえにもろもろ確認したいと思います。まず、ドキュメントを確認してみましょう。
ドキュメントには以下のように記載がありました。
現在、米国東部 (バージニア北部) リージョンでのみ利用可能です。
Console-to-Code を使用してコンソールアクション用のコードを生成する docs
後述しますが、実際に使ってみたら東京リージョンでも利用できました。
料金
さっそく触りたいところですが、その前に料金を見ていきましょう。
実を言うとこの機能は追加料金なしで利用できます。
参考:Console-to-Code を使用してコンソールアクション用のコードを生成する
実際に触ってみた
AWS マネジメントコンソールからVPCを開きます。
マネジメントコンソールの右側、Amazon Qのアイコンの下にAWS CtoCのアイコンがあります。アイコンをクリックします。
新しいウィンドウで開くのでStart Recording
をクリックします。
Start Recording
でレコーディングを開始するとここから先のマネジメントコンソールの操作が記録されます。
今回はVPCを作ってみましょう。
Start Recording
VPCを作る
左メニューからYour VPCs
をクリックします。
Create VPC
でVPCを作成します。
各項目を埋めていきます。
項目 | 値 |
---|---|
Resource to create | VPC only |
Name tag | aws-ctoc |
IPv4 CIDR | 10.0.0.0/24 |
それ以外はデフォルトで問題ありません。
最後にCreate VPC
ではなく、Preview code
を実行します。
画面右側のメニューが異なる画面に切り替わるのでAdd to recording
を実行します。
CDKの生成
レコーディングが終わったので実際にコードを生成してみましょう。Generate CFN YAML
からGenerate CDK TypeScript
をクリックします。
※Generate CFN YAML
なのにCDKなのかってツッコミはなしでお願いします。
しばらく待ちましょう。
実行結果
import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const stack = new cdk.Stack();
const vpc = new ec2.Vpc(stack, 'aws-ctoc', {
cidr: '10.0.0.0/24',
instanceTenancy: ec2.DefaultInstanceTenancy.DEFAULT,
natGateways: 0,
maxAzs: 2,
vpcName: 'aws-ctoc'
});
Reasoning: {
The provided AWS CLI command creates a new VPC with the following properties:
- Instance tenancy is set to "default"
- CIDR block is set to "10.0.0.0/24"
- A tag with key "Name" and value "aws-ctoc" is added to the VPC
In the CDK code, I create a new `ec2.Vpc` construct with the following properties:
- `cidr`: Set to the provided CIDR block '10.0.0.0/24'
- `instanceTenancy`: Set to `ec2.DefaultInstanceTenancy.DEFAULT` which corresponds to the "default" instance tenancy in the CLI command
- `natGateways`: Set to 0 since the CLI command does not create any NAT gateways
- `maxAzs`: Set to 2 which is the default value for the number of availability zones
- `vpcName`: Set to 'aws-ctoc' to match the tag value provided in the CLI command
The `ec2.Vpc` construct in the CDK creates a new VPC with the specified properties and applies the provided tag to the VPC resource.
}
AZの指定まで入れた覚えはないですが、おおむね問題なく生成されています。Reasoning
をみるとどのような過程で生成したかまで確認できます。
CloudFormationの生成
次にCloudFormationのコードを生成します。Generate CFN YAML
からGenerate CFN YAML
をクリックします。
実行結果
Resources:
VPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/24
InstanceTenancy: default
Tags:
- Key: Name
Value: aws-ctoc
Reasoning: {The provided AWS CLI command creates a new VPC with a CIDR block of 10.0.0.0/24, default instance tenancy, and a tag with the key "Name" and value "aws-ctoc". In CloudFormation, this can be represented using the AWS::EC2::VPC resource type. The CidrBlock and InstanceTenancy properties are set based on the CLI command, and the Tags property is created using the tag-specifications parameter.}
問題なく生成されました。ただし、CDKと違ってAZの指定がありません。それもそのはずCloudFormationのテンプレートでVPCを作成する際にはAZの指定はありません。(以下、参考ドキュメント)
シンプルにVPCを作ったとき、CDKのほうがいくらか粒度細かくできるということがわかりました。
この機能はどこで使える
ハンズオンは以上です。
まだ対応しているサービスが少ないがゆえに使い方を見出せない側面があります。
対応サービスが増えたらマネジメントコンソールによる設定とコードによる定義を見比べてトラブルシューティングができるかなと思います。
対応しているサービスが増えたとしてもこの機能だけで希望のコードを生成できるとも限らないので
今のところは参考程度に見ておきましょう。
まとめ
AWSマネジメントコンソールを操作したらコードが生成されるサービス、AWS Console-to-Codeを見ました。昔からあったら良いなと思う機能だった反面、まだ理想には遠いという印象を持ちました。
ただ、コンソールによる構築からコードによる構築に慣れるための一歩として使うならば、とても良い機能だと思いました。