package awsstepfunctionstasks import ( "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/aws-cdk-go/awscdk/v2/awssns" "github.com/aws/aws-cdk-go/awscdk/v2/awsstepfunctions" ) // Properties for publishing a message to an SNS topic. // // Example: // convertToSeconds := tasks.NewEvaluateExpression(this, jsii.String("Convert to seconds"), &EvaluateExpressionProps{ // Expression: jsii.String("$.waitMilliseconds / 1000"), // ResultPath: jsii.String("$.waitSeconds"), // }) // // createMessage := tasks.NewEvaluateExpression(this, jsii.String("Create message"), &EvaluateExpressionProps{ // // Note: this is a string inside a string. // Expression: jsii.String("`Now waiting ${$.waitSeconds} seconds...`"), // Runtime: lambda.Runtime_NODEJS_16_X(), // ResultPath: jsii.String("$.message"), // }) // // publishMessage := tasks.NewSnsPublish(this, jsii.String("Publish message"), &SnsPublishProps{ // Topic: sns.NewTopic(this, jsii.String("cool-topic")), // Message: sfn.TaskInput_FromJsonPathAt(jsii.String("$.message")), // ResultPath: jsii.String("$.sns"), // }) // // wait := sfn.NewWait(this, jsii.String("Wait"), &WaitProps{ // Time: sfn.WaitTime_SecondsPath(jsii.String("$.waitSeconds")), // }) // // sfn.NewStateMachine(this, jsii.String("StateMachine"), &StateMachineProps{ // Definition: convertToSeconds.Next(createMessage).Next(publishMessage).*Next(wait), // }) // type SnsPublishProps struct { // An optional description for this state. Comment *string `field:"optional" json:"comment" yaml:"comment"` // Credentials for an IAM Role that the State Machine assumes for executing the task. // // This enables cross-account resource invocations. // See: https://docs.aws.amazon.com/step-functions/latest/dg/concepts-access-cross-acct-resources.html // Credentials *awsstepfunctions.Credentials `field:"optional" json:"credentials" yaml:"credentials"` // Timeout for the heartbeat. // Deprecated: use `heartbeatTimeout`. Heartbeat awscdk.Duration `field:"optional" json:"heartbeat" yaml:"heartbeat"` // Timeout for the heartbeat. // // [disable-awslint:duration-prop-type] is needed because all props interface in // aws-stepfunctions-tasks extend this interface. HeartbeatTimeout awsstepfunctions.Timeout `field:"optional" json:"heartbeatTimeout" yaml:"heartbeatTimeout"` // JSONPath expression to select part of the state to be the input to this state. // // May also be the special value JsonPath.DISCARD, which will cause the effective // input to be the empty object {}. InputPath *string `field:"optional" json:"inputPath" yaml:"inputPath"` // AWS Step Functions integrates with services directly in the Amazon States Language. // // You can control these AWS services using service integration patterns. // See: https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-wait-token // IntegrationPattern awsstepfunctions.IntegrationPattern `field:"optional" json:"integrationPattern" yaml:"integrationPattern"` // JSONPath expression to select select a portion of the state output to pass to the next state. // // May also be the special value JsonPath.DISCARD, which will cause the effective // output to be the empty object {}. OutputPath *string `field:"optional" json:"outputPath" yaml:"outputPath"` // JSONPath expression to indicate where to inject the state's output. // // May also be the special value JsonPath.DISCARD, which will cause the state's // input to become its output. ResultPath *string `field:"optional" json:"resultPath" yaml:"resultPath"` // The JSON that will replace the state's raw result and become the effective result before ResultPath is applied. // // You can use ResultSelector to create a payload with values that are static // or selected from the state's raw result. // See: https://docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html#input-output-resultselector // ResultSelector *map[string]interface{} `field:"optional" json:"resultSelector" yaml:"resultSelector"` // Timeout for the task. // // [disable-awslint:duration-prop-type] is needed because all props interface in // aws-stepfunctions-tasks extend this interface. TaskTimeout awsstepfunctions.Timeout `field:"optional" json:"taskTimeout" yaml:"taskTimeout"` // Timeout for the task. // Deprecated: use `taskTimeout`. Timeout awscdk.Duration `field:"optional" json:"timeout" yaml:"timeout"` // 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. Message awsstepfunctions.TaskInput `field:"required" json:"message" yaml:"message"` // The SNS topic that the task will publish to. Topic awssns.ITopic `field:"required" json:"topic" yaml:"topic"` // 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 // MessageAttributes *map[string]*MessageAttribute `field:"optional" json:"messageAttributes" yaml:"messageAttributes"` // 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 // MessagePerSubscriptionType *bool `field:"optional" json:"messagePerSubscriptionType" yaml:"messagePerSubscriptionType"` // 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. Subject *string `field:"optional" json:"subject" yaml:"subject"` }