はじめに
AWSから、AWS Console-to-Code を正式リリースされました。
この機能を使えば、AWSコンソールで行った操作をCloudFormationやAWS CDKのコードに変換でき、Infrastructure as Code (IaC) の実現に役立ちます。
詳しくはこちら:
AWS Console-to-Codeの概要
AWS Console-to-Codeは、AWSコンソール上の操作をリアルタイムで記録し、その操作に対応するコード(CLIコマンド、CloudFormation、CDKなど)を生成する機能です。
これにより、手動のコンソール操作から自動化のコード生成まで、効率よくコード化することが可能になります。
対応しているAWSサービス
現在、Console-to-Codeは以下の3つのサービスに対応しています。
・Amazon EC2
・Amazon RDS
・Amazon VPC
サポートされるコードの形式
現時点では、Console-to-Codeは以下のコード形式でIaCコードを生成します。
・AWS CDK(Java, Python, TypeScript)
・CloudFormation(JSON, YAML)
※IaC(Infrastructure as Code)は、サーバのインフラ(CPUやメモリなど)をコードによって構成・管理する技術です。
AWS Console-to-Codeの使い方
次に、Console-to-Codeを使用して、今回はEC2インスタンスの操作を記録しCLIコマンドを生成する手順を紹介します。
手順
1.AWSコンソールで、EC2サービスに移動します。
インスタンス一覧から、コード化したいインスタンスを選択します。(停止中であれば起動します)。
2.Console-to-Codeウィジェットの起動
インスタンスIDをクリックして詳細を開き、画面右側に表示される「Console-to-Code」ウィジェットを選択します。「記録を開始」をクリックして操作を記録します。
3.操作の記録
記録が終了したら、「停止」をクリックして記録を完了させます。
「記録を開始」をクリックし、操作を記録。
4.記録結果の確認とコード生成
記録されたアクションが表示されるので、コード形式(YAML, JSON, CDKなど)を選択してコードを生成します。
5.コードのコピー
必要に応じて生成されたCLIコマンドをコピーし、AWS CloudShellなどで実行します。
これで、EC2インスタンスを起動するためのCLIコマンドが生成されます。
代表的なEC2アクション例
AWS Console-to-Codeでは、以下のようなEC2操作が記録可能です。
・インスタンスの作成
アクション: RunInstances(インスタンスの起動)
・インスタンスの削除
アクション: TerminateInstances(インスタンスの終了)
・セキュリティグループの設定
アクション: CreateSecurityGroup(新しいセキュリティグループの作成)
・セキュリティグループへのルール追加
アクション: AuthorizeSecurityGroupIngress(インバウンドルールの追加)
・キーペアの作成
アクション: CreateKeyPair(SSHキーペアの生成)
各アクションは、タイムスタンプやリソースIDなどの詳細とともに、CLIコマンドやCloudFormation/CDKコードとして出力されます。
生成されたCLIコマンドの例
実際にConsole-to-Codeによって生成されたEC2インスタンスのCLIコマンド例は以下の通りです。
aws ec2 run-instances
--image-id "i-xxxxxxxxxxxx"
--instance-type "t2.micro"
--key-name "my-key"
--network-interfaces '{"AssociatePublicIpAddress":true,"DeviceIndex":0,"Groups":["sg-1a1aa1a1aa1a111a1"]}'
--credit-specification '{"CpuCredits":"standard"}' --tag-specifications '{"ResourceType":"instance","Tags":[{"Key":"Name","Value":"test"}]}'
--metadata-options '{"HttpEndpoint":"enabled","HttpPutResponseHopLimit":2,"HttpTokens":"required"}'
--private-dns-name-options '{"HostnameType":"ip-name","EnableResourceNameDnsARecord":true,"EnableResourceNameDnsAAAARecord":false}'
--count "1"
このコマンドをAWS CloudShellなどで実行すると、指定した設定でEC2インスタンスを起動できます。
今回は、AWS CloudShellで起動させてみました。
まとめ
AWS Console-to-Codeは、手動で行った操作を簡単にコード化できるため、特にインフラ設定をIaCで管理する方にとって便利なツールだと思います。
現在の対応サービスは限定的ですが、今後の対応拡張が期待されます。
AWSでのコンソール操作を効率化し、自動化する手段として、非常に便利なツールだと感じました。