LoginSignup
1
0

AWS SAMを使ってローカルでLambdaを実装、AWSにデプロイしてみた

Posted at

概要

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を選択します。
スクリーンショット 2024-01-06 18.09.26.png

nodejs14.xを選択します。
スクリーンショット 2024-01-06 18.10.09.png

今回はM1 Macなのでarm64を選択します。
スクリーンショット 2024-01-06 18.10.24.png

今回はAWS SAM Hello Worldを選択します。
スクリーンショット 2024-01-06 18.10.38.png

ディレクトリを選択します。
スクリーンショット 2024-01-06 18.10.50.png

SAMを展開するディレクトリ名を入力します。
スクリーンショット 2024-01-06 18.11.19.png

設定が完了すると以下のようなディレクトリ構造になります。

.
└── 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]の関数名が確認できることができればデプロイは完了です。

最後に

とっつきにくそうと思っていましたが、実際に使ってみるととても便利で使いやすかったです。今後は業務でも積極的に活用していきたいと思いました。

最後まで読んでくださりありがとうございました。

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