HttpApi

An API Gateway HTTP API with throttling, one-year access logs and strict CORS by default. Add a custom domain or protect every route in one line.

API & Auth · anvil:aws:HttpApi

Infrastructure

import { App } from '@anvil-cloud/sdk';
import * as anvil from '@anvil-cloud/sdk';

export default new App({
  run(ctx) {
    const fn = new anvil.aws.Lambda('api', {
      runtime: 'nodejs24.x',
      handler: 'functions/api/index.handler',
    });

    const api = new anvil.aws.HttpApi('api', {
      routes: [{
        method: 'GET',
        path: '/users',
        consumer: { lambda: { arn: fn.arn } },
      }],
      cors: { allowOrigins: ['https://myapp.com'] },
    });

    ctx.export('url', api.url);
  },
});
import anvil_cloud as anvil

def infra(ctx: anvil.Context):
    fn = anvil.aws.Lambda("api",
        runtime="nodejs24.x",
        handler="functions/api/index.handler",
    )

    api = anvil.aws.HttpApi("api",
        routes=[{
            "method": "GET",
            "path": "/users",
            "consumer": {"lambda_": {"arn": fn.arn}},
        }],
        cors={"allow_origins": ["https://myapp.com"]},
    )

    ctx.export("url", api.url)

anvil.App(run=infra)
package main

import (
    "github.com/anvil-cloud/anvil/sdk/go/anvil"
    anvilaws "github.com/anvil-cloud/anvil/sdk/go/anvil/aws"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    anvil.Run(anvil.AppConfig{
        Run: func(ctx *anvil.Context) error {
            fn, err := anvilaws.NewLambda(ctx.PulumiCtx(), "api", &anvilaws.LambdaArgs{
                Runtime: anvilaws.LambdaRuntime_Nodejs24_x,
                Handler: pulumi.String("functions/api/index.handler"),
            })
            if err != nil {
                return err
            }

            api, err := anvilaws.NewHttpApi(ctx.PulumiCtx(), "api", &anvilaws.HttpApiArgs{
                Routes: anvilaws.HttpApiRouteArray{
                    anvilaws.HttpApiRouteArgs{
                        Method: anvilaws.HttpApiMethod("GET"),
                        Path:   pulumi.String("/users"),
                        Consumer: anvilaws.HttpApiRouteConsumerArgs{
                            Lambda: &anvilaws.HttpApiLambdaConsumerArgs{Arn: fn.Arn},
                        },
                    },
                },
            })
            if err != nil {
                return err
            }

            ctx.Export("url", api.Url)
            return nil
        },
    })
}

← Back to HttpApi docs