aws-sdk-dynamodbstreams 1.23.0 → 1.28.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b2682c80b22863a7aadb81dc79da9c479cd34d4303598f231c33f1c4f296072
4
- data.tar.gz: 0b5ad61f61fb7f714bd701aa5eb474478553b1882d6d5a7a1b27762d729d8e6e
3
+ metadata.gz: 1b25ccc8b1bcbb5930ccf0c4fc4a4fc9c19822608814b4da4368f7738635cc15
4
+ data.tar.gz: a7666236432ea4024baa072a22bc8c25a64779e36f89001dce3f73d9625354c9
5
5
  SHA512:
6
- metadata.gz: 9294d1b5827fd3f15322adb6897f65d857ebcc257e576b63fd398b69cf5b0a5b857c4980dc92150d8cea0be5ab67d66375226290a86dde5804b17236b60c36f3
7
- data.tar.gz: 7e989072f69b7863d847be29162b906238223182c31f0ecbb97f880017545580de1d61545e25104ea89d33353ad77714b95cb499f1ddd3ce7dcd103e298b8427
6
+ metadata.gz: 8ff3a9a68ff26170d11101de46a8475275db4ef345f79b6e12d6ad21aad9e08114e9c651931e2744941b56223f46e11e5359864590b296c7cf2bb0e640bc32a9
7
+ data.tar.gz: 3698efd18c17ca973319efa79b2e37297d92d5ec361906e92fe42a2412422a1f44c08e9ea31e9328f7dea4290ce03fbc7773d41c3f645b830572acfc8d3f0020
@@ -48,6 +48,6 @@ require_relative 'aws-sdk-dynamodbstreams/customizations'
48
48
  # @!group service
49
49
  module Aws::DynamoDBStreams
50
50
 
51
- GEM_VERSION = '1.23.0'
51
+ GEM_VERSION = '1.28.0'
52
52
 
53
53
  end
@@ -0,0 +1,40 @@
1
+ module Aws
2
+ module DynamoDBStreams
3
+ # A utility class that translates DynamoDBStream events from Lambda
4
+ # functions into their simple attribute equivalents.
5
+ class AttributeTranslator
6
+ # Parse a DynamoDBStream event hash from Lambda that contains 1 or more
7
+ # records. When using the SDK to retrieve DynamoDB stream records, use the
8
+ # `simple_attributes: true` client option instead.
9
+ #
10
+ # @param [Hash] event A DynamoDBStream event.
11
+ #
12
+ # @example Parse a DynamoDB stream event from Lambda
13
+ # def lambda_handler(event:, context:)
14
+ # records = Aws::DynamoDBStreams::AttributeTranslator.from_event(event)
15
+ # records.each do |record|
16
+ # puts record.dynamodb.new_image
17
+ # # => { "size" => 123, "enabled" => true, ... }
18
+ # end
19
+ # end
20
+ def self.from_event(event)
21
+ return unless event.is_a?(Hash)
22
+
23
+ # TODO: This implementation is slow and inefficient. It would be
24
+ # better to write a switch-case that has similar logic to AttributeValue
25
+ # used in the ValueTranslator. This implementation however provides
26
+ # consistency between both DynamoDB and DynamoDBStreams. The translator
27
+ # only works with shapes and structs and not a regular Ruby hash.
28
+ shape_ref = ClientApi::Shapes::ShapeRef.new(
29
+ shape: ClientApi::GetRecordsOutput
30
+ )
31
+ translator = Plugins::SimpleAttributes::ValueTranslator.new(
32
+ shape_ref, :unmarshal
33
+ )
34
+ parser = Aws::Json::Parser.new(shape_ref)
35
+ input = parser.parse(Aws::Json.dump(event))
36
+ translator.apply(input).records
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bigdecimal'
4
+ require 'stringio'
5
+ require 'set'
6
+
7
+ module Aws
8
+ module DynamoDBStreams
9
+ # @api private
10
+ class AttributeValue
11
+
12
+ def initialize
13
+ @unmarshaler = Unmarshaler.new
14
+ end
15
+
16
+ def unmarshal(value)
17
+ @unmarshaler.format(value)
18
+ end
19
+
20
+ class Unmarshaler
21
+
22
+ def format(obj)
23
+ type, value = extract_type_and_value(obj)
24
+ case type
25
+ when :m
26
+ value.each.with_object({}) do |(k, v), map|
27
+ map[k] = format(v)
28
+ end
29
+ when :l then value.map { |v| format(v) }
30
+ when :s then value
31
+ when :n then BigDecimal(value)
32
+ when :b then StringIO.new(value)
33
+ when :null then nil
34
+ when :bool then value
35
+ when :ss then Set.new(value)
36
+ when :ns then Set.new(value.map { |n| BigDecimal(n) })
37
+ when :bs then Set.new(value.map { |b| StringIO.new(b) })
38
+ else
39
+ raise ArgumentError, "unhandled type #{type.inspect}"
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def extract_type_and_value(obj)
46
+ case obj
47
+ when Hash then obj.to_a.first
48
+ when Struct
49
+ obj.members.each do |key|
50
+ value = obj[key]
51
+ return [key, value] unless value.nil?
52
+ end
53
+ else
54
+ raise ArgumentError, "unhandled type #{obj.inspect}"
55
+ end
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end
@@ -29,6 +29,7 @@ require 'aws-sdk-core/plugins/transfer_encoding.rb'
29
29
  require 'aws-sdk-core/plugins/http_checksum.rb'
