Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Habilitación de AWS WAF para una aplicación de Amplify en el AWS CDK
Puede usar el AWS Cloud Development Kit (AWS CDK) para habilitar AWS WAF para una aplicación de Amplify. Para obtener más información sobre el CDK, consulte ¿Qué es el CDK? en la Guía para desarrolladores de AWS Cloud Development Kit (AWS CDK).
En el siguiente ejemplo de código de TypeScript se muestra cómo crear una aplicación AWS CDK con dos pilas de CDK: una para Amplify y otra para AWS WAF. Tenga en cuenta que la pila de AWS WAF debe desplegarse en la región Este de EE. UU. (Norte de Virginia). La pila de la aplicación de Amplify se puede implementar en una región diferente. Debe crear la ACL web que desee asociar a una aplicación de Amplify en la región global (CloudFront). Es posible que ya existan ACL web regionales en su Cuenta de AWS, pero no son compatibles con 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. });