AWS 람다 레이어 공유하기
AWS 람다 함수의 공통 부분을 다른 계정이나 조직과 공유하는 방법

AWS 람다 레이어(Lambda Layers)는 라이브러리, 커스텀 런타임(Custom Runtime)등 여러 람다코드에서 공유되는 부분이 있을 때 유용합니다. 설치가 까다로운 경우 직접 람다 레이어를 만들기 보다 다른 사람이 공유한 것을 사용하는 것이 좋습니다. 내가 만든 람다 레이어를 다른 사람들이 쉽게 사용할 수 있게 공유하는 방법을 알아보겠습니다.

람다 레이어를 만들면 기본적으로 내 계정에서만 사용할 수 있는 상태고, 이를 다른 계정에 공유하려면 AWS CLI 혹은 API 를 이용해야 합니다. 2018년 12월 31일 기준 AWS 웹 콘솔에서는 설정 할 수 없습니다. 여기서는 AWS CLI를 사용해보겠습니다.

모든 사람이 사용할 수 있도록 공유하는 방법은 다음과 같습니다.

$ aws lambda add-layer-version-permission \
    --layer-name my_layer \
    --version-number 1 \
    --statement-id share_all \
    --principal '*' \
    --action lambda:GetLayerVersion
{
  "RevisionId": "xxx-xxx-xxxx-xxx-xxxxxxx",
  "Statement": "{\"Sid\":\"share_all\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"lambda:GetLayerVersion\",\"Resource\":\"arn:aws:lambda:ap-northeast-2:xxxxxx:layer:my_layer:1\"}"
}

--organization-id 옵션을 이용해 특정 조직에만 공유하거나, principal에 AWS 계정 아이디를 지정해서 특정 AWS 계정에만 공유하는 것도 가능합니다.

람다 레이어는 버전 별로 권한을 관리하므로 같은 레이어라도 버전 별로 접근 권한이 다릅니다. 이런 이유로 버전을 만들 때마다 공유 권한도 새로 설정해야합니다.

또한 람다 레이어는 같은 리전에서만 사용가능하므로 다른 리전에서 사용하려면 해당 리전에 람다 레이어를 만들어야 합니다. 이는 본인의 계정에서만 사용할 때도 마찬가지입니다.

권한이 없는 람다 레이어를 사용하거나 다른 리전의 레이어를 사용하려고 하면 lambda:GetLayerVersion 권한이 없다는 에러 메시지가 표시됩니다.

접근 권한이 없는 레이어를 사용하려고 시도하는 경우 에러가 발생한다
접근 권한이 없는 레이어를 사용하려고 시도하는 경우 에러가 발생한다

람다 레이어 버전에 적용된 권한을 확인하는 방법은 다음과 같습니다.

$ aws lambda get-layer-version-policy \
    --layer-name my_layer \
    --version-number 1
{
    "Statement": "{\"Sid\":\"share_all\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"lambda:GetLayerVersion\",\"Resource\":\"arn:aws:lambda:us-west-2:xxxxxx:layer:my_layer:1\"}",
    "RevisionId": "b0cd9796-d4eb-4564-939f-de7fe0b42236"
}

권한을 제거하는 방법은 다음과 같습니다.

$ aws lambda remove-layer-version-permission \
    --layer-name my_layer \
    --version-number 1 \
    --statement-id share_all

람다 레이어 공유 기능을 이용해 유용한 레이어들이 많이 공유되기를 기대합니다.

엘라스틱서치와 한국어 형태소 분석기 은전한잎(eunjeon) 사용법

🗒 기사, 2015-06-12 - 엘라스틱서치는 아파치 루씬 기반의 검색엔진입니다. 검색엔진에서는 텍스트를 미리 일정한 규칙에 따라 인덱스하고 이 인덱스를 기반으로 검색을 수행합니다. 한국어 인덱스 작성을 위해서는 형태소 분석기와 같은 도구를 분석기로 사용해야합니다. 이 글에서는 엘라스틱서치에서 오픈소스 한국어 형태소 분석기 은전한잎을 사용해 인덱스를 생성하는 방법을 소개합니다.

AWS 리인벤트(AWS re:Invent) 참가 가이드: 키노트부터 리플레이까지

🗒 기사, 2019-12-31 - 미국 라스베이거스에서 열리는 AWS re:Invent(AWS 리인벤트)를 알차게 보내려면 무엇을 준비해야 할까요? 수많은 일정과 인파 속에서 헤메지 않을 방법은 무엇일까요? 직접 리인벤트에 참석하고 온 경험을 정리해보았습니다.

파이썬(Python) 2.7 공식 지원 종료

🗞 새소식, 2020-01-03 - 2020년 1월 1일, 파이썬(Python) 2.7 지원이 종료되었습니다. 이로써 파이썬 2.x 버전이 은퇴합니다. 수고한 연장자에게 작별 인사를, 그리고 이제 3.x 버전으로 넘어갈 시점입니다.