30
30
  require 'aws-sdk-core/plugins/signature_v4.rb'
31
31
  require 'aws-sdk-core/plugins/protocols/json_rpc.rb'
32
+ require 'aws-sdk-dynamodbstreams/plugins/simple_attributes.rb'
32
33
 
33
34
  Aws::Plugins::GlobalConfiguration.add_identifier(:dynamodbstreams)
34
35
 
@@ -75,6 +76,7 @@ module Aws::DynamoDBStreams
75
76
  add_plugin(Aws::Plugins::HttpChecksum)
76
77
  add_plugin(Aws::Plugins::SignatureV4)
77
78
  add_plugin(Aws::Plugins::Protocols::JsonRpc)
79
+ add_plugin(Aws::DynamoDBStreams::Plugins::SimpleAttributes)
78
80
 
79
81
  # @overload initialize(options)
80
82
  # @param [Hash] options
@@ -266,6 +268,10 @@ module Aws::DynamoDBStreams
266
268
  #
267
269
  # @option options [String] :session_token
268
270
  #
271
+ # @option options [Boolean] :simple_attributes (false)
272
+ # When enabled, returns DynamoDBStream attribute values using
273
+ # hashes, arrays, sets, integers, floats, booleans, and nil.
274
+ #
269
275
  # @option options [Boolean] :simple_json (false)
270
276
  # Disables request parameter conversion, validation, and formatting.
271
277
  # Also disable response data type conversions. This option is useful
@@ -787,7 +793,7 @@ module Aws::DynamoDBStreams
787
793
  params: params,
788
794
  config: config)
789
795
  context[:gem_name] = 'aws-sdk-dynamodbstreams'
790
- context[:gem_version] = '1.23.0'
796
+ context[:gem_version] = '1.28.0'
791
797
  Seahorse::Client::Request.new(handlers, context)
792
798
  end
793
799
 
@@ -214,6 +214,7 @@ module Aws::DynamoDBStreams
214
214
  "jsonVersion" => "1.0",
215
215
  "protocol" => "json",
216
216
  "serviceFullName" => "Amazon DynamoDB Streams",
217
+ "serviceId" => "DynamoDB Streams",
217
218
  "signatureVersion" => "v4",
218
219
  "signingName" => "dynamodb",
