본문 바로가기
Programming/Python

AWS S3 triggered + lambda - severless

by Chan_찬 2020. 5. 31.
728x90
반응형

node.js 의 serverless를 사용

init

$ sudo npm install -g serverless

create service

$ serverless create --template aws-python3 --name <service_name> --path <directory>

set yml serverless for lambda

# serverless.yml

service: service_name

provider:
  name: aws
  runtime: python3.6
  region: us-east-1
  timeout: 60
  memorySize: 128
  environment:
    HOME: /var/task

functions:
  app:
    handler: handler.main

s3 trigger

events: > - s3: 부터가 s3 trigger 설정이다
bucket/source/ 디렉토리에 파일이 생성되면 람다를 트리거한다

# serverless.yml
...
functions:
  app:
    handler: handler.main
    events:
      - s3:
          bucket: bucket.name
          event: s3:ObjectCreated:*
          rules:
            - prefix: source/
          existing: true

tab(indent)는 꼭 지켜야한다, - s3: 하위는 탭2번이다

이미 존재하는 s3버킷이라면 마지막라인 existing: true 꼭 넣어야한다

iam - s3 접근권한

provider: 하위에 iamManagedPolicies추가

# severless.yml
...
provider:
  iamManagedPolicies:
    - { "Fn::Join": [":", ["arn:aws:iam::aws:policy/AmazonS3FullAccess"]]}
...

requirement docker

serverless-python-requirements

python의 pip 라이브러리를 패키지로 람다에 넣는 대신 사용

$ npm init  # 패키지에 대한 정보와 버전에 대한 정보가 있는 package.json 파일 생성
$ npm install --save serverless-python-requirements
# serverless.yml
...

plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerizePip: true
    dockerSsh: true
    dockerFile: Dockerfile
...

deploy

serverless.yml directory에서

$ serverless deploy
$ sls deploy
728x90
728x90
BIG
Buy me a coffeeBuy me a coffee

댓글