-
Notifications
You must be signed in to change notification settings - Fork 17
/
awsstepfunctionstasks_SnsPublishProps.go
120 lines (117 loc) · 5.35 KB
/
awsstepfunctionstasks_SnsPublishProps.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package awsstepfunctionstasks
import (
"github.com/aws/aws-cdk-go/awscdk"
"github.com/aws/aws-cdk-go/awscdk/awssns"
"github.com/aws/aws-cdk-go/awscdk/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_14_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),
// })
//
// Experimental.
type SnsPublishProps struct {
// An optional description for this state.
// Experimental.
Comment *string `field:"optional" json:"comment" yaml:"comment"`
// Timeout for the heartbeat.
// Experimental.
Heartbeat awscdk.Duration `field:"optional" json:"heartbeat" yaml:"heartbeat"`
// 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 {}.
// Experimental.
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
//
// Experimental.
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 {}.
// Experimental.
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.
// Experimental.
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
//
// Experimental.
ResultSelector *map[string]interface{} `field:"optional" json:"resultSelector" yaml:"resultSelector"`
// Timeout for the state machine.
// Experimental.
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.
// Experimental.
Message awsstepfunctions.TaskInput `field:"required" json:"message" yaml:"message"`
// The SNS topic that the task will publish to.
// Experimental.
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
//
// Experimental.
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
//
// Experimental.
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.
// Experimental.
Subject *string `field:"optional" json:"subject" yaml:"subject"`
}