219
220
  "targetPrefix" => "DynamoDBStreams_20120810",
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ # utility classes
4
+ require 'aws-sdk-dynamodbstreams/attribute_translator'
5
+ require 'aws-sdk-dynamodbstreams/attribute_value'
@@ -0,0 +1,152 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aws
4
+ module DynamoDBStreams
5
+ module Plugins
6
+ # Simplifies working with Amazon DynamoDBStreams attribute values.
7
+ # Translates attribute values from responses to sensible Ruby natives.
8
+ #
9
+ # This plugin is disabled by default for all {DynamoDBStreams::Client}
10
+ # objects. You can enable this plugin by passing
11
+ # `simple_attributes: false` to the client constructor:
12
+ #
13
+ # ddb = Aws::DynamoDBStreams::Client.new(simple_attributes: true)
14
+ #
15
+ # ## Output Examples
16
+ #
17
+ # With this plugin **enabled**, `simple_attributes: true`:
18
+ #
19
+ # resp = dynamodbstreams.get_records(shard_iterator: iterator)
20
+ # resp.records.first.dynamodb.new_image
21
+ # {
22
+ # id: 'uuid',
23
+ # enabled: true,
24
+ # tags: #<Set: {"attributes", "simple"}>,
25
+ # data: #<StringIO:0x00007fe4061e6bc0>,
26
+ # scores: [0.1e1, 0.2e1, 0.3e1, nil],
27
+ # name: {
28
+ # first: 'John',
29
+ # last: 'Doe',
30
+ # }
31
+ # }
32
+ #
33
+ # With this plugin **disabled**, `simple_attributes: false`:
34
+ #
35
+ # resp = dynamodbstreams.get_records(shard_iterator: iterator)
36
+ # resp.records.first.dynamodb.new_image
37
+ # {
38
+ # "id"=> <struct s='uuid', n=nil, b=nil, ss=nil, ns=nil, bs=nil, m=nil, l=nil, null=nil, bool=nil>
39
+ # "enabled"=> <struct s=nil, n=nil, b=nil, ss=nil, ns=nil, bs=nil, m=nil, l=nil, null=nil, bool=true>
40
+ # ...
41
+ # }
42
+ #
43
+ class SimpleAttributes < Seahorse::Client::Plugin
44
+
45
+ option(:simple_attributes,
46
+ default: false,
47
+ doc_type: 'Boolean',
48
+ docstring: <<-DOCS
49
+ When enabled, returns DynamoDBStream attribute values using
50
+ hashes, arrays, sets, integers, floats, booleans, and nil.
51
+ DOCS
52
+ )
53
+
54
+ def add_handlers(handlers, config)
55
+ if config.simple_attributes
56
+ handlers.add(Handler, step: :initialize, operations: [:get_records])
57
+ end
58
+ end
59
+
60
+ class Handler < Seahorse::Client::Handler
61
+
62
+ def call(context)
63
+ @handler.call(context).on(200) do |response|
64
+ response.data = translate_output(response)
65
+ end
66
+ end
67
+
68
+ private
69
+
70
+ def translate_output(response)
71
+ if shape = response.context.operation.output
72
+ ValueTranslator.new(shape, :unmarshal).apply(response.data)
73
+ else
74
+ response.data
75
+ end
76
+ end
77
+
78
+ end
79
+
80
+ # @api private
81
+ class ValueTranslator
82
+
83
+ include Seahorse::Model::Shapes
84
+
85
+ def self.apply(rules, mode, data)
86
+ new(rules, mode).apply(data)
87
+ end
88
+
89
+ def initialize(rules, mode)
90
+ @rules = rules
91
+ @mode = mode
92
+ end
93
+
94
+ def apply(values)
95
+ structure(@rules, values) if @rules
96
+ end
97
+
98
+ private
99
+
100
+ def structure(ref, values)
101
+ shape = ref.shape
102
+ if values.is_a?(Struct)
103
+ values.members.each.with_object(values.class.new) do |key, st|
104
+ st[key] = translate(shape.member(key), values[key])
105
+ end
106
+ elsif values.is_a?(Hash)
107
+ values.each.with_object({}) do |(key, value), hash|
108
+ hash[key] = translate(shape.member(key), value)
109
+ end
110
+ else
111
+ values
112
+ end
113
+ end
114
+
115
+ def list(ref, values)
116
+ return values unless values.is_a?(Array)
117
+ member_ref = ref.shape.member
118
+ values.inject([]) do |list, value|
119
+ list << translate(member_ref, value)
120
+ end
121
+ end
122
+
123
+ def map(ref, values)
124
+ return values unless values.is_a?(Hash)
125
+ value_ref = ref.shape.value
126
+ values.each.with_object({}) do |(key, value), hash|
127
+ hash[key] = translate(value_ref, value)
128
+ end
129
+ end
130
+
131
+ def translate(ref, value)
132
+ if ClientApi::AttributeValue === ref.shape
133
+ AttributeValue.new.send(@mode, value)
134
+ else
135
+ translate_complex(ref, value)
136
+ end
137
+ end
138
+
139
+ def translate_complex(ref, value)
140
+ case ref.shape
141
+ when StructureShape then structure(ref, value)
142
+ when ListShape then list(ref, value)
143
+ when MapShape then map(ref, value)
144
+ else value
145
+ end
146
+ end
147
+
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
@@ -10,53 +10,86 @@
10
10
  module Aws::DynamoDBStreams
