오늘 메일로 람다 런타임 업데이트가 필요하다고 메일이 왔다. (기존 파이썬 버전 3.8이며, 당시 3.12가 최신 런타임)

친절하게 설명해 준다. 하지만 압박이다.

메일에 게시된 명령어로 업데이트가 필요한 lambda 함수가 몇개인지 확인해 보니 16개 정도 되었다.

기존, AWS CLI 레퍼런스에서 명령어를 확인하니 Lambda 함수 이름을 이용해 런타임을 업데이트 할 수 있었다.

CLI 레퍼런스 사이트

참고로 업데이트가 필요한 람다 함수를 찾는 명령어는 아래와 같다.

# 업데이트가 필요한 람다함수 찾는 CLI
aws lambda list-functions --region ap-northeast-2 --output text --query "Functions[?Runtime=='python3.8'].FunctionName"

# 이름으로 업데이트 하는 명령어
aws lambda update-function-configuration --function-name <value> --runtime python3.12

 

하지만 너무 귀찮은걸...
람다함수 목록에 대한 결과를 파이프라인으로 받아 for 문을 통해 실행하도록 하고 싶다. CLI 한줄로도 구현할 수 있지만 그냥 sh파일안에 for문을 돌려보자.

#!/bin/bash

for arg in $*
do
  aws lambda update-function-configuration --function-name $arg --runtime python3.12
done

심플하다. 여기서 $*는 전체 매개변수를 받아 하나씩 꺼내서 아래 명령어를 통해 런타임을 업데이트 하겠다는 것이다.

해당 쉘파일을 저장하고 사용할 수 있도록 chmod +x ./쉘파일이름.sh을 진행해 주었다.

그리고 최종 명령어

aws lambda list-functions --region ap-northeast-2 --output text --query "Functions[?Runtime=='python3.8'].FunctionName" --output text | xargs -I{} sh ./lambda_python_update_runtime.sh {}

꽤 길다. 간단히 정리하면 "Functions[?Runtime... 부분의 python3.8이 찾고자 하는 런타임의 람다함수이고(즉, 업데이트가 필요한) | (파이프로) 결과를 다음 단에 전달한다.
따라서 xargs 옵션을 통해 이전단에서 들어오는 파라미터(람다함수 이름들)를 받아 sh파일을 실행하는 것이다.

오늘의 삽질은 여기까지!

'Cloud > AWS' 카테고리의 다른 글

DataGrip에서 DynamoDB Remote 연결  (1) 2024.02.02
API-GW에서 직접 S3로 파일 업로드 기능 구현하기  (0) 2024.01.30
AWS EKS 생성하기  (0) 2019.10.24
AWS EC2에 open-jdk8 설치  (0) 2019.10.24

+ Recent posts