Skip to content

create_web_function_endpoint

create_web_function_endpoint(
    function_name: FunctionName,
    endpoint_name: EndpointName,
    endpoint_type: EndpointType,
    auth_type: AuthType,
    *,
    config_overrides: Optional[LambdaWebClientConfig] = None,
    description: Optional[Description] = None,
    auto_deployment_mode: Optional[AutoDeploymentMode] = None,
    revision_weights: Optional[RevisionWeightList] = None,
    regions: Optional[RegionList] = None,
    scaling_config: Optional[ScalingConfig] = None,
    throttle_config: Optional[ThrottleConfig] = None,
) -> CreateWebFunctionEndpointResponse

Creates an endpoint for a web function. An endpoint exposes the web function over HTTPS and routes traffic to one or more revisions.

To use this operation, you must have the CreateWebFunctionEndpoint permission on the web function, not on the endpoint being created.

Parameters:

  • function_name (FunctionName) –

    The web function to create the endpoint for.

    You can specify either of the following:

    • The function name, for example my-function.

    • The function ARN.

    The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.

  • endpoint_name (EndpointName) –

    The name of the endpoint to create. The name can contain letters, numbers, hyphens (-), and underscores (_), and can't begin or end with a hyphen or an underscore. The name is limited to 64 characters in length.

  • description (Optional[Description], default: None ) –

    A description of the endpoint.

  • endpoint_type (EndpointType) –

    The type of endpoint to create. Determines how traffic is served and routed across Regions.

    Valid values:

    • HomeRegion – Serves traffic from the Region where you created the web function.

    • MultiRegion – Replicates across the Regions that you choose and routes each request to the nearest one.

    • PerRegion – Creates a separate endpoint in each Region that you choose.

  • auth_type (AuthType) –

    The authorization type for the endpoint.

    Valid values:

    • ApplicationManaged – Your application handles authorization.

    • IamAuth – Lambda uses IAM to authorize requests, which must be signed with Signature Version 4 (SigV4).

  • auto_deployment_mode (Optional[AutoDeploymentMode], default: None ) –

    The auto-deployment mode for the endpoint. Controls whether the endpoint automatically serves the newest revision. If you don't specify a value, the default is Disabled, and this default is returned in the response.

    Valid values:

    • LatestRevision – The endpoint automatically serves the newest revision.

    • Disabled – Revision routing stays fixed until you change it.

  • revision_weights (Optional[RevisionWeightList], default: None ) –

    A list of revision weights that determine how traffic is distributed across revisions. You can specify up to two revisions for canary or blue-green deployments.

  • regions (Optional[RegionList], default: None ) –

    The list of Regions for the endpoint. Required when the endpoint type is MultiRegion or PerRegion: specify at least one Region other than the Region where you create the endpoint (the home Region). The home Region is added automatically if you don't include it; specifying only the home Region isn't allowed. When the endpoint type is HomeRegion, omit this field or specify only the home Region.

  • scaling_config (Optional[ScalingConfig], default: None ) –

    The scaling configuration for the endpoint. There is no default value. If you don't specify a scaling configuration, it is absent from the response.

  • throttle_config (Optional[ThrottleConfig], default: None ) –

    The throttling configuration for the endpoint. There is no default value. If you don't specify a throttling configuration, it is absent from the response.

Raises:

  • AccessDeniedException –

    You don't have permission to perform this operation. Check the IAM policies for your identity and any resource-based policy on the web function.

  • ConflictException –

    The request conflicts with the current state of the resource. For example, the resource is being modified by another request, you tried to delete a revision that is serving traffic on an endpoint, or the policy revision ID that you specified doesn't match the current policy. Resolve the conflict and try again.

  • InternalServerException –

    The request failed because of an internal error in the service. Retry the request. If the error persists, open a support case.

  • ResourceNotFoundException –

    The specified web function, revision, endpoint, or resource-based policy doesn't exist. Verify the resource identifier and try again.

  • ServiceQuotaExceededException –

    The request would exceed a service quota, such as the maximum number of web functions in your account or the maximum number of revisions or endpoints per web function. Request a quota increase or reduce usage and try again.

  • ThrottlingException –

    The request was denied because it exceeded the request rate that Lambda allows for your account. Reduce the frequency of requests and retry with exponential backoff.

  • ValidationException –

    The request failed validation because a parameter was missing, malformed, or outside the allowed range. Check the request parameters and try again.

  • UnknownServiceError –

    The service returned an error code this client does not model.

