typed-aws
Version:
Helps you write AWS CloudFormation in TypeScript
858 lines (857 loc) • 36.8 kB
TypeScript
import { CfnResource, Resolvable } from '../../base';
export declare type WebACL_Type = 'AWS::WAFv2::WebACL';
export declare const WebACL_Type = "AWS::WAFv2::WebACL";
/**
* Contains the Rules that identify the requests that you want to allow,
* block, or count. In a WebACL, you also specify a default action (ALLOW
* or BLOCK), and the action for each Rule that you add to a WebACL, for
* example, block requests from specified IP addresses or block requests
* from specified referrers. You also associate the WebACL with a
* CloudFront distribution to identify the requests that you want AWS WAF
* to filter. If you add more than one Rule to a WebACL, a request needs
* to match only one of the specifications to be allowed, blocked, or
* counted. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html}
*/
export default function WebACL(props: WebACL_Properties): CfnResource<WebACL_Properties>;
/**
* Contains the Rules that identify the requests that you want to allow,
* block, or count. In a WebACL, you also specify a default action (ALLOW
* or BLOCK), and the action for each Rule that you add to a WebACL, for
* example, block requests from specified IP addresses or block requests
* from specified referrers. You also associate the WebACL with a
* CloudFront distribution to identify the requests that you want AWS WAF
* to filter. If you add more than one Rule to a WebACL, a request needs
* to match only one of the specifications to be allowed, blocked, or
* counted. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html}
*/
export declare type WebACL_Properties = {
Arn?: ResourceArn;
Capacity?: Resolvable<number>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-defaultaction}
*/
DefaultAction: DefaultAction;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-description}
*/
Description?: EntityDescription;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-name}
*/
Name?: EntityName;
Id?: EntityId;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-scope}
*/
Scope: Scope;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-rules}
*/
Rules?: Rule[];
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-visibilityconfig}
*/
VisibilityConfig: VisibilityConfig;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-tags}
*/
Tags?: Tag[];
LabelNamespace?: LabelName;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-customresponsebodies}
*/
CustomResponseBodies?: CustomResponseBodies;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-andstatement.html}
*/
export declare type AndStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-andstatement.html#cfn-wafv2-webacl-andstatement-statements}
*/
Statements: Statement[];
};
export declare type Body = {
[k: string]: unknown;
};
/**
* Byte Match statement. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html}
*/
export declare type ByteMatchStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html#cfn-wafv2-webacl-bytematchstatement-searchstring}
*/
SearchString?: SearchString;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html#cfn-wafv2-webacl-bytematchstatement-searchstringbase64}
*/
SearchStringBase64?: SearchStringBase64;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html#cfn-wafv2-webacl-bytematchstatement-fieldtomatch}
*/
FieldToMatch: FieldToMatch;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html#cfn-wafv2-webacl-bytematchstatement-texttransformations}
*/
TextTransformations: TextTransformation[];
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html#cfn-wafv2-webacl-bytematchstatement-positionalconstraint}
*/
PositionalConstraint: PositionalConstraint;
};
/**
* Default Action WebACL will take against ingress traffic when there is
* no matching Rule. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-defaultaction.html}
*/
export declare type DefaultAction = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-defaultaction.html#cfn-wafv2-webacl-defaultaction-allow}
*/
Allow?: AllowAction;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-defaultaction.html#cfn-wafv2-webacl-defaultaction-block}
*/
Block?: BlockAction;
};
export declare type EntityDescription = Resolvable<string>;
export declare type EntityName = Resolvable<string>;
/**
* Excluded Rule in the RuleGroup or ManagedRuleGroup will not be
* evaluated. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-excludedrule.html}
*/
export declare type ExcludedRule = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-excludedrule.html#cfn-wafv2-webacl-excludedrule-name}
*/
Name: EntityName;
};
export declare type ExcludedRules = ExcludedRule[];
/**
* Field of the request to match. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html}
*/
export declare type FieldToMatch = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-singleheader}
*/
SingleHeader?: {
Name: Resolvable<string>;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-singlequeryargument}
*/
SingleQueryArgument?: {
Name: Resolvable<string>;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-allqueryarguments}
*/
AllQueryArguments?: {
[k: string]: unknown;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-uripath}
*/
UriPath?: {
[k: string]: unknown;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-querystring}
*/
QueryString?: {
[k: string]: unknown;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-body}
*/
Body?: {
[k: string]: unknown;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-method}
*/
Method?: {
[k: string]: unknown;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-jsonbody}
*/
JsonBody?: JsonBody;
};
/**
* Inspect the request body as JSON. The request body immediately follows
* the request headers. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-jsonbody.html}
*/
export declare type JsonBody = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-jsonbody.html#cfn-wafv2-webacl-jsonbody-matchpattern}
*/
MatchPattern: JsonMatchPattern;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-jsonbody.html#cfn-wafv2-webacl-jsonbody-matchscope}
*/
MatchScope: JsonMatchScope;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-jsonbody.html#cfn-wafv2-webacl-jsonbody-invalidfallbackbehavior}
*/
InvalidFallbackBehavior?: BodyParsingFallbackBehavior;
};
export declare type BodyParsingFallbackBehavior = Resolvable<'MATCH' | 'NO_MATCH' | 'EVALUATE_AS_STRING'>;
export declare type JsonMatchScope = Resolvable<'ALL' | 'KEY' | 'VALUE'>;
/**
* The pattern to look for in the JSON body. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-jsonmatchpattern.html}
*/
export declare type JsonMatchPattern = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-jsonmatchpattern.html#cfn-wafv2-webacl-jsonmatchpattern-all}
*/
All?: {
[k: string]: unknown;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-jsonmatchpattern.html#cfn-wafv2-webacl-jsonmatchpattern-includedpaths}
*/
IncludedPaths?: JsonPointerPath[];
};
export declare type JsonPointerPath = Resolvable<string>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-geomatchstatement.html}
*/
export declare type GeoMatchStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-geomatchstatement.html#cfn-wafv2-webacl-geomatchstatement-countrycodes}
*/
CountryCodes?: Resolvable<string>[];
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-geomatchstatement.html#cfn-wafv2-webacl-geomatchstatement-forwardedipconfig}
*/
ForwardedIPConfig?: ForwardedIPConfiguration;
};
export declare type EntityId = Resolvable<string>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetreferencestatement.html}
*/
export declare type IPSetReferenceStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetreferencestatement.html#cfn-wafv2-webacl-ipsetreferencestatement-arn}
*/
Arn: ResourceArn;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetreferencestatement.html#cfn-wafv2-webacl-ipsetreferencestatement-ipsetforwardedipconfig}
*/
IPSetForwardedIPConfig?: IPSetForwardedIPConfiguration;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html}
*/
export declare type ManagedRuleGroupStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html#cfn-wafv2-webacl-managedrulegroupstatement-name}
*/
Name: EntityName;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html#cfn-wafv2-webacl-managedrulegroupstatement-vendorname}
*/
VendorName: Resolvable<string>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html#cfn-wafv2-webacl-managedrulegroupstatement-version}
*/
Version?: Resolvable<string>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html#cfn-wafv2-webacl-managedrulegroupstatement-excludedrules}
*/
ExcludedRules?: ExcludedRule[];
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html#cfn-wafv2-webacl-managedrulegroupstatement-scopedownstatement}
*/
ScopeDownStatement?: Statement;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-notstatement.html}
*/
export declare type NotStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-notstatement.html#cfn-wafv2-webacl-notstatement-statement}
*/
Statement: Statement;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-orstatement.html}
*/
export declare type OrStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-orstatement.html#cfn-wafv2-webacl-orstatement-statements}
*/
Statements: Statement[];
};
/**
* Override a RuleGroup or ManagedRuleGroup behavior. This can only be
* applied to Rule that has RuleGroupReferenceStatement or
* ManagedRuleGroupReferenceStatement. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-overrideaction.html}
*/
export declare type OverrideAction = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-overrideaction.html#cfn-wafv2-webacl-overrideaction-count}
*/
Count?: {
[k: string]: unknown;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-overrideaction.html#cfn-wafv2-webacl-overrideaction-none}
*/
None?: {
[k: string]: unknown;
};
};
export declare type PositionalConstraint = Resolvable<'EXACTLY' | 'STARTS_WITH' | 'ENDS_WITH' | 'CONTAINS' | 'CONTAINS_WORD'>;
export declare type QueryString = {
[k: string]: unknown;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatement.html}
*/
export declare type RateBasedStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatement.html#cfn-wafv2-webacl-ratebasedstatement-limit}
*/
Limit: RateLimit;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatement.html#cfn-wafv2-webacl-ratebasedstatement-aggregatekeytype}
*/
AggregateKeyType: Resolvable<'IP' | 'FORWARDED_IP'>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatement.html#cfn-wafv2-webacl-ratebasedstatement-scopedownstatement}
*/
ScopeDownStatement?: Statement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatement.html#cfn-wafv2-webacl-ratebasedstatement-forwardedipconfig}
*/
ForwardedIPConfig?: ForwardedIPConfiguration;
};
export declare type RateLimit = Resolvable<number>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regexpatternsetreferencestatement.html}
*/
export declare type RegexPatternSetReferenceStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regexpatternsetreferencestatement.html#cfn-wafv2-webacl-regexpatternsetreferencestatement-arn}
*/
Arn: ResourceArn;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regexpatternsetreferencestatement.html#cfn-wafv2-webacl-regexpatternsetreferencestatement-fieldtomatch}
*/
FieldToMatch: FieldToMatch;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regexpatternsetreferencestatement.html#cfn-wafv2-webacl-regexpatternsetreferencestatement-texttransformations}
*/
TextTransformations: TextTransformation[];
};
export declare type ResourceArn = Resolvable<string>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-forwardedipconfiguration.html}
*/
export declare type ForwardedIPConfiguration = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-forwardedipconfiguration.html#cfn-wafv2-webacl-forwardedipconfiguration-headername}
*/
HeaderName: Resolvable<string>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-forwardedipconfiguration.html#cfn-wafv2-webacl-forwardedipconfiguration-fallbackbehavior}
*/
FallbackBehavior: Resolvable<'MATCH' | 'NO_MATCH'>;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetforwardedipconfiguration.html}
*/
export declare type IPSetForwardedIPConfiguration = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetforwardedipconfiguration.html#cfn-wafv2-webacl-ipsetforwardedipconfiguration-headername}
*/
HeaderName: Resolvable<string>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetforwardedipconfiguration.html#cfn-wafv2-webacl-ipsetforwardedipconfiguration-fallbackbehavior}
*/
FallbackBehavior: Resolvable<'MATCH' | 'NO_MATCH'>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetforwardedipconfiguration.html#cfn-wafv2-webacl-ipsetforwardedipconfiguration-position}
*/
Position: Resolvable<'FIRST' | 'LAST' | 'ANY'>;
};
/**
* Rule of WebACL that contains condition and action. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html}
*/
export declare type Rule = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-name}
*/
Name: EntityName;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-priority}
*/
Priority: RulePriority;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-statement}
*/
Statement: Statement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-action}
*/
Action?: RuleAction;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-overrideaction}
*/
OverrideAction?: OverrideAction;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-rulelabels}
*/
RuleLabels?: Label[];
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-visibilityconfig}
*/
VisibilityConfig: VisibilityConfig;
};
export declare type Rules = Rule[];
/**
* Action taken when Rule matches its condition. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ruleaction.html}
*/
export declare type RuleAction = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ruleaction.html#cfn-wafv2-webacl-ruleaction-allow}
*/
Allow?: AllowAction;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ruleaction.html#cfn-wafv2-webacl-ruleaction-block}
*/
Block?: BlockAction;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ruleaction.html#cfn-wafv2-webacl-ruleaction-count}
*/
Count?: CountAction;
};
/**
* Allow traffic towards application. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-allowaction.html}
*/
export declare type AllowAction = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-allowaction.html#cfn-wafv2-webacl-allowaction-customrequesthandling}
*/
CustomRequestHandling?: CustomRequestHandling;
};
/**
* Allow traffic towards application. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-countaction.html}
*/
export declare type CountAction = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-countaction.html#cfn-wafv2-webacl-countaction-customrequesthandling}
*/
CustomRequestHandling?: CustomRequestHandling;
};
/**
* Block traffic towards application. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-blockaction.html}
*/
export declare type BlockAction = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-blockaction.html#cfn-wafv2-webacl-blockaction-customresponse}
*/
CustomResponse?: CustomResponse;
};
export declare type CustomHTTPHeaderName = Resolvable<string>;
export declare type CustomHTTPHeaderValue = Resolvable<string>;
/**
* HTTP header. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customhttpheader.html}
*/
export declare type CustomHTTPHeader = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customhttpheader.html#cfn-wafv2-webacl-customhttpheader-name}
*/
Name: CustomHTTPHeaderName;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customhttpheader.html#cfn-wafv2-webacl-customhttpheader-value}
*/
Value: CustomHTTPHeaderValue;
};
/**
* Custom request handling. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customrequesthandling.html}
*/
export declare type CustomRequestHandling = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customrequesthandling.html#cfn-wafv2-webacl-customrequesthandling-insertheaders}
*/
InsertHeaders: CustomHTTPHeader[];
};
export declare type ResponseStatusCode = Resolvable<number>;
export declare type ResponseContentType = Resolvable<'TEXT_PLAIN' | 'TEXT_HTML' | 'APPLICATION_JSON'>;
export declare type ResponseContent = Resolvable<string>;
/**
* Custom response body. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customresponsebody.html}
*/
export declare type CustomResponseBody = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customresponsebody.html#cfn-wafv2-webacl-customresponsebody-contenttype}
*/
ContentType: ResponseContentType;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customresponsebody.html#cfn-wafv2-webacl-customresponsebody-content}
*/
Content: ResponseContent;
};
/**
* Custom response. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customresponse.html}
*/
export declare type CustomResponse = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customresponse.html#cfn-wafv2-webacl-customresponse-responsecode}
*/
ResponseCode: ResponseStatusCode;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customresponse.html#cfn-wafv2-webacl-customresponse-customresponsebodykey}
*/
CustomResponseBodyKey?: Resolvable<string>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customresponse.html#cfn-wafv2-webacl-customresponse-responseheaders}
*/
ResponseHeaders?: CustomHTTPHeader[];
};
export declare type CustomResponseBodies = {
[k: string]: CustomResponseBody;
};
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rulegroupreferencestatement.html}
*/
export declare type RuleGroupReferenceStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rulegroupreferencestatement.html#cfn-wafv2-webacl-rulegroupreferencestatement-arn}
*/
Arn: ResourceArn;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rulegroupreferencestatement.html#cfn-wafv2-webacl-rulegroupreferencestatement-excludedrules}
*/
ExcludedRules?: ExcludedRule[];
};
export declare type RulePriority = Resolvable<number>;
export declare type Scope = Resolvable<'CLOUDFRONT' | 'REGIONAL'>;
export declare type SearchString = Resolvable<string>;
export declare type SearchStringBase64 = Resolvable<string>;
export declare type SingleHeader = {
Name?: Resolvable<string>;
};
export declare type SingleQueryArgument = {
Name?: Resolvable<string>;
};
/**
* Size Constraint statement. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html}
*/
export declare type SizeConstraintStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html#cfn-wafv2-webacl-sizeconstraintstatement-fieldtomatch}
*/
FieldToMatch: FieldToMatch;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html#cfn-wafv2-webacl-sizeconstraintstatement-comparisonoperator}
*/
ComparisonOperator: Resolvable<'EQ' | 'NE' | 'LE' | 'LT' | 'GE' | 'GT'>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html#cfn-wafv2-webacl-sizeconstraintstatement-size}
*/
Size: Resolvable<number>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html#cfn-wafv2-webacl-sizeconstraintstatement-texttransformations}
*/
TextTransformations: TextTransformation[];
};
/**
* Sqli Match Statement. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sqlimatchstatement.html}
*/
export declare type SqliMatchStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sqlimatchstatement.html#cfn-wafv2-webacl-sqlimatchstatement-fieldtomatch}
*/
FieldToMatch: FieldToMatch;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sqlimatchstatement.html#cfn-wafv2-webacl-sqlimatchstatement-texttransformations}
*/
TextTransformations: TextTransformation[];
};
/**
* First level statement that contains conditions, such as ByteMatch,
* SizeConstraint, etc {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html}
*/
export declare type Statement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-bytematchstatement}
*/
ByteMatchStatement?: ByteMatchStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-sqlimatchstatement}
*/
SqliMatchStatement?: SqliMatchStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-xssmatchstatement}
*/
XssMatchStatement?: XssMatchStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-sizeconstraintstatement}
*/
SizeConstraintStatement?: SizeConstraintStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-geomatchstatement}
*/
GeoMatchStatement?: GeoMatchStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-rulegroupreferencestatement}
*/
RuleGroupReferenceStatement?: RuleGroupReferenceStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-ipsetreferencestatement}
*/
IPSetReferenceStatement?: IPSetReferenceStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-regexpatternsetreferencestatement}
*/
RegexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-managedrulegroupstatement}
*/
ManagedRuleGroupStatement?: ManagedRuleGroupStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-ratebasedstatement}
*/
RateBasedStatement?: RateBasedStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-andstatement}
*/
AndStatement?: AndStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-orstatement}
*/
OrStatement?: OrStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-notstatement}
*/
NotStatement?: NotStatement;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-labelmatchstatement}
*/
LabelMatchStatement?: LabelMatchStatement;
};
export declare type Tag = {
Key?: Resolvable<string>;
Value?: Resolvable<string>;
};
/**
* Text Transformation on the Search String before match. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-texttransformation.html}
*/
export declare type TextTransformation = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-texttransformation.html#cfn-wafv2-webacl-texttransformation-priority}
*/
Priority: TextTransformationPriority;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-texttransformation.html#cfn-wafv2-webacl-texttransformation-type}
*/
Type: TextTransformationType;
};
export declare type TextTransformationPriority = Resolvable<number>;
export declare type TextTransformationType = Resolvable<'NONE' | 'COMPRESS_WHITE_SPACE' | 'HTML_ENTITY_DECODE' | 'LOWERCASE' | 'CMD_LINE' | 'URL_DECODE' | 'BASE64_DECODE' | 'HEX_DECODE' | 'MD5' | 'REPLACE_COMMENTS' | 'ESCAPE_SEQ_DECODE' | 'SQL_HEX_DECODE' | 'CSS_DECODE' | 'JS_DECODE' | 'NORMALIZE_PATH' | 'NORMALIZE_PATH_WIN' | 'REMOVE_NULLS' | 'REPLACE_NULLS' | 'BASE64_DECODE_EXT' | 'URL_DECODE_UNI' | 'UTF8_TO_UNICODE'>;
export declare type UriPath = {
[k: string]: unknown;
};
/**
* Visibility Metric of the WebACL. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html}
*/
export declare type VisibilityConfig = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html#cfn-wafv2-webacl-visibilityconfig-sampledrequestsenabled}
*/
SampledRequestsEnabled: Resolvable<boolean>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html#cfn-wafv2-webacl-visibilityconfig-cloudwatchmetricsenabled}
*/
CloudWatchMetricsEnabled: Resolvable<boolean>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html#cfn-wafv2-webacl-visibilityconfig-metricname}
*/
MetricName: Resolvable<string>;
};
/**
* Xss Match Statement. {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-xssmatchstatement.html}
*/
export declare type XssMatchStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-xssmatchstatement.html#cfn-wafv2-webacl-xssmatchstatement-fieldtomatch}
*/
FieldToMatch: FieldToMatch;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-xssmatchstatement.html#cfn-wafv2-webacl-xssmatchstatement-texttransformations}
*/
TextTransformations: TextTransformation[];
};
export declare type LabelName = Resolvable<string>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-label.html}
*/
export declare type Label = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-label.html#cfn-wafv2-webacl-label-name}
*/
Name: LabelName;
};
export declare type LabelMatchKey = Resolvable<string>;
export declare type LabelMatchScope = Resolvable<'LABEL' | 'NAMESPACE'>;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-labelmatchstatement.html}
*/
export declare type LabelMatchStatement = {
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-labelmatchstatement.html#cfn-wafv2-webacl-labelmatchstatement-scope}
*/
Scope: LabelMatchScope;
/**
* {@link
* http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-labelmatchstatement.html#cfn-wafv2-webacl-labelmatchstatement-key}
*/
Key: LabelMatchKey;
};