python3.7에서 로컬에서 Lambda 함수를 배포하는 단계

What's this?



pipenv를 이용해 명령 1발로 로컬 환경의 소스 코드를 Lmabda 함수에 배포할 때의 순서를 정리한 기사입니다.

IAM에서 사용자 생성



먼저 로컬에서 Lambda로 배포를 수행하기 위한 IAM 사용자를 만듭니다.
IAM > 사용자 > 사용자 추가에서 사용자를 만듭니다.

이번에는 사용자 이름 "dev_user"로 만듭니다.
액세스 유형은 프로그래밍 방식 액세스를 확인합니다.



액세스 권한은 나중에 부여할 수 있으므로 일단 건너뛰어 사용자를 만듭니다.
사용자 작성을 할 수 있으면 시크릿 액세스 키가 발행되므로 다운로드해 둡니다.

생성된 사용자에 대해 Lambda를 배포하는 데 필요한 액세스 권한을 추가합니다.
액세스 권한 > 인라인 정책 추가
서비스: Lambda 선택
액션: 로드에서GetFunction 선택
액션: 쓰기부터UpdateFunctionCode , UpdateFunctionConfiguration 선택



리소스는 모든 리소스를 선택합니다.



이것으로 사용자 작성이 완료됩니다.

aws-cli 설치



그런 다음 로컬에서 AWS 서비스를 명령줄에서 조작하기 위해 aws-cli를 설치합니다.
이미 로컬에 pip가 설치되어 있으면 즉시 설치할 수 있습니다.
//aws-cliのインストール
sudo pip install awscli

//バージョン確認
aws --version
aws-cli/2.1.5 Python/3.9.0 Darwin/19.6.0 source/x86_64 prompt/off

aws-cli를 설치할 수 있었으므로 방금 다운로드한 액세스 키를 이용하여 dev_user 자격 증명을 등록합니다.
//dev_userの認証情報を追加
aws configure --profile dev_user

AWS Access Key ID [None]:{.csvダウンロードしたアクセスキー}
AWS Secret Access Key [None]:{.csvダウンロードしたシークレットアクセスキー}
Default region name [None]: ap-northeast-1
Default output format [None]: json

//デフォルトユーザーをdev_userに変更
export AWS_DEFAULT_PROFILE=dev_user

//登録した認証情報の確認
aws configure list

이제 명령줄에서 AWS 리소스 작업을 수행할 수 있습니다.

lambda 함수 만들기



그런 다음 AWS 콘솔에서 lambda 함수를 생성합니다.


런타임은 Python 3.7입니다.

lmabda 함수가 생성된다.



로컬 환경에서 lambda 함수 배포



로컬 환경에서 lambda 함수를 배포하는 것은 다음 명령을 실행하여 가능합니다.
//カレントディレクトリのソースファイルをzip形式で圧縮
zip -r {ファイル名}.zip . -x *.zip

//zipファイルを指定のlambda関数にアップロード
aws lambda update-function-code --function-name {ARN名} --zip-file fileb://{ファイル名}.zip

이번에는이 명령을 파이썬으로 스크립팅합니다.
//作業ディレクトリの作成
mkdir sample-lambda

cd sample-lambda

// pipenvのインストール
pip install pipenv

pipenv --python 3.7


배포용 lambda 함수 ARN를 만듭니다. (내용은 뭐든지 좋습니다)

그런 다음 명령 실행을 위한 lambda_function.py를 만듭니다.

lambda_deploy.py
import subprocess

# create zipfile
cmd = []
cmd.append("zip")
cmd.append("-r")
cmd.append("{ファイル名}.zip")
cmd.append(".")
cmd.append("-x")
cmd.append("*.zip")
subprocess.run(cmd)

# lambda deploy
cmd = []
cmd.append("aws")
cmd.append("lambda")
cmd.append("update-function-code")
cmd.append("--function-name")
cmd.append("{ARN名}")
cmd.append("--zip-file")
cmd.append("fileb://{ファイル名}.zip")

subprocess.run(cmd)


pipfile을 편집하고 끝에 lambda_deploy.py 런타임 별칭을 추가합니다.
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "3.7"

# pipenv run deploy -> zip圧縮とlambda関数のアップロード
[scripts]
deploy = "python lambda_deploy.py"


이것으로 준비가 완료되었습니다.
실제로 실행하고 배포되는지 확인합니다.
//仮想環境に入る
pipenv shell

//デプロイコマンドの実行
pipenv run deploy

무사히 소스 코드가 lambda 함수에 반영되어 있으면 배포 성공입니다.



이번은 이것으로 이상입니다.

좋은 웹페이지 즐겨찾기