As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Habilitar o AWS WAF para uma aplicação do Amplify por meio do AWS CDK
É possível usar o AWS Cloud Development Kit (AWS CDK) para habilitar o AWS WAF para uma aplicação do Amplify. Para saber mais sobre o uso do CDK, consulte O que é o CDK? no Guia do desenvolvedor do AWS Cloud Development Kit (AWS CDK).
O exemplo de código de TypeScript a seguir demonstra como criar uma aplicação do AWS CDK com duas pilhas de CDK: uma para o Amplify e outra para o AWS WAF. Observe que a pilha do AWS WAF deve ser implantada na região Leste dos EUA (Norte da Virgínia) (us-east-1). A pilha de aplicações do Amplify pode ser implantada em uma região diferente. É necessário criar as ACLs da Web que você deseja associar à aplicação do Amplify na região global (CloudFront). Talvez já existam ACLs regionais da Web na sua Conta da AWS, mas elas não são compatíveis com o Amplify.
import * as cdk from "aws-cdk-lib"; import { Construct } from "constructs"; import * as wafv2 from "aws-cdk-lib/aws-wafv2"; import * as amplify from "aws-cdk-lib/aws-amplify"; interface WafStackProps extends cdk.StackProps { appArn: string; } export class AmplifyStack extends cdk.Stack { public readonly appArn: string; constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); const amplifyApp = new amplify.CfnApp(this, "AmplifyApp", { name: "MyApp", }); this.appArn = amplifyApp.attrArn; } } export class WAFStack extends cdk.Stack { constructor(scope: Construct, id: string, props: WafStackProps) { super(scope, id, props); const webAcl = new wafv2.CfnWebACL(this, "WebACL", { defaultAction: { allow: {} }, scope: "CLOUDFRONT", rules: [ // Add your own rules here. ], visibilityConfig: { cloudWatchMetricsEnabled: true, metricName: "my-metric-name", sampledRequestsEnabled: true, }, }); new wafv2.CfnWebACLAssociation(this, "WebACLAssociation", { resourceArn: props.appArn, webAclArn: webAcl.attrArn, }); } } const app = new cdk.App(); // Create AmplifyStack in your desired Region. const amplifyStack = new AmplifyStack(app, 'AmplifyStack', { env: { region: 'us-west-2' }, }); // Create WAFStack in IAD region, passing appArn from AmplifyStack. new WAFStack(app, 'WAFStack', { env: { region: 'us-east-1' }, crossRegionReferences: true, appArn: amplifyStack.appArn, // Pass appArn from AmplifyStack. });