164 lines
6.1 KiB
TypeScript
164 lines
6.1 KiB
TypeScript
import type { Construct } from 'constructs';
|
|
import * as iam from '../../../aws-iam';
|
|
import type * as sns from '../../../aws-sns';
|
|
import * as sfn from '../../../aws-stepfunctions';
|
|
/**
|
|
* The data type set for the SNS message attributes
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html#SNSMessageAttributes.DataTypes
|
|
*/
|
|
export declare enum MessageAttributeDataType {
|
|
/**
|
|
* Strings are Unicode with UTF-8 binary encoding
|
|
*/
|
|
STRING = "String",
|
|
/**
|
|
* An array, formatted as a string
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html#SNSMessageAttributes.DataTypes
|
|
*/
|
|
STRING_ARRAY = "String.Array",
|
|
/**
|
|
* Numbers are positive or negative integers or floating-point numbers
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html#SNSMessageAttributes.DataTypes
|
|
*/
|
|
NUMBER = "Number",
|
|
/**
|
|
* Binary type attributes can store any binary data
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html#SNSMessageAttributes.DataTypes
|
|
*/
|
|
BINARY = "Binary"
|
|
}
|
|
/**
|
|
* A message attribute to add to the SNS message
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html
|
|
*/
|
|
export interface MessageAttribute {
|
|
/**
|
|
* The value of the attribute
|
|
*/
|
|
readonly value: any;
|
|
/**
|
|
* The data type for the attribute
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html#SNSMessageAttributes.DataTypes
|
|
* @default determined by type inspection if possible, fallback is String
|
|
*/
|
|
readonly dataType?: MessageAttributeDataType;
|
|
}
|
|
interface SnsPublishOptions {
|
|
/**
|
|
* The SNS topic that the task will publish to.
|
|
*/
|
|
readonly topic: sns.ITopic;
|
|
/**
|
|
* The message you want to send.
|
|
*
|
|
* With the exception of SMS, messages must be UTF-8 encoded strings and
|
|
* at most 256 KB in size.
|
|
* For SMS, each message can contain up to 140 characters.
|
|
*/
|
|
readonly message: sfn.TaskInput;
|
|
/**
|
|
* Add message attributes when publishing.
|
|
*
|
|
* These attributes carry additional metadata about the message and may be used
|
|
* for subscription filters.
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html
|
|
* @default {}
|
|
*/
|
|
readonly messageAttributes?: {
|
|
[key: string]: MessageAttribute;
|
|
};
|
|
/**
|
|
* Send different messages for each transport protocol.
|
|
*
|
|
* For example, you might want to send a shorter message to SMS subscribers
|
|
* and a more verbose message to email and SQS subscribers.
|
|
*
|
|
* Your message must be a JSON object with a top-level JSON key of
|
|
* "default" with a value that is a string
|
|
* You can define other top-level keys that define the message you want to
|
|
* send to a specific transport protocol (i.e. "sqs", "email", "http", etc)
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/api/API_Publish.html#API_Publish_RequestParameters
|
|
* @default false
|
|
*/
|
|
readonly messagePerSubscriptionType?: boolean;
|
|
/**
|
|
* Used as the "Subject" line when the message is delivered to email endpoints.
|
|
* This field will also be included, if present, in the standard JSON messages
|
|
* delivered to other endpoints.
|
|
*
|
|
* @default - No subject
|
|
*/
|
|
readonly subject?: string;
|
|
/**
|
|
* This parameter applies only to FIFO topics.
|
|
*
|
|
* The MessageGroupId is a tag that specifies that a message belongs to a specific message group.
|
|
* Messages that belong to the same message group are processed in a FIFO manner
|
|
* (however, messages in different message groups might be processed out of order).
|
|
* Every message must include a MessageGroupId.
|
|
*
|
|
* @default - Not used for standard topics, required for FIFO topics.
|
|
*/
|
|
readonly messageGroupId?: string;
|
|
/**
|
|
* This parameter applies only to FIFO topics.
|
|
*
|
|
* Every message must have a unique MessageDeduplicationId, which is a token used for deduplication of sent messages.
|
|
* If a message with a particular MessageDeduplicationId is sent successfully, any message sent with the same MessageDeduplicationId
|
|
* during the 5-minute deduplication interval is treated as a duplicate.
|
|
*
|
|
* If the topic has ContentBasedDeduplication set, the system generates a MessageDeduplicationId
|
|
* based on the contents of the message. Your MessageDeduplicationId overrides the generated one.
|
|
*
|
|
* @default - Not used for standard topics, required for FIFO topics with ContentBasedDeduplication disabled.
|
|
*/
|
|
readonly messageDeduplicationId?: string;
|
|
}
|
|
/**
|
|
* Properties for publishing a message to an SNS topic using JSONPath
|
|
*/
|
|
export interface SnsPublishJsonPathProps extends sfn.TaskStateJsonPathBaseProps, SnsPublishOptions {
|
|
}
|
|
/**
|
|
* Properties for publishing a message to an SNS topic using JSONata
|
|
*/
|
|
export interface SnsPublishJsonataProps extends sfn.TaskStateJsonataBaseProps, SnsPublishOptions {
|
|
}
|
|
/**
|
|
* Properties for publishing a message to an SNS topic
|
|
*/
|
|
export interface SnsPublishProps extends sfn.TaskStateBaseProps, SnsPublishOptions {
|
|
}
|
|
/**
|
|
* A Step Functions Task to publish messages to SNS topic.
|
|
*/
|
|
export declare class SnsPublish extends sfn.TaskStateBase {
|
|
private readonly props;
|
|
/**
|
|
* A Step Functions Task to publish messages to SNS topic using JSONPath.
|
|
*/
|
|
static jsonPath(scope: Construct, id: string, props: SnsPublishJsonPathProps): SnsPublish;
|
|
/**
|
|
* A Step Functions Task to publish messages to SNS topic using JSONata.
|
|
*/
|
|
static jsonata(scope: Construct, id: string, props: SnsPublishJsonataProps): SnsPublish;
|
|
private static readonly SUPPORTED_INTEGRATION_PATTERNS;
|
|
protected readonly taskMetrics: sfn.TaskMetricsConfig | undefined;
|
|
protected readonly taskPolicies: iam.PolicyStatement[] | undefined;
|
|
private readonly integrationPattern;
|
|
constructor(scope: Construct, id: string, props: SnsPublishProps);
|
|
/**
|
|
* @internal
|
|
*/
|
|
protected _renderTask(topLevelQueryLanguage?: sfn.QueryLanguage): any;
|
|
}
|
|
export {};
|