Skip to content

Url ​

The Url resource lets you manage AWS Lambda Urls for your Lambda functions, allowing you to expose them directly over HTTP(S).

Minimal Example ​

Create a basic Lambda Url for a function with essential properties:

ts
import AWS from "alchemy/aws/control";

const lambdaUrl = await AWS.Lambda.Url("myLambdaUrl", {
  TargetFunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:myLambdaFunction",
  AuthType: "AWS_IAM", // Authentication type
  InvokeMode: "BUFFERED" // Invocation mode
});

Advanced Configuration ​

Configure a Lambda Url with additional CORS settings and a specific qualifier:

ts
const advancedLambdaUrl = await AWS.Lambda.Url("advancedLambdaUrl", {
  TargetFunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:myLambdaFunction",
  AuthType: "AWS_IAM",
  InvokeMode: "BUFFERED",
  Cors: {
    AllowOrigins: ["https://example.com"],
    AllowMethods: ["GET", "POST"],
    AllowHeaders: ["Content-Type"]
  },
  Qualifier: "$LATEST" // Specify the version of the function
});

Using an Existing Resource ​

If you want to adopt an existing Lambda Url instead of failing when it already exists:

ts
const existingLambdaUrl = await AWS.Lambda.Url("existingLambdaUrl", {
  TargetFunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:myExistingLambdaFunction",
  AuthType: "NONE", // Public access
  adopt: true // Adopt existing resource
});

Custom Invocation Mode ​

Create a Lambda Url with a different invocation mode for specific use cases:

ts
const customInvocationModeUrl = await AWS.Lambda.Url("customInvocationUrl", {
  TargetFunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:myCustomLambdaFunction",
  AuthType: "AWS_IAM",
  InvokeMode: "DIRECT" // Direct invocation mode
});