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.
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
},
})
}