[AWS] Lambda URL의 Auth 종류
0. INTRO
Lambda 함수 URL을 사용하면 HTTPS 엔드포인트에서 Lambda 함수를 호출할 수 있습니다. 이를 통해 HTTP 클라이언트를 사용하여 AWS 외부의 애플리케이션에 함수를 노출할 수 있습니다.
이전에는 Lambda 함수 노출을 위해서는 API Gateway 서비스를 이용하여 엔드포인트를 만든 후 Lambda와 연결을 해주어야 했으며 이 과정에서 추가적인 단계와 지식들을 필요로 했습니다. 물론 세세하고 깊이있는 API 설정들을 하기 위해서는 여전히 API Gateway 서비스를 사용해야하지만 Lambda URL 기능은 위의 프로세스를 훨씬 쉽게 할 수 있도록 도와줍니다.
즉, Lambda 함수 URL은 API Gateway 엔드포인트의 간소화된 버전이며 이 기능은 복잡한 API Gateway 엔드포인트 설정에 대해 걱정할 필요 없이 빠르게 HTTP URL을 설정하려는 사용자에게 유용합니다.
- Configuration → Function URL 에서 간단히 생성이 가능하다.
1. Lambda URL 종류
- NONE
- None 타입을 선택하게 되면 유저가 누구든 상관없이 모두에게 해당 URL 접근 권한이 주어진다.
- IAM AUTH
- IAM에서 특정 권한이 부여된 USER들에 한해서 AWS Credentials 와 함께 URL에 접근이 가능하도록 하는 기능이다.
- 보안적인 측면에서 우수하지만 브라우저에 바로 URL을 입력하면 당연히 접근이 되지 않기에 특정 부분에 있어서 불편할 수 있다.
2. AWS_IAM 타입으로 접근하는 방법
- IAM USER 생성 및 정책 연결
- IAM > Role을 만들 때 InvokeFunctionUrl, InvokeFunction 정책을 Allow하여 생성 후 해당 user에 연결한다. 혹은 이미 연결된 Role에 위의 정책들을 추가해줘도 무방하다.
-
Resource의 경우 전체를 하려면 “*” 으로, 특정 lambda url만 허용하려면 해당 함수의 ARN 값을 넣어준다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "lambda:InvokeFunctionUrl", "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:ap-northeast-2:646664498184:function:CDK-URL-test" } ] }
- 해당 USER의 AWS Credential Key 발급
- IAM > Users > Security Credentials > Create access key
- Postman을 이용하여 API Test
- 아래와 같이 Lambda URL을 넣어준 후 Auth > AWS Signature을 선택하고 4가지 값들(AccessKey, SecretKey, AWS Region, Service Name)을 입력해준다.
- Send를 누르게 되면 해당 Lambda URL 실행 권한이 입력한 AWS KEY를 통해 식별되면서 API가 접근이 가능하게된다.
Leave a comment