AWS SAM 構文を利用した CloudFormation による Lambda と API Gateway の作成
はじめに
今回は AWS SAM 構文を利用し、 Hello を返す API を作成しました。
AWS SAM 構文を利用すると、シンプルな設定のみでAPIを作成できます。
開発環境
- AWS-CLI 1.16.158
- Microsoft Windows 10 Home
※AWS CLI のインストールをしていない場合は、以下を参考にインストール、認証を行ってください。
AWS CLI のインストール
AWS CLI の認証
yaml ファイルの作成
この yaml ファイルに API Gateway と Lambda の設定を書き込みます。
今回使用した yaml ファイルは以下の通りです。
AWSTemplateFormatVersion: '2010-09-09'
#AWS SAM構文をCloudFormation用に変換する宣言
Transform: 'AWS::Serverless-2016-10-31'
#スタックの説明
Description: test-stack
Resources:
hellofunction:
Type: 'AWS::Serverless::Function'
Properties:
#用意したPythonファイル名を.lambda_handler前に付ける
Handler: Hello.lambda_handler
#作成されるLambda関数名
FunctionName: HelloFunction
#Lambda関数に記述されるコード
CodeUri: Hello.py
#ランタイム設定
Runtime: python3.7
#Lambda関数の説明
Description: 'Hello api'
#メモリサイズ設定
MemorySize: 128
#タイムアウト時間設定
Timeout: 30
#イベントを設定
Events:
helloapi:
#イベントを決定
Type: Api
Properties:
#APIのパスを決定
Path: '/hello'
#メソッドを設定
Method: get
Pythonコードの作成
ただ、Hello を返すコードを記述しました。
import json
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': json.dumps('Hello')
}
各ファイルをパッケージ化し、テンプレートとしてs3にアップロード
以下のコマンドで、各ファイルをパッケージ化し S3 にアップロードします。
このパッケージは、この後 CLoudFormation にデプロイするために利用します。
aws cloudformation package --template-file 作成したyamlファイル名 --s3-bucket パッケージを保存するS3バケット名 --output-template-file 作成するテンプレートファイル名.yaml
デプロイ
作成したテンプレートを以下のコマンドでデプロイします。
先ほどのコマンドの実行結果からコマンドをコピペします。
--stack-nameには任意のスタック名を入力し、末尾に--capabilities CAPABILITY_IAMを付けて実行します。
--capabilities CAPABILITY_IAMは IAM 関連の処理を行う際に必要になります。
aws cloudformation deploy --template-file C:\xxx\作成したyamlテンプレートファイル名 --stack-name 任意のスタック名 --capabilities CAPABILITY_IAM
作成されたAPIの確認
実際に、作成されたAPIをたたくと以下のように Hello と表示されます。
おわりに
今回はAWS SAM 構文を利用して、API を作成しました。
AWS でサーバーレスアプリケーションを構築する際は、CloudFormation の構文を利用するより、SAM 構文のほうがシンプルに書けるので試してみてください。
Author And Source
この問題について(AWS SAM 構文を利用した CloudFormation による Lambda と API Gateway の作成), 我々は、より多くの情報をここで見つけました https://qiita.com/KC_NN/items/a5ff44f7e2201e0aecc3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .