Lambda 함수 URL 생성 및 관리 - AWS Lambda

Lambda 함수 URL 생성 및 관리

함수 URL은 Lambda 함수를 위한 전용 HTTP(S) 엔드포인트입니다. Lambda 콘솔 또는 Lambda API를 통해 함수 URL을 생성하고 구성할 수 있습니다. 함수 URL을 생성하면 Lambda가 자동으로 고유한 URL 엔드포인트를 생성합니다. 함수 URL을 생성하면 URL 엔드포인트가 변경되지 않습니다. 함수 URL 엔드포인트는 다음 형식을 취합니다.

https://<url-id>.lambda-url.<region>.on.aws
참고

아시아 태평양(하이데라바드)(ap-south-2), 아시아 태평양(멜버른)(ap-southeast-4), 캐나다 서부(캘거리)(ca-west-1), 유럽(스페인)(eu-south-2), 유럽(취리히)(eu-central-2), 이스라엘(텔아비브)(il-central-1) 및 중동(아랍에미리트)(me-central-1) 리전에서는 함수 URL이 지원되지 않습니다.

함수 URL은 IPv4 및 IPv6을 지원하는 이중 스택을 지원합니다. 함수에 대한 함수 URL을 구성한 후 웹 브라우저, curl, Postman 또는 모든 HTTP 클라이언트를 통해 HTTP(S) 엔드포인트에서 함수를 호출할 수 있습니다.

참고

퍼블릭 인터넷을 통해서만 함수 URL에 액세스할 수 있습니다. Lambda 함수는 AWS PrivateLink를 지원하지만 함수 URL은 지원하지 않습니다.

Lambda 함수 URL은 보안 및 액세스 제어를 위해 리소스 기반 정책을 사용합니다. 함수 URL은 교차 오리진 리소스 공유(CORS) 구성 옵션도 지원합니다.

함수 URL을 함수 별칭이나 $LATEST 게시되지 않은 함수 버전에 적용할 수 있습니다. 다른 함수 버전에는 함수 URL을 추가할 수 없습니다.

다음 섹션에서는 Lambda 콘솔, AWS CLI 및 AWS CloudFormation 템플릿을 사용하여 함수 URL을 생성하고 관리하는 방법을 보여줍니다.

함수 URL 생성(콘솔)

다음 단계에 따라 콘솔을 사용하여 함수 URL을 생성합니다.

  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수 URL을 생성할 함수의 이름을 선택합니다.

  3. 구성(Configuration) 탭을 선택한 다음, 함수 URL(Function URL)을 선택합니다.

  4. 함수 URL 생성(Create function URL)을 선택합니다.

  5. 인증 유형(Auth type)에서 AWS_IAM 또는 NONE을 선택합니다. 함수 URL 인증에 대한 자세한 내용은 액세스 제어 섹션을 참조하세요.

  6. (선택 사항) 교차 오리진 리소스 공유(CORS) 구성(Configure cross-origin resource sharing (CORS))을 선택한 다음 함수 URL에 대한 CORS 설정을 구성합니다. CORS에 대한 자세한 내용은 교차 오리진 리소스 공유(CORS) 섹션을 참조하세요.

  7. 저장(Save)을 선택합니다.

이렇게 하면 $LATEST 게시되지 않은 함수 버전에 대한 함수 URL이 생성됩니다. 함수 URL이 콘솔의 함수 개요(Function overview) 섹션에 표시됩니다.

  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수 URL을 생성할 별칭을 사용하는 함수의 이름을 선택합니다.

  3. 별칭(Aliases) 탭을 선택한 다음, 함수 URL을 생성할 별칭의 이름을 선택합니다.

  4. 구성(Configuration) 탭을 선택한 다음, 함수 URL(Function URL)을 선택합니다.

  5. 함수 URL 생성(Create function URL)을 선택합니다.

  6. 인증 유형(Auth type)에서 AWS_IAM 또는 NONE을 선택합니다. 함수 URL 인증에 대한 자세한 내용은 액세스 제어 섹션을 참조하세요.

  7. (선택 사항) 교차 오리진 리소스 공유(CORS) 구성(Configure cross-origin resource sharing (CORS))을 선택한 다음 함수 URL에 대한 CORS 설정을 구성합니다. CORS에 대한 자세한 내용은 교차 오리진 리소스 공유(CORS) 섹션을 참조하세요.

  8. Save(저장)를 선택합니다.

이렇게 하면 함수 별칭에 대한 함수 URL이 생성됩니다. 함수 URL이 콘솔의 별칭에 대한 함수 개요(Function overview) 섹션에 표시됩니다.

함수 URL을 사용하여 새 함수를 생성하려면(콘솔)
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수 생성(Create function)을 선택합니다.

  3. 기본 정보에서 다음과 같이 합니다.

    1. 함수 이름(Function name)my-function과 같은 함수 이름을 입력합니다.

    2. 런타임(Runtime)에서 원하는 언어 런타임을 선택합니다(예: Node.js 18.x).

    3. 아키텍처(Architecture)에서 x86_64 또는 arm64를 선택합니다.

    4. 권한(Permissions)을 확장한 다음, 새 실행 역할을 생성할지 아니면 기존 역할을 사용할지 여부를 선택합니다.

  4. 고급 설정(Advanced settings)을 확장한 다음 함수 URL(Function URL)을 선택합니다.

  5. 인증 유형(Auth type)에서 AWS_IAM 또는 NONE을 선택합니다. 함수 URL 인증에 대한 자세한 내용은 액세스 제어 섹션을 참조하세요.

  6. (선택 사항) 교차 오리진 리소스 공유(CORS) 구성(Configure cross-origin resource sharing (CORS))을 선택합니다. 함수 생성 중에 이 옵션을 선택하면 함수 URL이 기본적으로 모든 오리진의 요청을 허용합니다. 함수를 생성한 후 함수 URL에 대한 CORS 설정을 편집할 수 있습니다. CORS에 대한 자세한 내용은 교차 오리진 리소스 공유(CORS) 섹션을 참조하세요.

  7. 함수 생성(Create function)을 선택합니다.

이렇게 하면 $LATEST 게시되지 않은 함수 버전에 대한 함수 URL이 있는 새로운 함수가 생성됩니다. 함수 URL이 콘솔의 함수 개요(Function overview) 섹션에 표시됩니다.

함수 URL 생성(AWS CLI)

AWS Command Line Interface(AWS CLI)를 사용하여 기존 Lambda 함수에 대한 함수 URL을 생성하려면 다음 명령을 실행합니다.

aws lambda create-function-url-config \ --function-name my-function \ --qualifier prod \ // optional --auth-type AWS_IAM --cors-config {AllowOrigins="https://example.com"} // optional

이렇게 하면 함수 my-function에 대한 prod 한정자에 함수 URL이 추가됩니다. 이러한 구성 파라미터에 대한 자세한 내용은 API 참조의 CreateFunctionUrlConfig를 참조하세요.

참고

AWS CLI를 통해 함수 URL을 생성하려면 함수가 이미 존재해야 합니다.

CloudFormation 템플릿에 함수 URL 추가

AWS CloudFormation 템플릿에 AWS::Lambda::Url 리소스를 추가하려면 다음 구문을 사용합니다.

JSON

{ "Type" : "AWS::Lambda::Url", "Properties" : { "AuthType" : String, "Cors" : Cors, "Qualifier" : String, "TargetFunctionArn" : String } }

YAML

Type: AWS::Lambda::Url Properties: AuthType: String Cors: Cors Qualifier: String TargetFunctionArn: String

파라미터

  • (필수) AuthType – 함수 URL에 대한 인증 유형을 정의합니다. 가능한 값은 AWS_IAM 또는 NONE입니다. 액세스 권한을 인증된 사용자로 제한하려면 AWS_IAM으로 설정합니다. IAM 인증을 우회하고 모든 사용자가 함수에 요청을 수행할 수 있도록 허용하려면 NONE으로 설정합니다.

  • (선택 사항) Cors – 함수 URL에 대한 CORS 설정을 정의합니다. CloudFormation의 AWS::Lambda::Url 리소스에 Cors를 추가하려면 다음 구문을 사용합니다.

    예 AWS::Lambda::Url.Cors (JSON)
    { "AllowCredentials" : Boolean, "AllowHeaders" : [ String, ... ], "AllowMethods" : [ String, ... ], "AllowOrigins" : [ String, ... ], "ExposeHeaders" : [ String, ... ], "MaxAge" : Integer }
    예 AWS::Lambda::Url.Cors (YAML)
    AllowCredentials: Boolean AllowHeaders: - String AllowMethods: - String AllowOrigins: - String ExposeHeaders: - String MaxAge: Integer
  • (선택 사항) Qualifier – 별칭 이름입니다.

  • (필수) TargetFunctionArn – Lambda 함수의 이름 또는 Amazon 리소스 이름(ARN)입니다. 유효한 이름 형식은 다음과 같습니다.

    • 함수 이름 - my-function

    • 함수 ARN - arn:aws:lambda:us-west-2:123456789012:function:my-function

    • 부분적 ARN - 123456789012:function:my-function

교차 오리진 리소스 공유(CORS)

