240 lines
8.5 KiB
TypeScript
240 lines
8.5 KiB
TypeScript
import type { IResolvable, IResolveContext } from '../../core';
|
|
/**
|
|
* An event pattern matcher
|
|
*/
|
|
export declare class Match implements IResolvable {
|
|
private readonly matchers;
|
|
private readonly options;
|
|
/**
|
|
* Matches a null value in the JSON of the event
|
|
*/
|
|
static nullValue(): string[];
|
|
/**
|
|
* Matches when the field is present in the JSON of the event
|
|
*/
|
|
static exists(): string[];
|
|
/**
|
|
* Matches when the field is absent from the JSON of the event
|
|
*/
|
|
static doesNotExist(): string[];
|
|
/**
|
|
* Matches a string, exactly, in the JSON of the event
|
|
*/
|
|
static exactString(value: string): string[];
|
|
/**
|
|
* Matches a string, regardless of case, in the JSON of the event
|
|
*/
|
|
static equalsIgnoreCase(value: string): string[];
|
|
/**
|
|
* Matches strings with the given prefix in the JSON of the event
|
|
*/
|
|
static prefix(value: string): string[];
|
|
/**
|
|
* Matches strings with the given suffix in the JSON of the event
|
|
*/
|
|
static suffix(value: string): string[];
|
|
/**
|
|
* Matches strings with the given prefix in the JSON of the event regardless of the casing
|
|
*/
|
|
static prefixEqualsIgnoreCase(value: string): string[];
|
|
/**
|
|
* Matches strings with the given suffix in the JSON of the event regardless of the casing
|
|
*/
|
|
static suffixEqualsIgnoreCase(value: string): string[];
|
|
/**
|
|
* Matches strings with the given wildcard pattern in the JSON of the event
|
|
*/
|
|
static wildcard(value: string): string[];
|
|
/**
|
|
* Matches IPv4 and IPv6 network addresses using the Classless Inter-Domain Routing (CIDR) format
|
|
*/
|
|
static cidr(range: string): string[];
|
|
/**
|
|
* Matches IPv4 and IPv6 network addresses using the Classless Inter-Domain Routing (CIDR) format.
|
|
* Alias of `cidr()`.
|
|
*/
|
|
static ipAddressRange(range: string): string[];
|
|
/**
|
|
* Matches anything except what's provided in the rule. The list of provided values must contain
|
|
* only strings or only numbers.
|
|
*/
|
|
static anythingBut(...values: any[]): string[];
|
|
/**
|
|
* Matches any string that doesn't start with the given prefix.
|
|
*/
|
|
static anythingButPrefix(...values: string[]): string[];
|
|
/**
|
|
* Matches any string that doesn't end with the given suffix.
|
|
*/
|
|
static anythingButSuffix(...values: string[]): string[];
|
|
/**
|
|
* Matches any string that doesn't match with the given wildcard pattern.
|
|
*/
|
|
static anythingButWildcard(...values: string[]): string[];
|
|
/**
|
|
* Matches any string that doesn't match with the given value regardless of character casing.
|
|
*/
|
|
static anythingButEqualsIgnoreCase(...values: string[]): string[];
|
|
/**
|
|
* Matches numbers greater than the provided value
|
|
*/
|
|
static greaterThan(value: number): string[];
|
|
/**
|
|
* Matches numbers greater than, or equal to, the provided value
|
|
*/
|
|
static greaterThanOrEqual(value: number): string[];
|
|
/**
|
|
* Matches numbers less than the provided value
|
|
*/
|
|
static lessThan(value: number): string[];
|
|
/**
|
|
* Matches numbers less than, or equal to, the provided value
|
|
*/
|
|
static lessThanOrEqual(value: number): string[];
|
|
/**
|
|
* Matches numbers equal to the provided value
|
|
*/
|
|
static equal(value: number): string[];
|
|
/**
|
|
* Matches numbers inside a closed numeric interval. Equivalent to:
|
|
*
|
|
* Match.allOf(Match.greaterThanOrEqual(lower), Match.lessThanOrEqual(upper))
|
|
*
|
|
* @param lower Lower bound (inclusive)
|
|
* @param upper Upper bound (inclusive)
|
|
*/
|
|
static interval(lower: number, upper: number): string[];
|
|
/**
|
|
* Matches an event if any of the provided matchers do. Only numeric matchers are accepted.
|
|
*/
|
|
static allOf(...matchers: any[]): string[];
|
|
/**
|
|
* Matches an event if any of the provided matchers does.
|
|
*/
|
|
static anyOf(...matchers: any[]): string[];
|
|
private static anythingButConjunction;
|
|
private static numeric;
|
|
private static fromMergedObjects;
|
|
readonly creationStack: string[];
|
|
private constructor();
|
|
resolve(context: IResolveContext): any;
|
|
private merge;
|
|
toString(): string;
|
|
/**
|
|
* A representation of this matcher as a list of strings
|
|
*/
|
|
asList(): string[];
|
|
}
|
|
/**
|
|
* Events in Amazon CloudWatch Events are represented as JSON objects. For more
|
|
* information about JSON objects, see RFC 7159.
|
|
*
|
|
* Rules use event patterns to select events and route them to targets. A
|
|
* pattern either matches an event or it doesn't. Event patterns are represented
|
|
* as JSON objects with a structure that is similar to that of events.
|
|
*
|
|
* It is important to remember the following about event pattern matching:
|
|
*
|
|
* - For a pattern to match an event, the event must contain all the field names
|
|
* listed in the pattern. The field names must appear in the event with the
|
|
* same nesting structure.
|
|
*
|
|
* - Other fields of the event not mentioned in the pattern are ignored;
|
|
* effectively, there is a ``"*": "*"`` wildcard for fields not mentioned.
|
|
*
|
|
* - The matching is exact (character-by-character), without case-folding or any
|
|
* other string normalization.
|
|
*
|
|
* - The values being matched follow JSON rules: Strings enclosed in quotes,
|
|
* numbers, and the unquoted keywords true, false, and null.
|
|
*
|
|
* - Number matching is at the string representation level. For example, 300,
|
|
* 300.0, and 3.0e2 are not considered equal.
|
|
*
|
|
* For custom events, some optional properties are required. For more information, see
|
|
* [Minimum information needed for a valid custom event](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events-structure.html#eb-custom-event).
|
|
*
|
|
* @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html
|
|
*/
|
|
export interface EventPattern {
|
|
/**
|
|
* By default, this is set to 0 (zero) in all events.
|
|
*
|
|
* @default - No filtering on version
|
|
*/
|
|
readonly version?: string[];
|
|
/**
|
|
* A unique value is generated for every event. This can be helpful in
|
|
* tracing events as they move through rules to targets, and are processed.
|
|
*
|
|
* @default - No filtering on id
|
|
*/
|
|
readonly id?: string[];
|
|
/**
|
|
* Identifies, in combination with the source field, the fields and values
|
|
* that appear in the detail field.
|
|
*
|
|
* Represents the "detail-type" event field.
|
|
*
|
|
* @default - No filtering on detail type
|
|
*/
|
|
readonly detailType?: string[];
|
|
/**
|
|
* Identifies the service that sourced the event. All events sourced from
|
|
* within AWS begin with "aws." Customer-generated events can have any value
|
|
* here, as long as it doesn't begin with "aws." We recommend the use of
|
|
* Java package-name style reverse domain-name strings.
|
|
*
|
|
* To find the correct value for source for an AWS service, see the table in
|
|
* AWS Service Namespaces. For example, the source value for Amazon
|
|
* CloudFront is aws.cloudfront.
|
|
*
|
|
* @see https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces
|
|
* @default - No filtering on source
|
|
*/
|
|
readonly source?: string[];
|
|
/**
|
|
* The 12-digit number identifying an AWS account.
|
|
*
|
|
* @default - No filtering on account
|
|
*/
|
|
readonly account?: string[];
|
|
/**
|
|
* The event timestamp, which can be specified by the service originating
|
|
* the event. If the event spans a time interval, the service might choose
|
|
* to report the start time, so this value can be noticeably before the time
|
|
* the event is actually received.
|
|
*
|
|
* @default - No filtering on time
|
|
*/
|
|
readonly time?: string[];
|
|
/**
|
|
* Identifies the AWS region where the event originated.
|
|
*
|
|
* @default - No filtering on region
|
|
*/
|
|
readonly region?: string[];
|
|
/**
|
|
* This JSON array contains ARNs that identify resources that are involved
|
|
* in the event. Inclusion of these ARNs is at the discretion of the
|
|
* service.
|
|
*
|
|
* For example, Amazon EC2 instance state-changes include Amazon EC2
|
|
* instance ARNs, Auto Scaling events include ARNs for both instances and
|
|
* Auto Scaling groups, but API calls with AWS CloudTrail do not include
|
|
* resource ARNs.
|
|
*
|
|
* @default - No filtering on resource
|
|
*/
|
|
readonly resources?: string[];
|
|
/**
|
|
* A JSON object, whose content is at the discretion of the service
|
|
* originating the event.
|
|
*
|
|
* @default - No filtering on detail
|
|
*/
|
|
readonly detail?: {
|
|
[key: string]: any;
|
|
};
|
|
}
|