はじめに
AWS re:Invent 2023の内容を見てみると、AWS Application ComposerのIDE拡張機能が出たことを知りました。
Application Composerはサーバーレスアプリケーションのインフラ部分を視覚的に作成できるサービスという説明が目についたのですが、個人的にはCloudFormationのテンプレート作成支援ツールって感じです。
早速試してみました。
なお、このタイトルははてなブログのAI機能を使って生成してもらいました。
AWS Builder IDの作成
本件において必須ではありませんが、生成AIにIaCコードを生成させるためにAmazon CodeWhispererを使うことにします。そのためにはAWS Builder IDを作成します。AWS Builder ID profileに移動してAWS Builder IDを作成しておきます。
AWS Toolkit for Visual Studio Codeをインストールする
今回、Visual Studio CodeをIDEとして使うため、その拡張機能であるAWS Toolkit for Visual Studio Codeをインストールします。
Application Composerを操作する
適当なYAMLファイルを作成し、右クリックで「Open with Application Composer」を選択します。
すると以下のスクリーンショットのような画面が現れます。
拡張コンポーネントはかなり色々な設定項目をこの画面上で設定できます。以下はLambda関数の例。
他にも標準IaCリソースというものがあり、ここでは多くのリソースが用意されています。
標準IaCでは詳細な設定項目は用意されていません。リソース構成の部分でCloudFormationの内容を記述する感じです。
ここで「提案を生成」をクリックすると少し待った後に生成されます。
こんな感じでポチポチやれば、いつの間にかYAMLファイルが完成です。以下のものを作ってみました。
YAMLファイルは以下の通り。
Transform: AWS::Serverless-2016-10-31 Resources: Function: Type: AWS::Serverless::Function Properties: Description: !Sub - Stack ${AWS::StackName} Function ${ResourceName} - ResourceName: Function MemorySize: 1024 Timeout: 30 Tracing: Active PackageType: Image ImageUri: myrubyapp:0.0.1 FunctionLogGroup: Type: AWS::Logs::LogGroup DeletionPolicy: Retain Properties: LogGroupName: !Sub /aws/lambda/${Function} Repository: Type: AWS::ECR::Repository Properties: RepositoryName: myrubyapp RepositoryPolicyText: Version: '2012-10-17' Statement: - Sid: AllowPushPull Effect: Allow Principal: '*' Action: - ecr:GetDownloadUrlForLayer - ecr:BatchGetImage - ecr:BatchCheckLayerAvailability - ecr:PutImage - ecr:InitiateLayerUpload - ecr:UploadLayerPart - ecr:CompleteLayerUpload VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 EnableDnsSupport: true EnableDnsHostnames: true InstanceTenancy: default Tags: - Key: Name Value: Primary_VPC PublicSubnet1: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: 10.0.0.0/24 AvailabilityZone: !Select - 0 - !GetAZs Ref: AWS::Region PrivateSubnet1: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: 10.0.1.0/24 AvailabilityZone: !Select - 0 - !GetAZs Ref: AWS::Region
生成AIのお約束ですが、完璧に正しいものがでてくるわけではないので過度な期待は危険かなと思います。とりあえず、よく使われるテンプレートが生成される感じです。このため、全くの初心者が生成AIでプロ並みにというわけではなく、ある程度わかっている人向けなのかなと感じました。