CloudFormation에서 Lambda 함수 배포 (초보)

15873 단어 CloudFormation람다

개요



Lambda 함수 배포 자동화를 위한 CloudFormation을 사용한 Lambda 함수 배포
※이 기사의 목표는 S3에 있는 python의 zip 파일에서 Lambda 함수를 작성하는 곳까지입니다.

2018-11-15 업데이트
속성에 대해 자세히 정리한 기사 쓴
AWS::Lambda::Function 속성

참고 자료



기본은 공식 문서 참조

준비



1. Lambda 함수로 만드는 파이썬 파일



쓸데없이 쓰레기를 써도 불필요한 생각이 들어 버리므로 이번은 심플하게 ↓ 이런

test.py
# coding: utf-8

def lambda_handler(event, context):
    print "OK!!"

2. zip 파일



이전의 test.py를 zip 형식으로 압축하여 모든 S3 버킷에 업로드

3. 템플릿 파일 준비



공식 문서에 따르면 AWS::Lambda::Function에 필요한 속성은 다음과 같습니다 (JSON).

템플릿


{
  "Type" : "AWS::Lambda::Function",
  "Properties" : {
    "Code" : Code,
    "DeadLetterConfig" : DeadLetterConfig,
    "Description" : String,
    "Environment" : Environment,
    "FunctionName" : String,
    "Handler" : String,
    "KmsKeyArn" : String,
    "MemorySize" : Integer,
    "ReservedConcurrentExecutions" : Integer,
    "Role" : String,
    "Runtime" : String,
    "Timeout" : Integer,
    "TracingConfig" : TracingConfig,
    "VpcConfig" : VPCConfig,
    "Tags" : [ Resource Tag, ... ]
  }
}

여기에서 우선 필요한 것을 남기면 ↓
{
  "Type" : "AWS::Lambda::Function",
  "Properties" : {
    "Code" : Code,
    "Description" : String,
    "FunctionName" : String,
    "Handler" : String,
    "Role" : String,
    "Runtime" : String,
  }
}

속성 설명


  • Code (필수 항목)
  • 버킷의 파일을 가리키거나 소스 코드를 인라인 텍스트로 지정할 수 있습니다.
  • 버킷 내 파일 지정
  • S3Bucket : zip 파일이있는 버킷 이름을 넣습니다
  • S3Key : zip 파일 이름 (확장자까지)



  • Description
  • 함수 설명

  • FunctionName
  • 함수 이름
  • 여기를 지정하지 않으면 AWS CloudFormation은 고유 한 물리적 ID를 생성하고 ID를 함수 이름으로 사용하므로 설정하는 것이 좋습니다


  • Handler (필수 항목)
  • Lambda가 코드 실행을 시작하기 위해 호출하는 (소스 코드의) 함수 이름

  • Role (필수 항목)
  • AWS 서비스에 액세스하는 코드를 실행할 때 Lambda가 맡는 IAM 실행 역할의 ARN
  • ※ 여기만 스스로 만든 Role이라고 잘 실행할 수 없었기 때문에 공식 문서의 샘플을 참고로했습니다
  • htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아 WSC ぉ d ぉ r 마치 온 / ㄱ st / 우세 r 굿이 / 쿠이 쿠 레 f ぁ mb이다. HTML



  • Runtime (필수 항목)
  • 업로드 할 Lambda 함수의 런타임 환경


  • 4. 이상과 문서에서 템플릿 파일 만들기



    ※임의로는 ※(미표)를 넣어 둡니다.
    {
      "AWSTemplateFormatVersion" : "2010-09-09",
      "Description" : "※sample of cloudformation template for deploying a lambda function form S3.",
      "Resources" : {
        "※HelloSample": {
          "Type" : "AWS::Lambda::Function",
          "Properties" : {
            "Code" : {
              "S3Bucket" : "※S3のバケット名",
              "S3Key" : "※test.zip"
            },
            "Description" : "※test deploy lambda template",
            "FunctionName" : "※test_lambda_function",
            "Handler" : "※test.lambda_handler",
            "Role" : { "Fn::GetAtt" : ["LambdaExecutionRole", "Arn"] },
            "Runtime" : "python2.7",
          }
        },
        "LambdaExecutionRole": {
          "Type": "AWS::IAM::Role",
          "Properties": {
            "AssumeRolePolicyDocument": {
              "Version": "2012-10-17",
              "Statement": [{ "Effect": "Allow", "Principal": {"Service": ["lambda.amazonaws.com"]}, "Action": ["sts:AssumeRole"] }]
            },
          }
        }
      }
    }
    

    5. CloudFormation에서 스택 생성



    5-1. 템플릿을 AmazonS3에 업로드



    방금 만든 템플릿 파일을 업로드합니다.


    5-2. 상세 설정



    스택의 임의 이름을 입력
    ※이번은 test-deploy-lambda-function 라는 이름으로 설정합니다.


    5-3. 옵션



    특히 기본값으로 두는 것이 좋지만 타임 아웃 만을 위해 설정하십시오 (5 분 정도)


    5-4. 작성



    위의 설정으로 作成 버튼을 누르십시오.

    이상

    확인



    작성 버튼을 누르고 바로 스택의 상세 화면에 가면 이미 Lambda 함수를 deploy 해 주고있는 모습



    지정한 이름으로 Lambda 함수가 생성되었는지



    내용은 test.py의 내용인가?



    Handler도 지정한 것인가?





    이번에는 전혀 실용적이지 않고 초보가되어 버렸지만, 여기까지 도착하는 데 3 일 정도 걸렸기 때문에 일단 여기까지 할 수 있으면 나머지는 템플릿의 속성 구사하여 실천적이 될 수 있을까. ...

    뭔가 도움이되면

    좋은 웹페이지 즐겨찾기