0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS SAM 構文を利用した CloudFormation による Lambda と API Gateway の作成

Last updated at Posted at 2019-08-26

はじめに

今回は AWS SAM 構文を利用し、 Hello を返す API を作成しました。
AWS SAM 構文を利用すると、シンプルな設定のみでAPIを作成できます。

今回作成するシステムの構成図を以下に示します。
image.png

開発環境

  • 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 と表示されます。
image.png

おわりに

今回はAWS SAM 構文を利用して、API を作成しました。
AWS でサーバーレスアプリケーションを構築する際は、CloudFormation の構文を利用するより、SAM 構文のほうがシンプルに書けるので試してみてください。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?