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
    
    
    

    파이썬 코드 작성



    다만, 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 구문을 더 간단하게 작성할 수 있으므로 사용해 보세요.

    좋은 웹페이지 즐겨찾기