Console to Code が一般提供開始されたので触ってみた!
はじめに
こんにちは、Paseri です!
2024年10月10日から Amazon Q Developer を利用した Console to Code の一般提供が開始されました!
本記事ではサービスの特徴や利点、注意する点などをご紹介できればと思います!
今回は簡単な EC2 環境を構築することでどのような動作が行わるれるのか検証します!
サービス概要
Console to Code は、AWS マネジメントコンソール上の操作を記録することでコード化を行うサービスです。
これにより、一から CloudFormation 等のテンプレートを作成する手間を削減することができます。
(Google翻訳)
Console to Code を使用すると、AWS マネジメントコンソールでのプロトタイプ作成から本番環境へのデプロイ用のコード作成への移行が簡単、高速、かつコスト効率よく行えます。お客様は、1 回のクリックで、好みの形式でコンソールアクションのコードを生成できます。生成されたコードは、お客様が開始してタスクの自動化パイプラインをブートストラップするのに役立ちます。
コードを生成する Console to Code の一般提供開始を発表 – AWS
2024年10月11日時点で、以下3つのサービスをサポートしています。
- Amazon VPC
- Amazon EC2
- Amazon RDS
料金
Console to Code は Amazon Q Developer の料金に基づいて発生します。
Amazon Q Developer の無料枠で利用することもできますが、月あたりのコード生成量に制限があります。
無料利用枠の場合、月に1,000行までのコードを生成することが可能です。
有料枠(Pro)の場合では、月4,000行までのコード生成が可能になります。
それ以上のコード生成は1行につき0.003USDの料金が発生します。
詳細は以下をご覧ください。
AI コーディングアシスタント – Amazon Q 開発者向け料金 – AWS
触ってみた
Console to Code の確認
EC2 のダッシュボードを開くと画面右端のタブに新しくアイコンが追加されています。
このアイコンを選択することで Console to Code のタブを開くことができます。
特に設定を行うことなくいつでも記録を行えるようです。
記録を開始
を選択してみます。
記録が開始されました。
任意のタイミングで停止やリセットができるようです。
また、一度停止しても任意のタイミングで再開することが可能となっています。
若干不便に感じたのですが、Google Chromeの別タブに移動してしまうと記録されていないようです。
そのため、一つのタブに集中して作業を行う必要があります。
リソースの作成
それでは実際にリソースを作成し、どのようにコードが生成されるのか見ていきます。
今回はコンソール上で以下の構成を作成し、Console to Code によるコード化を行います。
記録を有効にした状態で VPC と周辺のリソース、EC2 インスタンスを作成します。
コードの生成
次にコードの生成を実行します。
記録を確認すると作業を区切りながら記録しているため、コードを分割して生成することもできるようです。
現在、CloudFormation は JSON か YAML の二つを選択することができます。
今回は YAML で生成しました。
※ 記事作成前の検証時(初回操作)に表示されました。
このタイミングで Console to Code がクロスリージョンの呼び出しを許可する必要があります。
許可することにより、コードの生成が実行されます。
どの種類のコードを生成するように選択しても CLI コマンドは生成されるようです。
このコマンドはファイルとしてダウンロードすることも可能です。
CloudFormation 用の YAML コードです。
タブの最下部まで進むとダウンロードをすることができます。
(コードは長いため記事の最後に記載にしています。)
ローカルPC上にダウンロードしました。
ファイル名を編集することはできないため、必要ならダウンロード後に名前を変更する必要があります。
CloudFormation へアップロード
生成されたコードが問題なく利用できるのか確認するために実際にデプロイしてみます。
ダウンロードしたファイルを CloudFormation のスタックへアップロードを行います。
ですが、ファイルをそのまま CloudFormation にアップロードしようとするとエラーが出てしまいます。
ファイルの中を確認してみるとコメントの部分まで記載されていました。
こちらはコードではないため、エディタで編集を行い削除します。
また、ファイルの中身を確認すると2か所にエラーが出ていました。
この2つの設定項目は起動テンプレート用の項目なため、今回の場合だと指定することができません。
そのため、以下のエラーが出ている部分も削除します。
再度 CloudFormation で操作を行うことで無事にスタックへアップロードすることができました。
コンソールから EC2 を確認すると問題なく2つ目のインスタンスが構築されていました。
今回の検証は以上となります。
最後に今回生成された YAML コードです。(一部公開できない設定値は置き換えています)
console-to-code.yaml
Resources: VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 InstanceTenancy: default EnableDnsHostnames: true Tags: - Key: Name Value: paseri-test-vpc PublicSubnet1: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: 10.0.0.0/20 AvailabilityZone: ap-northeast-1a Tags: - Key: Name Value: paseri-test-subnet-public1-ap-northeast-1a InternetGateway: Type: AWS::EC2::InternetGateway Properties: Tags: - Key: Name Value: paseri-test-igw VPCGatewayAttachment: Type: AWS::EC2::VPCGatewayAttachment Properties: VpcId: !Ref VPC InternetGatewayId: !Ref InternetGateway PublicRouteTable: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC Tags: - Key: Name Value: paseri-test-rtb-public PublicRoute: Type: AWS::EC2::Route Properties: RouteTableId: !Ref PublicRouteTable DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref InternetGateway SecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupName: paseri-test-sg GroupDescription: test Console to Code VpcId: !Ref VPC SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 KeyPair: Type: AWS::EC2::KeyPair Properties: KeyName: paseri-key KeyType: rsa KeyFormat: pem EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: <your-ami-id> InstanceType: t2.micro KeyName: !Ref KeyPair BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: Encrypted: true DeleteOnTermination: true Iops: 3000 KmsKeyId: <your-kms-key-arn> SnapshotId: <your-snapshot-id> VolumeSize: 8 VolumeType: gp3 NetworkInterfaces: - AssociatePublicIpAddress: true DeviceIndex: 0 GroupSet: - !Ref SecurityGroup SubnetId: !Ref PublicSubnet1 CreditSpecification: CPUCredits: standard PrivateDnsNameOptions: HostnameType: ip-name EnableResourceNameDnsARecord: false EnableResourceNameDnsAAAARecord: false Tags: - Key: Name Value: paseri-test-ec2 Outputs: VPC: Description: A reference to the created VPC Value: !Ref VPC Export: Name: !Sub "${AWS::StackName}-VPCID" PublicSubnets: Description: A list of the public subnets Value: !Ref PublicSubnet1 Export: Name: !Sub "${AWS::StackName}-PUB-NETS" SecurityGroup: Description: Security group for the EC2 instance Value: !Ref SecurityGroup Export: Name: !Sub "${AWS::StackName}-SECGRP"
まとめ
今回は新しく一般提供された「Console to Code」を実際に触りながらご紹介させて頂きました!
「操作を記録してコード化」してくれるのはなかなか面白い試みではないでしょうか?
現状サポートされているサービスが3つだけなので今後サポート対象が増えたら嬉しいですね!
検証で利用した環境を料金が発生しない状態で保持しておきたい方や、これからIaCを学習していきたいという方におすすめのサービスです!
ですが、若干構文等の所でまだ信頼しきれないところがあるのでその点は意識する必要がありそうです。
少しでも参考になれば幸いです!
最後までお読み頂きありがとうございました!
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitter2024年新卒入社。うどん好きな初心者クラウドエンジニア。
Recommends
こちらもおすすめ
-
atop コマンドを用いて Amazon EC2 の障害原因を切り分けよう!
2024.5.30
-
AWS CodePipelineでTerraformパイプラインを実装する
2024.3.28
-
Apache Sparkのパーティション分割について
2022.12.29
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16