LoginSignup
11
11

More than 1 year has passed since last update.

お絵描きするだけでアプリが作れる!? 新機能AWS Application Composerを試してみた

Last updated at Posted at 2022-12-03

この記事は AWS Community Builders Advent Calendar 2022 3日目の記事です。

※AWS Community Buildersについてはこちらをご覧ください。


AWS re:Invent 2022にて昨日未明、アマゾンのCTOワーナー氏の基調講演が大変盛り上がりました。
恒例の茶番劇(失礼w)から始まり、主にサーバーレス系の新機能がもりもりお披露目。

中でも今回は、注目を集めた AWS Application Composer を軽く紹介しつつ実際に触ってみます!
スクリーンショット 2022-12-02 2.02.52.png

未来を感じる新機能「Application Composer」

簡単に言うと、 「キャンバス風のGUIでAWSサービスアイコンをポチポチ動かして、アーキテクチャ図をお絵描きするだけで実際のアプリケーション用リソースが構築&管理できてしまう」 というビックリ機能です。

上記AWS Newsブログのほか、クラスメソッドさんも分かりやすい日本語記事を書いてくれているので是非ご覧ください。

実際に使ってみる

すでに東京リージョン含め、プレビュー版が提供されています。
マネコンから検索すると出てきました。
スクリーンショット 2022-12-03 15.56.21.png

Application Composerコンソールのトップ画面。
Create project してみます。
スクリーンショット 2022-12-03 15.58.13.png

プロジェクト作成画面。
作業端末のローカルフォルダーを自動同期してくれる「Local file system connection mode」なる設定があるようです。今回はオフにしておきます。
スクリーンショット 2022-12-03 16.01.23.png

こんなキャンバス風の専用コンソールが出現します。
右上にクイックツアーも表示してくれます。
スクリーンショット 2022-12-03 16.02.54.png

よくあるSPAなWebアプリでも作ってみましょうか。
左ペインからS3バケットをドラッグ&ドロップして、右ペインで設定を入れます。ホスティング機能を有効にしました。
スクリーンショット 2022-12-03 16.04.40.png

こんな感じで、REST APIベースのサーバーレス構成を組んでみました。
スクリーンショット 2022-12-03 16.11.47.png

右上の Menu から Save Changes すると、ローカル端末上にYAMLファイルを保存できます。
これを使ってSAM CLIで実際のリソースをデプロイしてね、という使い方のようです。
スクリーンショット 2022-12-03 16.13.24.png

ちなみにYAMLの中身は以下のようになっていました。

Resources:
  WebServer01:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Sub ${AWS::StackName}-webserver-${AWS::AccountId}
      WebsiteConfiguration:
        IndexDocument: index.html
  BFF:
    Type: AWS::Serverless::Api
    Properties:
      Name: !Sub
        - ${ResourceName} From Stack ${AWS::StackName}
        - ResourceName: BFF
      StageName: Prod
      DefinitionBody:
        openapi: '3.0'
        info: {}
        paths:
          /:
            get:
              x-amazon-apigateway-integration:
                httpMethod: POST
                type: aws_proxy
                uri: !Sub arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${API.Arn}/invocations
              responses: {}
      EndpointConfiguration: REGIONAL
      TracingEnabled: true
      Auth:
        Authorizers:
          Auth:
            UserPoolArn: !GetAtt Auth.Arn
  API:
    Type: AWS::Serverless::Function
    Properties:
      Description: !Sub
        - Stack ${AWS::StackName} Function ${ResourceName}
        - ResourceName: API
      CodeUri: src/Function
      Handler: index.handler
      Runtime: nodejs16.x
      MemorySize: 3008
      Timeout: 30
      Tracing: Active
      Events:
        BFFGET:
          Type: Api
          Properties:
            Path: /
            Method: GET
            RestApiId: !Ref BFF
      Environment:
        Variables:
          TABLE_NAME: !Ref DB
          TABLE_ARN: !GetAtt DB.Arn
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref DB
  APILogGroup:
    Type: AWS::Logs::LogGroup
    DeletionPolicy: Retain
    Properties:
      LogGroupName: !Sub /aws/lambda/${API}
  DB:
    Type: AWS::DynamoDB::Table
    Properties:
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: S
      BillingMode: PAY_PER_REQUEST
      KeySchema:
        - AttributeName: id
          KeyType: HASH
      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES
  Auth:
    Type: AWS::Cognito::UserPool
    Properties:
      AdminCreateUserConfig:
        AllowAdminCreateUserOnly: false
      AliasAttributes:
        - email
        - preferred_username
      UserPoolName: !Sub ${AWS::StackName}-Auth
Transform: AWS::Serverless-2016-10-31

さすがに開発資源を多少なりとも作り込まないとデプロイは出来ない気がしますが、Cloud9で試してみます。
環境を立ち上げ、先ほどのYAMLを template.yaml という名前でアップロードして sam build を実行。ここまでは通ります。
スクリーンショット 2022-12-03 16.40.08.png

そして sam deploy --guided を走らせると、案の定「APIがねーよ!」エラーで終了してしまいました。
逆に考えると、あとはアプリケーション資材だけ置いてあげれば、先ほどのキャンバスでお絵描きしたアーキテクチャーをお手軽にデプロイ出来るということですね。これはかなり未来的では!?
スクリーンショット 2022-12-03 16.42.20.png

まとめ

このApplication Composerで作成できるリソースはまだサーバーレス系が中心ですが、こんな風に様々なAWSリソースをGUIでローコード構築できるようになれば、ますますインフラエンジニアは今後不要になるかも?と思えてしまいます。

今回のre:Inverntでは、他にもインフラレイヤーを抽象化するような新機能がいくつも登場したこともあり、今後のキャリアを色々と考えさせられると同時に、クラウドが描く未来に非常にワクワクしました。

VPCのNWレイヤーを抽象化する 「VPC Lattice」

ECSのサービス間通信を手軽に実現する 「ECSサービスコネクト」

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11