11
11
  module Types
12
12
 
13
- # Represents the data for an attribute. You can set one, and only one,
14
- # of the elements.
13
+ # Represents the data for an attribute.
15
14
  #
16
- # Each attribute in an item is a name-value pair. An attribute can be
17
- # single-valued or multi-valued set. For example, a book item can have
18
- # title and authors attributes. Each book has one title but can have
19
- # many authors. The multi-valued attribute is a set; duplicate values
20
- # are not allowed.
15
+ # Each attribute value is described as a name-value pair. The name is
16
+ # the data type, and the value is the data itself.
17
+ #
18
+ # For more information, see [Data Types][1] in the *Amazon DynamoDB
19
+ # Developer Guide*.
20
+ #
21
+ #
22
+ #
23
+ # [1]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes
21
24
  #
22
25
  # @!attribute [rw] s
23
- # A String data type.
26
+ # An attribute of type String. For example:
27
+ #
28
+ # `"S": "Hello"`
24
29
  # @return [String]
25
30
  #
26
31
  # @!attribute [rw] n
27
- # A Number data type.
32
+ # An attribute of type Number. For example:
33
+ #
34
+ # `"N": "123.45"`
35
+ #
36
+ # Numbers are sent across the network to DynamoDB as strings, to
37
+ # maximize compatibility across languages and libraries. However,
38
+ # DynamoDB treats them as number type attributes for mathematical
39
+ # operations.
28
40
  # @return [String]
29
41
  #
30
42
  # @!attribute [rw] b
31
- # A Binary data type.
43
+ # An attribute of type Binary. For example:
44
+ #
45
+ # `"B": "dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk"`
32
46
  # @return [String]
33
47
  #
34
48
  # @!attribute [rw] ss
35
- # A String Set data type.
49
+ # An attribute of type String Set. For example:
50
+ #
51
+ # `"SS": ["Giraffe", "Hippo" ,"Zebra"]`
36
52
  # @return [Array<String>]
37
53
  #
38
54
  # @!attribute [rw] ns
39
- # A Number Set data type.
55
+ # An attribute of type Number Set. For example:
56
+ #
57
+ # `"NS": ["42.2", "-19", "7.5", "3.14"]`
58
+ #
59
+ # Numbers are sent across the network to DynamoDB as strings, to
60
+ # maximize compatibility across languages and libraries. However,
61
+ # DynamoDB treats them as number type attributes for mathematical
62
+ # operations.
40
63
  # @return [Array<String>]
41
64
  #
42
65
  # @!attribute [rw] bs
