여기에서는 Lambda Function URL에 대해 이해하고, AWS CDK로 Lambda funtion url을 생성하고 활용하는것에 대한 예제를 보여줍니다. 또한 Lambda funtional url의 보안을 IAM을 통해 수행하도록, client에서 temperary security credential을 이용한 접속 방법을 설명합니다.
이 Repository는 "[AWS 기술 블로그] AWS Lambda 함수 URL을 이용하여 편리하고 안전한 API 서버와 클라이언트 만들기"로 Publish 되었습니다.
AWS의 대표적인 서비리스 서비스인 Lambda는 인프라에 대한 고민없이 개발에만 집중할 수 있어 편리하며, Concurrency에 기반한 오토 스케일링으로 부하의 변동에 쉽게 대응할 수 있으며, 사용하지 않을 경우에는 비용이 발생하지 않아서 경제적입니다. 하지만 그동안 외부에서 Lambda를 직접 호출 할 수 없어, API Gateway를 Endpoint로 사용하여야 했습니다. API Gateway는 다양한 인증과 편리한 기능을 제공하나, 하나 또는 소수의 API를 간단히 구현하여 Private하게 사용하는 경우에도 API Gateway를 사용하여야 했습니다. 아래 그림은 일반적인 serverless architecture로서, DynamoDB를 조회하는 Lambda 함수를 위하여 API Gateway를 사용하고 있습니다.
AWS Lambda Function URL이 2022년 4월에 상용 적용됨으로 인해, API Gateway없이 Lambda를 HTTPS 엔드포인트로 사용할 수 있게 되었습니다. 아래 그림은 Lambda Function URL을 통해 DynamoDB를 조회하는 Architecture를 보여줍니다. 여기서, API Gateway 없이 Lambda로 직접 접속할 수 있어서 간단하고 편리하게 API를 제공 할 수 있습니다.
AWS Console에서 Lambda Function URL 생성하기에서는 AWS Console을 이용해 직관적으로 Lambda Function URL을 생성하는것을 설명합니다.
AWS CDK를 이용한 Lambda Function URL 생성에서는 IaC(Infrastructure as Code)를 이용해 손쉽게 Lambda Function URL을 생성하는것을 설명합니다.
Lambda Function URL은 인증 방식으로 AWS Identity and Access Management(IAM)만을 제공하므로, 외부 접속을 제한하기 위해서는 IAM을 사용하여야 합니다.
IAM Credential은 AccessKeyId와 SecretAccessKey으로 구성되는데, 외부에 공개되지 않도록 세심한 주의가 필요합니다. 따라서, client에서 IAM Credential을 직접 사용하기 보다는 Temparary security credential을 생성하여 사용하는것이 바람직합니다. Temporary security credentials의 expire time을 설정하면, 최소 15분에서 최대 36시간까지 설정할 수 있으며, 기본값은 12시간입니다. 시간이 만료되면 더이상 사용할 수 없습니다. Temporary security credentials은 STS(Security Token Server)을 통해 획득하는데, resource-based policies를 따르므로 Lambda를 이용한 STS 연결과 같이 AWS SDK를 이용해 생성할 수 있습니다.
Temporary security credentials은 STS(Security Token Server)을 통해 획득하는데, resource-based policies를 따르므로 Lambda를 이용한 STS 연결과 같이 AWS SDK를 이용해 생성할 수 있습니다.
Lambda Function URL을 호출하는 Client 만들기에서는 Temporary Security Credential을 이용하여 안전하게 Lambda Function URL을 호출하는 Cliet에 대해 설명합니다.
Lambda Function URL은 API Gateway의 Lambda proxy Integration처럼 동작하므로, 클라이언트가 다른 경로(Resource)나 POST/GET등 다른 method를 쓰더라도 모두 하나의 Lambda 에서 처리할 수 있습니다. 즉, Lambda Function URL을 사용함으로 구조를 단순화하고 쉽고 편리하게 API 서버를 생성하고 이용 할 수 있지만, Lambda Function URL은 Custom URL을 생성할 수 없는 단점도 가지고 있습니다. Lambda Function URL로 파일 전송시에 Lambda의 payload는 6MB까지 가능하여, API Gateway의 Payload인 10MB에 비하여 상대적으로 적습니다.
Lambda Function URL은 WAF와 같은 Security 서비스를 사용할 수 없습니다. 만약 L7 Layer의 WAF와 같은 보호가 필요한 경우에는 Lambda 앞단에 CloudFront를 넣는것을 검토할 수 있습니다.
Lambda Function URL의 특성에 맞게 잘 사용하면, 편리한 서비리스 서비스인 Lambda 용도를 더욱 확장하여 사용자의 비지니스 용도에 최적화 할수 있을것으로 보여집니다.
Build a REST API with API Gateway, AWS Lambda, DynamoDB & AWS CDK
AWS STS를 이용한 Temparary security credential 활용하기
Announcing AWS Lambda Function URLs: Built-in HTTPS Endpoints for Single-Function Microservices
AWS Lambda: function URL is live!
The Pros and Cons of AWS Lambda Function URLs
Introducing Lambda Function URLs
[AWS 기술 블로그] AWS Lambda 함수 URL을 이용하여 편리하고 안전한 API 서버와 클라이언트 만들기