다양한 오리진이 함수 URL에 액세스하는 방법을 정의하려면 교차 오리진 리소스 공유(CORS)를 사용합니다. 다른 도메인에서 함수 URL을 호출하려는 경우 CORS를 구성하는 것이 좋습니다. Lambda는 함수 URL에 대해 다음 CORS 헤더를 지원합니다.

CORS 헤더 CORS 구성 속성 예제 값

Access-Control-Allow-Origin

AllowOrigins

* (모든 오리진 허용)

https://www.example.com

http://localhost:60905

Access-Control-Allow-Methods

AllowMethods

GET, POST, DELETE, *

Access-Control-Allow-Headers

AllowHeaders

Date, Keep-Alive, X-Custom-Header

Access-Control-Expose-Headers

ExposeHeaders

Date, Keep-Alive, X-Custom-Header

Access-Control-Allow-Credentials

AllowCredentials

TRUE

Access-Control-Max-Age

MaxAge

5 (기본값), 300

Lambda 콘솔 또는 AWS CLI를 사용하여 함수 URL에 대한 CORS를 구성하는 경우, Lambda는 함수 URL을 통해 모든 응답에 CORS 헤더를 자동으로 추가합니다. 또는 함수 응답에 CORS 헤더를 수동으로 추가할 수 있습니다. 충돌하는 헤더가 있는 경우, 예상되는 동작은 요청 유형에 따라 달라집니다.

  • OPTIONS 요청과 같은 사전 요청의 경우, 함수 URL에 구성된 CORS 헤더가 우선합니다. Lambda는 응답에서 이러한 CORS 헤더만 반환합니다.

  • GET 또는 POST 요청과 같은 비 사전 요청의 경우, Lambda는 함수 URL에 구성된 CORS 헤더와 함수가 반환한 CORS 헤더를 모두 반환합니다. 이로 인해 응답에 CORS 헤더가 중복될 수 있습니다. 다음과 유사한 오류가 표시될 수 있습니다. The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.

일반적으로, 함수 응답에서 CORS 헤더를 수동으로 전송하는 것보다 함수 URL에서 모든 CORS 설정을 구성하는 것이 좋습니다.

함수 URL 제한

제한은 함수가 요청을 처리하는 속도를 제한합니다. 이는 함수가 다운스트림 리소스를 오버로드하지 못하게 하거나 갑작스러운 요청 급증을 처리하는 등 여러 상황에서 유용합니다.

예약된 동시성을 구성하여 Lambda 함수가 함수 URL을 통해 처리하는 요청 속도를 제한할 수 있습니다. 예약된 동시성은 함수에 대한 최대 동시 호출 수를 제한합니다. 함수의 초당 최대 요청 속도(RPS)는 구성된 예약된 동시성의 10배에 해당합니다. 예를 들어 예약된 동시성이 100인 함수를 구성하는 경우 최대 RPS는 1,000입니다.

함수 동시성이 예약된 동시성을 초과할 때마다 함수 URL은 HTTP 429 상태 코드를 반환합니다. 함수가 구성된 예약된 동시성을 기준으로 10배의 RPS 최대값을 초과하는 요청을 수신하면 HTTP 429 오류도 수신됩니다. 예약된 동시성에 대한 자세한 내용은 함수에 대해 예약된 동시성 구성 섹션을 참조하세요.

함수 URL 비활성화

비상시에는 함수 URL에 대한 모든 트래픽을 거부할 수 있습니다. 함수 URL을 비활성화하려면 예약된 동시성을 0으로 설정합니다. 이렇게 하면 함수 URL에 대한 모든 요청을 제한하여 HTTP 429 상태 응답이 발생합니다. 함수 URL을 다시 활성화하려면 예약된 동시성 구성을 삭제하거나 구성을 0보다 큰 값으로 설정합니다.

함수 URL 삭제

함수 URL을 삭제하면 복구할 수 없습니다. 새 함수 URL을 생성하면 URL 주소가 달라집니다.

참고

NONE 인증 유형이 있는 함수 URL을 삭제하는 경우, Lambda는 연결된 리소스 기반 정책을 자동으로 삭제하지 않습니다. 이 정책을 삭제하려면 수동으로 삭제해야 합니다.

  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수의 이름을 선택합니다.

  3. 구성(Configuration) 탭을 선택한 다음, 함수 URL(Function URL)을 선택합니다.

  4. Delete(삭제)를 선택합니다.

  5. 필드에 삭제라는 단어를 입력하여 삭제를 확인합니다.

  6. Delete(삭제)를 선택합니다.

참고

함수 URL이 있는 함수를 삭제할 경우 Lambda는 함수 URL을 비동기적으로 삭제합니다. 동일한 계정에서 동일한 이름으로 새 함수를 즉시 생성하는 경우 원래 함수 URL이 삭제되는 대신 새 함수에 매핑될 수 있습니다.