본문 바로가기

카테고리 없음

Serverless Python에서 Environment Variable이용하기

728x90

 

아래와 같이 provider.environment:에 넣을 수 있습니다.

provider:
  name: aws
  runtime: python3.8
  lambdaHashingVersion: 20201221
  stage: dev
  region: ap-northeast-2
  environment:
    TELEGRAM_ACCESS_TOKEN: 'AAE7h61H'
    MYSQL_HOST: '<hostname>'
    MYSQL_USERNAME: '<username>'
    MYSQL_PASSWORD: '1234'

 

사용방법은 os.getenv()를 사용해서 값을 넣을 수 있습니다.

import json, requests, os
from urllib import parse

def call_telegram(event:dict, context):

    r = ''
    status_code = 200
    if isinstance(event, dict) and event.get('queryStringParameters') != None:
        try:
            qsp = event['queryStringParameters']
            message = {k: parse.unquote(str(v)) for k, v in qsp.items()}
            url = f'https://api.telegram.org/bot281761192:{os.getenv("TELEGRAM_ACCESS_TOKEN")}/sendMessage?chat_id=173075344&text={message}'
            r = requests.get(url).json()

        except Exception as e:
            r = e
            status_code = 400

 

aws secret에서 가지고 오기

import boto3
 
client = boto3.client('ssm')
 
 
def get_secret(key):
	resp = client.get_parameter(
		Name=key,
		WithDecryption=True
	)
	return resp['Parameter']['Value']
 
access_token = get_secret('supermanToken')
database_connection = get_secret('databaseConn')

 

 

참고

https://www.serverless.com/blog/serverless-secrets-api-keys/

728x90
블로그 주인장입니다. 원하시는 정보는 얻으셨나요? 이 포스트에서 추가로 필요한 정보가 있으시면 여기에 남겨주세요.