-
Notifications
You must be signed in to change notification settings - Fork 623
/
api_op_CreateEventSourceMapping.go
321 lines (264 loc) · 10.6 KB
/
api_op_CreateEventSourceMapping.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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
package lambda
import (
"context"
"time"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/internal/awsutil"
"github.com/aws/aws-sdk-go-v2/private/protocol"
)
type CreateEventSourceMappingInput struct {
_ struct{} `type:"structure"`
// The maximum number of items to retrieve in a single batch.
//
// * Amazon Kinesis - Default 100. Max 10,000.
//
// * Amazon DynamoDB Streams - Default 100. Max 1,000.
//
// * Amazon Simple Queue Service - Default 10. Max 10.
BatchSize *int64 `min:"1" type:"integer"`
// Disables the event source mapping to pause polling and invocation.
Enabled *bool `type:"boolean"`
// The Amazon Resource Name (ARN) of the event source.
//
// * Amazon Kinesis - The ARN of the data stream or a stream consumer.
//
// * Amazon DynamoDB Streams - The ARN of the stream.
//
// * Amazon Simple Queue Service - The ARN of the queue.
//
// EventSourceArn is a required field
EventSourceArn *string `type:"string" required:"true"`
// The name of the Lambda function.
//
// Name formats
//
// * Function name - MyFunction.
//
// * Function ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction.
//
// * Version or Alias ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction:PROD.
//
// * Partial ARN - 123456789012:function:MyFunction.
//
// The length constraint applies only to the full ARN. If you specify only the
// function name, it's limited to 64 characters in length.
//
// FunctionName is a required field
FunctionName *string `min:"1" type:"string" required:"true"`
MaximumBatchingWindowInSeconds *int64 `type:"integer"`
// The position in a stream from which to start reading. Required for Amazon
// Kinesis and Amazon DynamoDB Streams sources. AT_TIMESTAMP is only supported
// for Amazon Kinesis streams.
StartingPosition EventSourcePosition `type:"string" enum:"true"`
// With StartingPosition set to AT_TIMESTAMP, the time from which to start reading.
StartingPositionTimestamp *time.Time `type:"timestamp"`
}
// String returns the string representation
func (s CreateEventSourceMappingInput) String() string {
return awsutil.Prettify(s)
}
// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateEventSourceMappingInput) Validate() error {
invalidParams := aws.ErrInvalidParams{Context: "CreateEventSourceMappingInput"}
if s.BatchSize != nil && *s.BatchSize < 1 {
invalidParams.Add(aws.NewErrParamMinValue("BatchSize", 1))
}
if s.EventSourceArn == nil {
invalidParams.Add(aws.NewErrParamRequired("EventSourceArn"))
}
if s.FunctionName == nil {
invalidParams.Add(aws.NewErrParamRequired("FunctionName"))
}
if s.FunctionName != nil && len(*s.FunctionName) < 1 {
invalidParams.Add(aws.NewErrParamMinLen("FunctionName", 1))
}
if invalidParams.Len() > 0 {
return invalidParams
}
return nil
}
// MarshalFields encodes the AWS API shape using the passed in protocol encoder.
func (s CreateEventSourceMappingInput) MarshalFields(e protocol.FieldEncoder) error {
e.SetValue(protocol.HeaderTarget, "Content-Type", protocol.StringValue("application/json"), protocol.Metadata{})
if s.BatchSize != nil {
v := *s.BatchSize
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "BatchSize", protocol.Int64Value(v), metadata)
}
if s.Enabled != nil {
v := *s.Enabled
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "Enabled", protocol.BoolValue(v), metadata)
}
if s.EventSourceArn != nil {
v := *s.EventSourceArn
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "EventSourceArn", protocol.QuotedValue{ValueMarshaler: protocol.StringValue(v)}, metadata)
}
if s.FunctionName != nil {
v := *s.FunctionName
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "FunctionName", protocol.QuotedValue{ValueMarshaler: protocol.StringValue(v)}, metadata)
}
if s.MaximumBatchingWindowInSeconds != nil {
v := *s.MaximumBatchingWindowInSeconds
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "MaximumBatchingWindowInSeconds", protocol.Int64Value(v), metadata)
}
if len(s.StartingPosition) > 0 {
v := s.StartingPosition
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "StartingPosition", protocol.QuotedValue{ValueMarshaler: v}, metadata)
}
if s.StartingPositionTimestamp != nil {
v := *s.StartingPositionTimestamp
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "StartingPositionTimestamp",
protocol.TimeValue{V: v, Format: protocol.UnixTimeFormatName, QuotedFormatTime: true}, metadata)
}
return nil
}
// A mapping between an AWS resource and an AWS Lambda function. See CreateEventSourceMapping
// for details.
type CreateEventSourceMappingOutput struct {
_ struct{} `type:"structure"`
// The maximum number of items to retrieve in a single batch.
BatchSize *int64 `min:"1" type:"integer"`
// The Amazon Resource Name (ARN) of the event source.
EventSourceArn *string `type:"string"`
// The ARN of the Lambda function.
FunctionArn *string `type:"string"`
// The date that the event source mapping was last updated.
LastModified *time.Time `type:"timestamp"`
// The result of the last AWS Lambda invocation of your Lambda function.
LastProcessingResult *string `type:"string"`
MaximumBatchingWindowInSeconds *int64 `type:"integer"`
// The state of the event source mapping. It can be one of the following: Creating,
// Enabling, Enabled, Disabling, Disabled, Updating, or Deleting.
State *string `type:"string"`
// The cause of the last state change, either User initiated or Lambda initiated.
StateTransitionReason *string `type:"string"`
// The identifier of the event source mapping.
UUID *string `type:"string"`
}
// String returns the string representation
func (s CreateEventSourceMappingOutput) String() string {
return awsutil.Prettify(s)
}
// MarshalFields encodes the AWS API shape using the passed in protocol encoder.
func (s CreateEventSourceMappingOutput) MarshalFields(e protocol.FieldEncoder) error {
if s.BatchSize != nil {
v := *s.BatchSize
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "BatchSize", protocol.Int64Value(v), metadata)
}
if s.EventSourceArn != nil {
v := *s.EventSourceArn
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "EventSourceArn", protocol.QuotedValue{ValueMarshaler: protocol.StringValue(v)}, metadata)
}
if s.FunctionArn != nil {
v := *s.FunctionArn
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "FunctionArn", protocol.QuotedValue{ValueMarshaler: protocol.StringValue(v)}, metadata)
}
if s.LastModified != nil {
v := *s.LastModified
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "LastModified",
protocol.TimeValue{V: v, Format: protocol.UnixTimeFormatName, QuotedFormatTime: true}, metadata)
}
if s.LastProcessingResult != nil {
v := *s.LastProcessingResult
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "LastProcessingResult", protocol.QuotedValue{ValueMarshaler: protocol.StringValue(v)}, metadata)
}
if s.MaximumBatchingWindowInSeconds != nil {
v := *s.MaximumBatchingWindowInSeconds
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "MaximumBatchingWindowInSeconds", protocol.Int64Value(v), metadata)
}
if s.State != nil {
v := *s.State
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "State", protocol.QuotedValue{ValueMarshaler: protocol.StringValue(v)}, metadata)
}
if s.StateTransitionReason != nil {
v := *s.StateTransitionReason
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "StateTransitionReason", protocol.QuotedValue{ValueMarshaler: protocol.StringValue(v)}, metadata)
}
if s.UUID != nil {
v := *s.UUID
metadata := protocol.Metadata{}
e.SetValue(protocol.BodyTarget, "UUID", protocol.QuotedValue{ValueMarshaler: protocol.StringValue(v)}, metadata)
}
return nil
}
const opCreateEventSourceMapping = "CreateEventSourceMapping"
// CreateEventSourceMappingRequest returns a request value for making API operation for
// AWS Lambda.
//
// Creates a mapping between an event source and an AWS Lambda function. Lambda
// reads items from the event source and triggers the function.
//
// For details about each event source type, see the following topics.
//
// * Using AWS Lambda with Amazon Kinesis (https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html)
//
// * Using AWS Lambda with Amazon SQS (https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html)
//
// * Using AWS Lambda with Amazon DynamoDB (https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html)
//
// // Example sending a request using CreateEventSourceMappingRequest.
// req := client.CreateEventSourceMappingRequest(params)
// resp, err := req.Send(context.TODO())
// if err == nil {
// fmt.Println(resp)
// }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/lambda-2015-03-31/CreateEventSourceMapping
func (c *Client) CreateEventSourceMappingRequest(input *CreateEventSourceMappingInput) CreateEventSourceMappingRequest {
op := &aws.Operation{
Name: opCreateEventSourceMapping,
HTTPMethod: "POST",
HTTPPath: "/2015-03-31/event-source-mappings/",
}
if input == nil {
input = &CreateEventSourceMappingInput{}
}
req := c.newRequest(op, input, &CreateEventSourceMappingOutput{})
return CreateEventSourceMappingRequest{Request: req, Input: input, Copy: c.CreateEventSourceMappingRequest}
}
// CreateEventSourceMappingRequest is the request type for the
// CreateEventSourceMapping API operation.
type CreateEventSourceMappingRequest struct {
*aws.Request
Input *CreateEventSourceMappingInput
Copy func(*CreateEventSourceMappingInput) CreateEventSourceMappingRequest
}
// Send marshals and sends the CreateEventSourceMapping API request.
func (r CreateEventSourceMappingRequest) Send(ctx context.Context) (*CreateEventSourceMappingResponse, error) {
r.Request.SetContext(ctx)
err := r.Request.Send()
if err != nil {
return nil, err
}
resp := &CreateEventSourceMappingResponse{
CreateEventSourceMappingOutput: r.Request.Data.(*CreateEventSourceMappingOutput),
response: &aws.Response{Request: r.Request},
}
return resp, nil
}
// CreateEventSourceMappingResponse is the response type for the
// CreateEventSourceMapping API operation.
type CreateEventSourceMappingResponse struct {
*CreateEventSourceMappingOutput
response *aws.Response
}
// SDKResponseMetdata returns the response metadata for the
// CreateEventSourceMapping request.
func (r *CreateEventSourceMappingResponse) SDKResponseMetdata() *aws.Response {
return r.response
}