概要
AWS SAMを使用することでサーバーレスアプリケーションを簡単に実装〜デプロイまですることができたので共有したいと思います。
対象者
- AWS SAMに興味がある方
- サーバーレスアプリケーションに興味がある方
- Lambda関数を簡単に実装〜デプロイしたい方
環境
- M1 Mac
- VScode
- Docker Desktop
目次
- 前提
- やってみた
- 最後に
前提
- awsアカウントの発行
- aws cliをインストール
- aws configureでアクセスキーとシークレットキーを設定
やってみた
簡単なLambda関数を作成し、sam build
してsam deploy
していきます。
AWS SAMの準備
SAMをインストールしていきます
AWS SAM CLI のインストール - AWS Serverless Application Model
以下のように表示されれば大丈夫です。
❯ sam --version
SAM CLI, version 1.106.0
AWS Lambdaの準備
Lambda関数を作成していきます。ローカルで任意のフォルダを作成しVScodeで開きます。
まずVScodeの拡張機能から AWS Toolkit をインストールします。
インストールが完了したらコマンドパレットを開き以下の画像の順に選択します。
AWS: Create Lambda SAM Application
を選択します。
設定が完了すると以下のようなディレクトリ構造になります。
.
└── app
├── README.TOOLKIT.md
├── README.md
├── events
├── hello-world
├── samconfig.toml
└── template.yaml
hello-world
ディレクトリ内を確認するとapp.js
ファイルあると思います。lambdaHandler
関数内でhello World
を返しているのがわかるかと思います。
AWS SAMのビルド、デプロイ
app
ディレクトリに移動しビルドします。
❯ sam build
.aws-sam/build
にビルドされたファイルが格納されます。
ビルドされたLambda関数をローカルで動かしてみます。
❯ sam local invoke
{"statusCode": 200, "body": "{\"message\":\"hello world\"}"}
ちゃんとapp.js
のレスポンスを確認することができました。
Docker Desktopが起動していないとエラーになるので注意してください。
続いて、AWS上のLambdaにデプロイします。
❯ sam deploy --guided
対話式で入力していきます。
Stack Name [app]:
AWS Region [us-east-1]: ap-northeast-1
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy
Confirm changes before deploy [Y/n]: Y
#SAM needs permission to be able to create roles to connect to the resources in your template
Allow SAM CLI IAM role creation [Y/n]: Y
#Preserves the state of previously provisioned resources when an operation fails
Disable rollback [y/N]: y
HelloWorldFunction has no authentication. Is this okay? [y/N]: y
Save arguments to configuration file [Y/n]: Y
SAM configuration file [samconfig.toml]:
SAM configuration environment [default]:
AWSのマネジメントコンソールからCloudFormationのページに行き、デプロイ時に指定したスタック名のスタックが確認できると思います。
Deploy this changeset? [y/N]: y
スタックのステータスがCREATE_COMPLETE
になっていれば成功です。
次にAWSのマネジメントコンソールからLambdaを確認します。
[スタック名]-[ビルドされた .aws-sam/build 直下のディレクトリ名] - [xxx]
の関数名が確認できることができればデプロイは完了です。
最後に
とっつきにくそうと思っていましたが、実際に使ってみるととても便利で使いやすかったです。今後は業務でも積極的に活用していきたいと思いました。
最後まで読んでくださりありがとうございました。