LoginSignup
44
41

はじめに

こんにちは、都内でソフトウェアエンジニアとして活動しているYSasagoです。
AWS re:Invent 2023の基調講演でDr. Werner Vogelsによって発表されたAWS Application Composer in VSCodeを使って、実際にAPIを作成してみたいと思います!基調講演はYoutubeで視聴することができます
スクリーンショット 2023-12-28 14.21.39.png

Application Composerとは

Application Composerは、前年のre:Inventで初めて発表されたツールで、AWSコンソール内で直感的にサーバーレスアプリケーションを構築できるドラッグアンドドロップ式の便利なツールです。このツールはAWSのベストプラクティスに準拠し、Infrastructure as Code (IaC) の自動生成を可能にします。

スクリーンショット 2023-12-28 14.31.26.png

VSCodeでApplication Composerを使ってみる

今年のre:Inventでは、VScodeからApplication Composerを使用することができるようになったと発表があったので実際に試してみました。

完成品

以下の構成図に示すように、/hogeというエンドポイントを持つAPIを作成します。

スクリーンショット 2023-12-28 14.39.02.png

$ curl  https://xxxxxxxxxxx.amazonaws.com/Prod/hoge/                                                                         
{"message": "hello hoge world"}%       

事前準備

AWS SAM CLIのインストール

AWS SAM CLIを使用するために、以下のドキュメントを参照しながらインストールを行います。

samコマンドが使えるようになれば準備完了です。

$ sam --version
SAM CLI, version 1.105.0

aws configureの設定

aws configureを用いて認証情報を設定します。

$ aws configure
AWS Access Key ID [None]: {アクセスキー}
AWS Secret Access Key [None]: {シークレットアクセスキー}
Default region name [None]: ap-northeast-1
Default output format [None]: json

VSCodeに拡張機能をインストール

AWS Toolkit for Visual Studio CodeをVSCodeにインストールします。

FireShot Capture 065 - Visual Studio コードプラグイン — AWS Toolkit for Visual Studio Code - AWS_ - aws.amazon.com.png

VSCode Marketplaceから直接インストールできます。

FireShot Capture 066 - AWS Toolkit - Amazon Q, CodeWhisperer, and more - Visual Studio Marke_ - marketplace.visualstudio.com.png

インストール完了後のスクリーンショット
スクリーンショット 2023-12-28 14.58.58.png

samコマンドを使って初期プロジェクトの作成

sam initを実行してプロジェクトを作成します。

sam init

You can preselect a particular runtime or package type when using the `sam init` experience.
Call `sam init --help` to learn more.

Which template source would you like to use?
	1 - AWS Quick Start Templates
	2 - Custom Template Location
Choice: 1

Choose an AWS Quick Start application template
	1 - Hello World Example
	2 - Data processing
	3 - Hello World Example with Powertools for AWS Lambda
	4 - Multi-step workflow
	5 - Scheduled task
	6 - Standalone function
	7 - Serverless API
	8 - Infrastructure event management
	9 - Lambda Response Streaming
	10 - Serverless Connector Hello World Example
	11 - Multi-step workflow with Connectors
	12 - GraphQLApi Hello World Example
	13 - Full Stack
	14 - Lambda EFS example
	15 - Hello World Example With Powertools for AWS Lambda
	16 - DynamoDB Example
	17 - Machine Learning
Template: 1

Use the most popular runtime and package type? (Python and zip) [y/N]: y

Would you like to enable X-Ray tracing on the function(s) in your application?  [y/N]: n

Would you like to enable monitoring using CloudWatch Application Insights?
For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html [y/N]: n

Would you like to set Structured Logging in JSON format on your Lambda functions?  [y/N]: y
Structured Logging in JSON format might incur an additional cost. View https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html#monitoring-cloudwatchlogs-pricing for more details

Project name [sam-app]: demo-app

    -----------------------
    Generating application:
    -----------------------
    Name: demo-app
    Runtime: python3.9
    Architectures: x86_64
    Dependency Manager: pip
    Application Template: hello-world
    Output Directory: .
    Configuration file: demo-app/samconfig.toml

    Next steps can be found in the README file at demo-app/README.md


Commands you can use next
=========================
[*] Create pipeline: cd demo-app && sam pipeline init --bootstrap
[*] Validate SAM template: cd demo-app && sam validate
[*] Test Function in the Cloud: cd demo-app && sam sync --stack-name {stack-name} --watch

VSCodeでApplication Composerを開く

作成したプロジェクトをVS Codeで開き、template.yamlを右クリックして「Open with Application Composer」を選択します。

スクリーンショット 2023-12-28 15.05.22.png

sam initによって自動生成されるHelloWorldFunctionが表示されます。

スクリーンショット 2023-12-28 15.05.41.png

APIの作成

hogeAPIを作成します。まず、自動生成されたAPI GatewayにGETメソッドで/hogeのパスを追加し、保存します。

スクリーンショット 2023-12-28 15.07.58.png

次に検索バーでLambdaと入力してLambda関数をドラッグアンドドロップします。そのあと先ほど作成した/hogeから線で結びます。

スクリーンショット 2023-12-28 15.11.29.png

新しく追加したLambda関数の詳細を開き、論理IDとソースパスの箇所に適当な名前を入力します。今回は、HogeFunctionとしました。

スクリーンショット 2023-12-28 15.28.25.png

フォルダを確認すると、自動でHogeFunctionが作成されているのが確認できます。

スクリーンショット 2023-12-28 15.14.09.png

HogeFunctionの、handler.pyを開き、コードの中身を下記のように変更します。

handler.py
import json


def handler(event, context):
    return {
        "statusCode": 200,
        "body": json.dumps(
            {
                "message": "hello hoge world",
            }
        ),
    }

実行してみよう

準備が整ったので、実際にビルドとデプロイを行い、APIをテストします。

$ sam build
....
....
Build Succeeded

$ sam deploy
...
...

Successfully created/updated stack - demo-app
```cessfully created/updated stack - demo-app

APIが作成できました。sam initから約15分でAPIを作成することができました!

実際に叩いてみましょう。
デプロイした結果のOutputsにAPIのURLがあるので、パスを/hogeにして叩いてみましょう。

$ curl https://xxxxxx.amazonaws.com/Prod/hoge                                                                           
{"message": "hello hoge world"}

hello hoge worldとかえってきら確認終了です。

確認ができたら今回作成したリソースを削除しておきましょう。

$ sam delete

おわりに

今回はVSCodeでApplication Composerを使ったAPIの作成を試みました。【良い点】と【気になる点】をまとめます。

良い点

  • 視覚的にわかりやすく、権限設定なども自動で行われる
  • AWSコンソールを開かずにApplication Composerを使用できる
  • 別途構成図を作成する必要がない

気になる点

  • アイコンのドラッグアンドドロップでコードが自動生成されるため、間違って操作した場合には手動でコードを削除する必要がある
44
41
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
44
41