43
- # A Binary Set data type.
66
+ # An attribute of type Binary Set. For example:
67
+ #
68
+ # `"BS": ["U3Vubnk=", "UmFpbnk=", "U25vd3k="]`
44
69
  # @return [Array<String>]
45
70
  #
46
71
  # @!attribute [rw] m
47
- # A Map data type.
72
+ # An attribute of type Map. For example:
73
+ #
74
+ # `"M": \{"Name": \{"S": "Joe"\}, "Age": \{"N": "35"\}\}`
48
75
  # @return [Hash<String,Types::AttributeValue>]
49
76
  #
50
77
  # @!attribute [rw] l
51
- # A List data type.
78
+ # An attribute of type List. For example:
79
+ #
80
+ # `"L": [ \{"S": "Cookies"\} , \{"S": "Coffee"\}, \{"N", "3.14159"\}]`
52
81
  # @return [Array<Types::AttributeValue>]
53
82
  #
54
83
  # @!attribute [rw] null
55
- # A Null data type.
84
+ # An attribute of type Null. For example:
85
+ #
86
+ # `"NULL": true`
56
87
  # @return [Boolean]
57
88
  #
58
89
  # @!attribute [rw] bool
59
- # A Boolean data type.
90
+ # An attribute of type Boolean. For example:
91
+ #
92
+ # `"BOOL": true`
60
93
  # @return [Boolean]
61
94
  #
62
95
  # @see http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/AttributeValue AWS API Documentation
@@ -311,30 +344,37 @@ module Aws::DynamoDBStreams
311
344
  # attributes of an index.
312
345
  #
313
346
  # A `KeySchemaElement` represents exactly one attribute of the primary
314
- # key. For example, a simple primary key (partition key) would be
315
- # represented by one `KeySchemaElement`. A composite primary key
316
- # (partition key and sort key) would require one `KeySchemaElement` for
317
- # the partition key, and another `KeySchemaElement` for the sort key.
318
- #
319
- # <note markdown="1"> The partition key of an item is also known as its *hash attribute*.
320
- # The term "hash attribute" derives from DynamoDB's usage of an
321
- # internal hash function to evenly distribute data items across
322
- # partitions, based on their partition key values.
323
- #
324
- # The sort key of an item is also known as its *range attribute*. The
325
- # term "range attribute" derives from the way DynamoDB stores items
326
- # with the same partition key physically close together, in sorted order
327
- # by the sort key value.
347
+ # key. For example, a simple primary key would be represented by one
348
+ # `KeySchemaElement` (for the partition key). A composite primary key
349
+ # would require one `KeySchemaElement` for the partition key, and
350
+ # another `KeySchemaElement` for the sort key.
328
351
  #
329
- # </note>
352
+ # A `KeySchemaElement` must be a scalar, top-level attribute (not a
353
+ # nested attribute). The data type must be one of String, Number, or
354
+ # Binary. The attribute cannot be nested within a List or a Map.
330
355
  #
331
356
  # @!attribute [rw] attribute_name
332
357
  # The name of a key attribute.
333
358
  # @return [String]
334
359
  #
335
360
  # @!attribute [rw] key_type
336
- # The attribute data, consisting of the data type and the attribute
337
- # value itself.
361
+ # The role that this key attribute will assume:
362
+ #
363
+ # * `HASH` - partition key
364
+ #
365
+ # * `RANGE` - sort key
366
+ #
367
+ # <note markdown="1"> The partition key of an item is also known as its *hash attribute*.
368
+ # The term "hash attribute" derives from DynamoDB's usage of an
369
+ # internal hash function to evenly distribute data items across
370
+ # partitions, based on their partition key values.
371
+ #
372
+ # The sort key of an item is also known as its *range attribute*. The
373
+ # term "range attribute" derives from the way DynamoDB stores items
374
+ # with the same partition key physically close together, in sorted
375
+ # order by the sort key value.
376
+ #
377
+ # </note>
338
378
  # @return [String]
