[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 타입으로 접근하는 방법

  1. 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"
                }
            ]
        }
      
  2. 해당 USER의 AWS Credential Key 발급
    • IAM > Users > Security Credentials > Create access key
  3. Postman을 이용하여 API Test
    1. 아래와 같이 Lambda URL을 넣어준 후 Auth > AWS Signature을 선택하고 4가지 값들(AccessKey, SecretKey, AWS Region, Service Name)을 입력해준다.
    2. Send를 누르게 되면 해당 Lambda URL 실행 권한이 입력한 AWS KEY를 통해 식별되면서 API가 접근이 가능하게된다.

    image

Leave a comment