Source code in docs_src/capo_lambda_web/_services/lambda_web.py
def create_web_function_endpoint(
    self,
    function_name: "capo_lambda_web.types.function_name.FunctionName",
    endpoint_name: "capo_lambda_web.types.endpoint_name.EndpointName",
    endpoint_type: "capo_lambda_web.types.endpoint_type.EndpointType",
    auth_type: "capo_lambda_web.types.auth_type.AuthType",
    *,
    config_overrides: Optional[LambdaWebClientConfig] = None,
    description: Optional["capo_lambda_web.types.description.Description"] = None,
    auto_deployment_mode: Optional[
        "capo_lambda_web.types.auto_deployment_mode.AutoDeploymentMode"
    ] = None,
    revision_weights: Optional[
        "capo_lambda_web.types.revision_weight_list.RevisionWeightList"
    ] = None,
    regions: Optional["capo_lambda_web.types.region_list.RegionList"] = None,
    scaling_config: Optional[
        "capo_lambda_web.types.scaling_config.ScalingConfig"
    ] = None,
    throttle_config: Optional[
        "capo_lambda_web.types.throttle_config.ThrottleConfig"
    ] = None,
) -> "capo_lambda_web.types.create_web_function_endpoint_response.CreateWebFunctionEndpointResponse":
    """<p>Creates an endpoint for a web function. An endpoint exposes the web function over HTTPS and routes traffic to one or more revisions.</p> <p>To use this operation, you must have the <code>CreateWebFunctionEndpoint</code> permission on the web function, not on the endpoint being created.</p>

    Args:
        function_name: <p>The web function to create the endpoint for.</p> <p>You can specify either of the following:</p> <ul> <li> <p>The function name, for example <code>my-function</code>.</p> </li> <li> <p>The function ARN.</p> </li> </ul> <p>The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.</p>
        endpoint_name: <p>The name of the endpoint to create. The name can contain letters, numbers, hyphens (-), and underscores (_), and can't begin or end with a hyphen or an underscore. The name is limited to 64 characters in length.</p>
        description: <p>A description of the endpoint.</p>
        endpoint_type: <p>The type of endpoint to create. Determines how traffic is served and routed across Regions.</p> <p>Valid values:</p> <ul> <li> <p> <code>HomeRegion</code> – Serves traffic from the Region where you created the web function.</p> </li> <li> <p> <code>MultiRegion</code> – Replicates across the Regions that you choose and routes each request to the nearest one.</p> </li> <li> <p> <code>PerRegion</code> – Creates a separate endpoint in each Region that you choose.</p> </li> </ul>
        auth_type: <p>The authorization type for the endpoint.</p> <p>Valid values:</p> <ul> <li> <p> <code>ApplicationManaged</code> – Your application handles authorization.</p> </li> <li> <p> <code>IamAuth</code> – Lambda uses IAM to authorize requests, which must be signed with Signature Version 4 (SigV4).</p> </li> </ul>
        auto_deployment_mode: <p>The auto-deployment mode for the endpoint. Controls whether the endpoint automatically serves the newest revision. If you don't specify a value, the default is <code>Disabled</code>, and this default is returned in the response.</p> <p>Valid values:</p> <ul> <li> <p> <code>LatestRevision</code> – The endpoint automatically serves the newest revision.</p> </li> <li> <p> <code>Disabled</code> – Revision routing stays fixed until you change it.</p> </li> </ul>
        revision_weights: <p>A list of revision weights that determine how traffic is distributed across revisions. You can specify up to two revisions for canary or blue-green deployments.</p>
        regions: <p>The list of Regions for the endpoint. Required when the endpoint type is <code>MultiRegion</code> or <code>PerRegion</code>: specify at least one Region other than the Region where you create the endpoint (the home Region). The home Region is added automatically if you don't include it; specifying only the home Region isn't allowed. When the endpoint type is <code>HomeRegion</code>, omit this field or specify only the home Region.</p>
        scaling_config: <p>The scaling configuration for the endpoint. There is no default value. If you don't specify a scaling configuration, it is absent from the response.</p>
        throttle_config: <p>The throttling configuration for the endpoint. There is no default value. If you don't specify a throttling configuration, it is absent from the response.</p>

    Raises:
        capo_lambda_web.errors.access_denied_exception.AccessDeniedException: <p>You don't have permission to perform this operation. Check the IAM policies for your identity and any resource-based policy on the web function.</p>
        capo_lambda_web.errors.conflict_exception.ConflictException: <p>The request conflicts with the current state of the resource. For example, the resource is being modified by another request, you tried to delete a revision that is serving traffic on an endpoint, or the policy revision ID that you specified doesn't match the current policy. Resolve the conflict and try again.</p>
        capo_lambda_web.errors.internal_server_exception.InternalServerException: <p>The request failed because of an internal error in the service. Retry the request. If the error persists, open a support case.</p>
        capo_lambda_web.errors.resource_not_found_exception.ResourceNotFoundException: <p>The specified web function, revision, endpoint, or resource-based policy doesn't exist. Verify the resource identifier and try again.</p>
        capo_lambda_web.errors.service_quota_exceeded_exception.ServiceQuotaExceededException: <p>The request would exceed a service quota, such as the maximum number of web functions in your account or the maximum number of revisions or endpoints per web function. Request a quota increase or reduce usage and try again.</p>
        capo_lambda_web.errors.throttling_exception.ThrottlingException: <p>The request was denied because it exceeded the request rate that Lambda allows for your account. Reduce the frequency of requests and retry with exponential backoff.</p>
        capo_lambda_web.errors.validation_exception.ValidationException: <p>The request failed validation because a parameter was missing, malformed, or outside the allowed range. Check the request parameters and try again.</p>
        capo_lambda_web.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    def _handler(
        req: "OperationRequest[capo_lambda_web.types.create_web_function_endpoint_request.CreateWebFunctionEndpointRequest]",
    ) -> OperationResponse[
        "capo_lambda_web.types.create_web_function_endpoint_response.CreateWebFunctionEndpointResponse"
    ]:
        import capo_lambda_web._operations.lambda_web.create_web_function_endpoint

        output, http_response = (
            capo_lambda_web._operations.lambda_web.create_web_function_endpoint.create_web_function_endpoint(
                req.options, req.input
            )
        )
        return OperationResponse(output=output, response=http_response)

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("CreateWebFunctionEndpoint")
    )
    input_: capo_lambda_web.types.create_web_function_endpoint_request.CreateWebFunctionEndpointRequest = {
        "function_name": function_name,
        "endpoint_name": endpoint_name,
        "endpoint_type": endpoint_type,
        "auth_type": auth_type,
    }
    if description is not None:
        input_["description"] = description
    if auto_deployment_mode is not None:
        input_["auto_deployment_mode"] = auto_deployment_mode
    if revision_weights is not None:
        input_["revision_weights"] = revision_weights
    if regions is not None:
        input_["regions"] = regions
    if scaling_config is not None:
        input_["scaling_config"] = scaling_config
    if throttle_config is not None:
        input_["throttle_config"] = throttle_config

    response = execute_pipeline(
        OperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    response.response.close()
    return response.output