2
0

【AWS】Application Composerが強すぎるかもしれない

Last updated at Posted at 2024-09-09

どうもこんにちは。

今回は、以下の記事で書いたAWS SAMの使い方に付随して、AWS Applidation Composerの使い方についてまとめます。

↓アイコンはこれ(クラスメソッドさんの記事から拝借させていただきました。)↓

image.png

Application Composerとは?

AWS Application Composer というツールを使用すると、AWS SAMで核となるtemplate.ymlをGUI上で作成することができるそうです。これは、VScodeの拡張機能AWS Toolkit for visual studio codeをインストールすることで使用することができます。もちろん、AWSマネジメントコンソール上でも使用できます。

今回はせっかくなので、VScodeで使用してみます。

また、Application Composer自体は無料で使用することができます。

前提条件

AWS SAM CLIのインストール方法はこちらで説明をしています。

また、sam initコマンドでサーバーレスアプリケーションのプロジェクトを作成している前提でお話を進めます。

使い方

1. template.ymlをApplication Composerで開く

template.ymlを右クリックすると、下の方に「Open with Application Composer」というメニューが出てくるので、クリックします。

スクリーンショット 2024-08-31 19.52.03.png

2. Canvasが開く

そうすると、Application ComposerのCanvasが開きます。(画面かっちょいい)

スクリーンショット 2024-08-31 19.53.39.png

3. ポチポチやってみよう!

雑な説明ですが、この手のツールの操作方法は触ってみるのが一番早いです。

3-1. API Gatewayにメソッド追加/削除

対象のAPI Gatewayをクリックして、「詳細」をクリックします。

スクリーンショット 2024-08-31 20.02.08.png

「ルートを追加」をクリックして、メソッドとパスを入力して「保存」をクリックします。

スクリーンショット 2024-08-31 20.02.40.png

保存するとルートが増えます。

スクリーンショット 2024-08-31 20.05.13.png

3-2. 追加したルートに新しいLambda関数を紐づける

左から「Lambda関数」という要素を右にドラッグして、API Gatewayのbyeメソッドと線で繋ぎます。

スクリーンショット 2024-08-31 20.06.02.png

スクリーンショット 2024-08-31 20.14.48.png

3-3. template.ymlを確認

template.ymlを確認してみると、ByeByeFuncが追加されていると思います。

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: |
  sam-test-01
  Sample SAM Template for sam-test-01

# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
  Function:
    Timeout: 10
    MemorySize: 128

    # You can add LoggingConfig parameters such as the Logformat, Log Group, and SystemLogLevel or ApplicationLogLevel. Learn more here https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-loggingconfig.
    LoggingConfig:
      LogFormat: JSON
Resources:
  SamTestFunc:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.12
      Architectures:
        - x86_64
      Events:
        HelloWorld:
          Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
          Properties:
            Path: /hello
            Method: get
  ByeByeFunc:
    Type: AWS::Serverless::Function
    Properties:
      Description: !Sub
        - Stack ${AWS::StackName} Function ${ResourceName}
        - ResourceName: ByeByeFunc
      CodeUri: src/Function
      Handler: handler.handler
      Runtime: python3.12
      MemorySize: 3008
      Timeout: 5
      Tracing: Active
      Events:
        ServerlessRestApiGETbye:
          Type: Api
          Properties:
            Path: /bye
            Method: GET
  ByeByeFuncLogGroup:
    Type: AWS::Logs::LogGroup
    DeletionPolicy: Retain
    Properties:
      LogGroupName: !Sub /aws/lambda/${ByeByeFunc}

Outputs:
  # ServerlessRestApi is an implicit API created out of Events key under Serverless::Function
  # Find out more about other implicit resources you can reference within SAM
  # https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api
  HelloWorldApi:
    Description: API Gateway endpoint URL for Prod stage for Hello World function
    Value: !Sub https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/
  SamTestFunc:
    Description: Hello World Lambda Function ARN
    Value: !GetAtt SamTestFunc.Arn
  SamTestFuncIamRole:
    Description: Implicit IAM Role created for Hello World function
    Value: !GetAtt SamTestFuncRole.Arn

ちょっとすごすぎ...

Application Composerの方でLambdaの関数をlambda_handlerに変えたら、template.ymlの記述も変りました。ただ、プロジェクト内に作成されたファイルの名称までは変わらないようですね。

だとしても十分すぎる機能ではないでしょうか?

これ、会議の中でアーキテクチャ考えるのにも使えますよね!

2
0
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
2
0