339
379
  #
340
380
  # @see http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/KeySchemaElement AWS API Documentation
@@ -346,16 +386,20 @@ module Aws::DynamoDBStreams
346
386
  include Aws::Structure
347
387
  end
348
388
 
349
- # Your request rate is too high. The AWS SDKs for DynamoDB automatically
350
- # retry requests that receive this exception. Your request is eventually
351
- # successful, unless your retry queue is too large to finish. Reduce the
352
- # frequency of requests and use exponential backoff. For more
353
- # information, go to [Error Retries and Exponential Backoff][1] in the
354
- # *Amazon DynamoDB Developer Guide*.
389
+ # There is no limit to the number of daily on-demand backups that can be
390
+ # taken.
355
391
  #
392
+ # Up to 50 simultaneous table operations are allowed per account. These
393
+ # operations include `CreateTable`, `UpdateTable`,
394
+ # `DeleteTable`,`UpdateTimeToLive`, `RestoreTableFromBackup`, and
395
+ # `RestoreTableToPointInTime`.
356
396
  #
397
+ # The only exception is when you are creating a table with one or more
398
+ # secondary indexes. You can have up to 25 such requests running at a
399
+ # time; however, if the table or index specifications are complex,
400
+ # DynamoDB might temporarily reduce the number of concurrent operations.
357
401
  #
358
- # [1]: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#APIRetries
402
+ # There is a soft account quota of 256 tables.
359
403
  #
360
404
  # @!attribute [rw] message
361
405
  # Too many operations for a given subscriber.
@@ -506,7 +550,9 @@ module Aws::DynamoDBStreams
506
550
  include Aws::Structure
507
551
  end
508
552
 
509
- # The operation tried to access a nonexistent stream.
553
+ # The operation tried to access a nonexistent table or index. The
554
+ # resource might not be specified correctly, or its status might not be
555
+ # `ACTIVE`.
510
556
  #
511
557
  # @!attribute [rw] message
512
558
  # The resource which is being requested does not exist.
@@ -524,11 +570,13 @@ module Aws::DynamoDBStreams
524
570
  # contained within a shard.
525
571
  #
526
572
  # @!attribute [rw] starting_sequence_number
527
- # The first sequence number.
573
+ # The first sequence number for the stream records contained within a
574
+ # shard. String contains numeric characters only.
528
575
  # @return [String]
529
576
  #
530
577
  # @!attribute [rw] ending_sequence_number
531
- # The last sequence number.
578
+ # The last sequence number for the stream records contained within a
579
+ # shard. String contains numeric characters only.
532
580
  # @return [String]
533
581
  #
534
582
  # @see http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/SequenceNumberRange AWS API Documentation
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-dynamodbstreams
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.23.0
4
+ version: 1.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-15 00:00:00.000000000 Z
11
+ date: 2021-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 3.99.0
22
+ version: 3.112.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '3'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 3.99.0
32
+ version: 3.112.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: aws-sigv4
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -53,10 +53,13 @@ extensions: []
53
53
  extra_rdoc_files: []
54
54
  files:
55
55
  - lib/aws-sdk-dynamodbstreams.rb
56
+ - lib/aws-sdk-dynamodbstreams/attribute_translator.rb
57
+ - lib/aws-sdk-dynamodbstreams/attribute_value.rb
56
58
  - lib/aws-sdk-dynamodbstreams/client.rb
57
59
  - lib/aws-sdk-dynamodbstreams/client_api.rb
58
60
  - lib/aws-sdk-dynamodbstreams/customizations.rb
59
61
  - lib/aws-sdk-dynamodbstreams/errors.rb
62
+ - lib/aws-sdk-dynamodbstreams/plugins/simple_attributes.rb
60
63
  - lib/aws-sdk-dynamodbstreams/resource.rb
61
64
  - lib/aws-sdk-dynamodbstreams/types.rb
62
65
  homepage: https://github.com/aws/aws-sdk-ruby