Waf
AWS WAF with rate limiting, IP reputation, OWASP core rules and SQL injection protection in one line. Starts in count mode so nothing breaks.
Infrastructure
import { App } from '@anvil-cloud/sdk';
import * as anvil from '@anvil-cloud/sdk';
export default new App({
run(ctx) {
const waf = new anvil.aws.Waf('edge', {
mode: 'block',
});
const site = new anvil.aws.SvelteKitSite('web', {
path: 'web',
waf: { arn: waf.arn },
});
ctx.export('url', site.url);
},
});import anvil_cloud as anvil
def infra(ctx: anvil.Context):
waf = anvil.aws.Waf("edge",
mode="block",
)
site = anvil.aws.SvelteKitSite("web",
path="web",
waf=anvil.aws.SiteWafArgs(arn=waf.arn),
)
ctx.export("url", site.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 {
waf, err := anvilaws.NewWaf(ctx.PulumiCtx(), "edge", &anvilaws.WafArgs{
Mode: anvilaws.WafModeBlock,
})
if err != nil {
return err
}
site, err := anvilaws.NewSvelteKitSite(ctx.PulumiCtx(), "web", &anvilaws.SvelteKitSiteArgs{
Path: pulumi.String("web"),
Waf: &anvilaws.SiteWafArgs{Arn: waf.Arn},
})
if err != nil {
return err
}
ctx.Export("url", site.Url)
return nil
},
})
}