aws-sdk-ebs 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c21ce0cd3f92239328f36ff544e93b7878f7ca7e091b5c75cee69cef056bf16d
4
- data.tar.gz: f619293cffc92d8ca04734f1010e6478b31f6c49e69e7f6a56375053ebc42a08
3
+ metadata.gz: d227067495ac6ab702b5fcec6c360cc21512b0e2be0ff143c61ca9abb44e8681
4
+ data.tar.gz: bcb93f41e404bb1bbb31a63561fcac6d98ba35729c7c711089067a1aeb27c65d
5
5
  SHA512:
6
- metadata.gz: e4e786c80fca3ec0adbc6a500415114ca1f30564d35edf22fe6d987db0b0ceb30d77e5c2f05ae5512fc790c8edd30e7401eb0bdf1bea853c3c0b86246a9d121d
7
- data.tar.gz: 9e085d7d050610b6cfd3dd1c1266d9e5d23a698b64db3ef24c2085de88efba7b4fd6798dcfb59bd14b45e4145afec7cb4536e472235afcbc35366f45daed388e
6
+ metadata.gz: 23d713b9c2c3b5f6b3f77e910d7f7e5c49d804deabe9f60f7159b3b13381d310f4c5fbf3e4fe49d9d8f9157f4f277a703ec654157b2fee31e4964e0e12de01f2
7
+ data.tar.gz: 2e0c5f930b19b956a15a3f4881f98c49d100efffcaa5a36191a86f7f2177fc18076d40a04068a12fa8cd1ce75d3fd30f1da465bc8d6188279a7dc18fc9d0d3f2
@@ -27,7 +27,7 @@ require_relative 'aws-sdk-ebs/customizations'
27
27
  # structure.
28
28
  #
29
29
  # ebs = Aws::EBS::Client.new
30
- # resp = ebs.get_snapshot_block(params)
30
+ # resp = ebs.complete_snapshot(params)
31
31
  #
32
32
  # See {Client} for more information.
33
33
  #
@@ -47,6 +47,6 @@ require_relative 'aws-sdk-ebs/customizations'
47
47
  # @service
48
48
  module Aws::EBS
49
49
 
50
- GEM_VERSION = '1.6.0'
50
+ GEM_VERSION = '1.7.0'
51
51
 
52
52
  end
@@ -312,6 +312,62 @@ module Aws::EBS
312
312
 
313
313
  # @!group API Operations
314
314
 
315
+ # Seals and completes the snapshot after all of the required blocks of
316
+ # data have been written to it. Completing the snapshot changes the
317
+ # status to `completed`. You cannot write new blocks to a snapshot after
318
+ # it has been completed.
319
+ #
320
+ # @option params [required, String] :snapshot_id
321
+ # The ID of the snapshot.
322
+ #
323
+ # @option params [required, Integer] :changed_blocks_count
324
+ # The number of blocks that were written to the snapshot.
325
+ #
326
+ # @option params [String] :checksum
327
+ # An aggregated Base-64 SHA256 checksum based on the checksums of each
328
+ # written block.
329
+ #
330
+ # To generate the aggregated checksum using the linear aggregation
331
+ # method, arrange the checksums for each written block in ascending
332
+ # order of their block index, concatenate them to form a single string,
333
+ # and then generate the checksum on the entire string using the SHA256
334
+ # algorithm.
335
+ #
336
+ # @option params [String] :checksum_algorithm
337
+ # The algorithm used to generate the checksum. Currently, the only
338
+ # supported algorithm is `SHA256`.
339
+ #
340
+ # @option params [String] :checksum_aggregation_method
341
+ # The aggregation method used to generate the checksum. Currently, the
342
+ # only supported aggregation method is `LINEAR`.
343
+ #
344
+ # @return [Types::CompleteSnapshotResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
345
+ #
346
+ # * {Types::CompleteSnapshotResponse#status #status} => String
347
+ #
348
+ # @example Request syntax with placeholder values
349
+ #
350
+ # resp = client.complete_snapshot({
351
+ # snapshot_id: "SnapshotId", # required
352
+ # changed_blocks_count: 1, # required
353
+ # checksum: "Checksum",
354
+ # checksum_algorithm: "SHA256", # accepts SHA256
355
+ # checksum_aggregation_method: "LINEAR", # accepts LINEAR
356
+ # })
357
+ #
358
+ # @example Response structure
359
+ #
360
+ # resp.status #=> String, one of "completed", "pending", "error"
361
+ #
362
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/CompleteSnapshot AWS API Documentation
363
+ #
364
+ # @overload complete_snapshot(params = {})
365
+ # @param [Hash] params ({})
366
+ def complete_snapshot(params = {}, options = {})
367
+ req = build_request(:complete_snapshot, params)
368
+ req.send_request(options)
369
+ end
370
+
315
371
  # Returns the data in a block in an Amazon Elastic Block Store snapshot.
316
372
  #
317
373
  # @option params [required, String] :snapshot_id
@@ -484,6 +540,244 @@ module Aws::EBS
484
540
  req.send_request(options)
485
541
  end
486
542
 
543
+ # Writes a block of data to a block in the snapshot. If the specified
544
+ # block contains data, the existing data is overwritten. The target
545
+ # snapshot must be in the `pending` state.
546
+ #
547
+ # Data written to a snapshot must be aligned with 512-byte sectors.
548
+ #
549
+ # @option params [required, String] :snapshot_id
550
+ # The ID of the snapshot.
551
+ #
552
+ # @option params [required, Integer] :block_index
553
+ # The block index of the block in which to write the data. A block index
554
+ # is the offset position of a block within a snapshot, and it is used to
555
+ # identify the block. To identify the logical offset of the data in the
556
+ # logical volume, multiply the block index with the block size (Block
557
+ # index * 512 bytes).
558
+ #
559
+ # @option params [required, String, IO] :block_data
560
+ # The data to write to the block.
561
+ #
562
+ # The block data is not signed as part of the Signature Version 4
563
+ # signing process. As a result, you must generate and provide a
564
+ # Base64-encoded SHA256 checksum for the block data using the
565
+ # **x-amz-Checksum** header. Also, you must specify the checksum
566
+ # algorithm using the **x-amz-Checksum-Algorithm** header. The checksum
567
+ # that you provide is part of the Signature Version 4 signing process.
568
+ # It is validated against a checksum generated by Amazon EBS to ensure
569
+ # the validity and authenticity of the data. If the checksums do not
570
+ # correspond, the request fails. For more information, see [ Using
571
+ # checksums with the EBS direct APIs][1] in the *Amazon Elastic Compute
572
+ # Cloud User Guide*.
573
+ #
574
+ #
575
+ #
576
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums
577
+ #
578
+ # @option params [required, Integer] :data_length
579
+ # The size of the data to write to the block, in bytes. Currently, the
580
+ # only supported size is `524288`.
581
+ #
582
+ # Valid values: `524288`
583
+ #
584
+ # @option params [Integer] :progress
585
+ # The progress of the write process, as a percentage.
586
+ #
587
+ # @option params [required, String] :checksum
588
+ # A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums
589
+ # are supported.
590
+ #
591
+ # @option params [required, String] :checksum_algorithm
592
+ # The algorithm used to generate the checksum. Currently, the only
593
+ # supported algorithm is `SHA256`.
594
+ #
595
+ # @return [Types::PutSnapshotBlockResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
596
+ #
597
+ # * {Types::PutSnapshotBlockResponse#checksum #checksum} => String
598
+ # * {Types::PutSnapshotBlockResponse#checksum_algorithm #checksum_algorithm} => String
599
+ #
600
+ # @example Request syntax with placeholder values
601
+ #
602
+ # resp = client.put_snapshot_block({
603
+ # snapshot_id: "SnapshotId", # required
604
+ # block_index: 1, # required
605
+ # block_data: "data", # required
606
+ # data_length: 1, # required
607
+ # progress: 1,
608
+ # checksum: "Checksum", # required
609
+ # checksum_algorithm: "SHA256", # required, accepts SHA256
610
+ # })
611
+ #
612
+ # @example Response structure
613
+ #
614
+ # resp.checksum #=> String
615
+ # resp.checksum_algorithm #=> String, one of "SHA256"
616
+ #
617
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/PutSnapshotBlock AWS API Documentation
618
+ #
619
+ # @overload put_snapshot_block(params = {})
620
+ # @param [Hash] params ({})
621
+ def put_snapshot_block(params = {}, options = {})
622
+ req = build_request(:put_snapshot_block, params)
623
+ req.send_request(options)
624
+ end
625
+
626
+ # Creates a new Amazon EBS snapshot. The new snapshot enters the
627
+ # `pending` state after the request completes.
628
+ #
629
+ # After creating the snapshot, use [ PutSnapshotBlock][1] to write
630
+ # blocks of data to the snapshot.
631
+ #
632
+ #
633
+ #
634
+ # [1]: https://docs.aws.amazon.com/ebs/latest/APIReference/API_PutSnapshotBlock.html
635
+ #
636
+ # @option params [required, Integer] :volume_size
637
+ # The size of the volume, in GiB. The maximum size is `16384` GiB (16
638
+ # TiB).
639
+ #
640
+ # @option params [String] :parent_snapshot_id
641
+ # The ID of the parent snapshot. If there is no parent snapshot, or if
642
+ # you are creating the first snapshot for an on-premises volume, omit
643
+ # this parameter.
644
+ #
645
+ # If your account is enabled for encryption by default, you cannot use
646
+ # an unencrypted snapshot as a parent snapshot. You must first create an
647
+ # encrypted copy of the parent snapshot using [CopySnapshot][1].
648
+ #
649
+ #
650
+ #
651
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html
652
+ #
653
+ # @option params [Array<Types::Tag>] :tags
654
+ # The tags to apply to the snapshot.
655
+ #
656
+ # @option params [String] :description
657
+ # A description for the snapshot.
658
+ #
659
+ # @option params [String] :client_token
660
+ # A unique, case-sensitive identifier that you provide to ensure the
661
+ # idempotency of the request. Idempotency ensures that an API request
662
+ # completes only once. With an idempotent request, if the original
663
+ # request completes successfully. The subsequent retries with the same
664
+ # client token return the result from the original successful request
665
+ # and they have no additional effect.
666
+ #
667
+ # If you do not specify a client token, one is automatically generated
668
+ # by the AWS SDK.
669
+ #
670
+ # For more information, see [ Idempotency for StartSnapshot API][1] in
671
+ # the *Amazon Elastic Compute Cloud User Guide*.
672
+ #
673
+ # **A suitable default value is auto-generated.** You should normally
674
+ # not need to pass this option.**
675
+ #
676
+ #
677
+ #
678
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html
679
+ #
680
+ # @option params [Boolean] :encrypted
681
+ # Indicates whether to encrypt the snapshot. To create an encrypted
682
+ # snapshot, specify `true`. To create an unencrypted snapshot, omit this
683
+ # parameter.
684
+ #
685
+ # If you specify a value for **ParentSnapshotId**, omit this parameter.
686
+ #
687
+ # If you specify `true`, the snapshot is encrypted using the CMK
688
+ # specified using the **KmsKeyArn** parameter. If no value is specified
689
+ # for **KmsKeyArn**, the default CMK for your account is used. If no
690
+ # default CMK has been specified for your account, the AWS managed CMK
691
+ # is used. To set a default CMK for your account, use [
692
+ # ModifyEbsDefaultKmsKeyId][1].
693
+ #
694
+ # If your account is enabled for encryption by default, you cannot set
695
+ # this parameter to `false`. In this case, you can omit this parameter.
696
+ #
697
+ # For more information, see [ Using encryption][2] in the *Amazon
698
+ # Elastic Compute Cloud User Guide*.
699
+ #
700
+ #
701
+ #
702
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html
703
+ # [2]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption
704
+ #
705
+ # @option params [String] :kms_key_arn
706
+ # The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS
707
+ # KMS) customer master key (CMK) to be used to encrypt the snapshot. If
708
+ # you do not specify a CMK, the default AWS managed CMK is used.
709
+ #
710
+ # If you specify a **ParentSnapshotId**, omit this parameter; the
711
+ # snapshot will be encrypted using the same CMK that was used to encrypt
712
+ # the parent snapshot.
713
+ #
714
+ # If **Encrypted** is set to `true`, you must specify a CMK ARN.
715
+ #
716
+ # @option params [Integer] :timeout
717
+ # The amount of time (in minutes) after which the snapshot is
718
+ # automatically cancelled if:
719
+ #
720
+ # * No blocks are written to the snapshot.
721
+ #
722
+ # * The snapshot is not completed after writing the last block of data.
723
+ #
724
+ # If no value is specified, the timeout defaults to `60` minutes.
725
+ #
726
+ # @return [Types::StartSnapshotResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
727
+ #
728
+ # * {Types::StartSnapshotResponse#description #description} => String
729
+ # * {Types::StartSnapshotResponse#snapshot_id #snapshot_id} => String
730
+ # * {Types::StartSnapshotResponse#owner_id #owner_id} => String
731
+ # * {Types::StartSnapshotResponse#status #status} => String
732
+ # * {Types::StartSnapshotResponse#start_time #start_time} => Time
733
+ # * {Types::StartSnapshotResponse#volume_size #volume_size} => Integer
734
+ # * {Types::StartSnapshotResponse#block_size #block_size} => Integer
735
+ # * {Types::StartSnapshotResponse#tags #tags} => Array&lt;Types::Tag&gt;
736
+ # * {Types::StartSnapshotResponse#parent_snapshot_id #parent_snapshot_id} => String
737
+ # * {Types::StartSnapshotResponse#kms_key_arn #kms_key_arn} => String
738
+ #
739
+ # @example Request syntax with placeholder values
740
+ #
741
+ # resp = client.start_snapshot({
742
+ # volume_size: 1, # required
743
+ # parent_snapshot_id: "SnapshotId",
744
+ # tags: [
745
+ # {
746
+ # key: "TagKey",
747
+ # value: "TagValue",
748
+ # },
749
+ # ],
750
+ # description: "Description",
751
+ # client_token: "IdempotencyToken",
752
+ # encrypted: false,
753
+ # kms_key_arn: "KmsKeyArn",
754
+ # timeout: 1,
755
+ # })
756
+ #
757
+ # @example Response structure
758
+ #
759
+ # resp.description #=> String
760
+ # resp.snapshot_id #=> String
761
+ # resp.owner_id #=> String
762
+ # resp.status #=> String, one of "completed", "pending", "error"
763
+ # resp.start_time #=> Time
764
+ # resp.volume_size #=> Integer
765
+ # resp.block_size #=> Integer
766
+ # resp.tags #=> Array
767
+ # resp.tags[0].key #=> String
768
+ # resp.tags[0].value #=> String
769
+ # resp.parent_snapshot_id #=> String
770
+ # resp.kms_key_arn #=> String
771
+ #
772
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/StartSnapshot AWS API Documentation
773
+ #
774
+ # @overload start_snapshot(params = {})
775
+ # @param [Hash] params ({})
776
+ def start_snapshot(params = {}, options = {})
777
+ req = build_request(:start_snapshot, params)
778
+ req.send_request(options)
779
+ end
780
+
487
781
  # @!endgroup
488
782
 
489
783
  # @param params ({})
@@ -497,7 +791,7 @@ module Aws::EBS
497
791
  params: params,
498
792
  config: config)
499
793
  context[:gem_name] = 'aws-sdk-ebs'
500
- context[:gem_version] = '1.6.0'
794
+ context[:gem_version] = '1.7.0'
501
795
  Seahorse::Client::Request.new(handlers, context)
502
796
  end
503
797
 
@@ -13,33 +13,67 @@ module Aws::EBS
13
13
 
14
14
  include Seahorse::Model
15
15
 
16
+ AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException')
17
+ AccessDeniedExceptionReason = Shapes::StringShape.new(name: 'AccessDeniedExceptionReason')
16
18
  Block = Shapes::StructureShape.new(name: 'Block')
17
19
  BlockData = Shapes::BlobShape.new(name: 'BlockData', streaming: true)
18
20
  BlockIndex = Shapes::IntegerShape.new(name: 'BlockIndex')
19
21
  BlockSize = Shapes::IntegerShape.new(name: 'BlockSize')
20
22
  BlockToken = Shapes::StringShape.new(name: 'BlockToken')
21
23
  Blocks = Shapes::ListShape.new(name: 'Blocks')
24
+ Boolean = Shapes::BooleanShape.new(name: 'Boolean')
22
25
  ChangedBlock = Shapes::StructureShape.new(name: 'ChangedBlock')
23
26
  ChangedBlocks = Shapes::ListShape.new(name: 'ChangedBlocks')
27
+ ChangedBlocksCount = Shapes::IntegerShape.new(name: 'ChangedBlocksCount')
24
28
  Checksum = Shapes::StringShape.new(name: 'Checksum')
29
+ ChecksumAggregationMethod = Shapes::StringShape.new(name: 'ChecksumAggregationMethod')
25
30
  ChecksumAlgorithm = Shapes::StringShape.new(name: 'ChecksumAlgorithm')
31
+ CompleteSnapshotRequest = Shapes::StructureShape.new(name: 'CompleteSnapshotRequest')
32
+ CompleteSnapshotResponse = Shapes::StructureShape.new(name: 'CompleteSnapshotResponse')
33
+ ConcurrentLimitExceededException = Shapes::StructureShape.new(name: 'ConcurrentLimitExceededException')
34
+ ConflictException = Shapes::StructureShape.new(name: 'ConflictException')
26
35
  DataLength = Shapes::IntegerShape.new(name: 'DataLength')
36
+ Description = Shapes::StringShape.new(name: 'Description')
27
37
  ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage')
28
38
  GetSnapshotBlockRequest = Shapes::StructureShape.new(name: 'GetSnapshotBlockRequest')
29
39
  GetSnapshotBlockResponse = Shapes::StructureShape.new(name: 'GetSnapshotBlockResponse')
40
+ IdempotencyToken = Shapes::StringShape.new(name: 'IdempotencyToken')
41
+ InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException')
42
+ KmsKeyArn = Shapes::StringShape.new(name: 'KmsKeyArn')
30
43
  ListChangedBlocksRequest = Shapes::StructureShape.new(name: 'ListChangedBlocksRequest')
31
44
  ListChangedBlocksResponse = Shapes::StructureShape.new(name: 'ListChangedBlocksResponse')
32
45
  ListSnapshotBlocksRequest = Shapes::StructureShape.new(name: 'ListSnapshotBlocksRequest')
33
46
  ListSnapshotBlocksResponse = Shapes::StructureShape.new(name: 'ListSnapshotBlocksResponse')
34
47
  MaxResults = Shapes::IntegerShape.new(name: 'MaxResults')
48
+ OwnerId = Shapes::StringShape.new(name: 'OwnerId')
35
49
  PageToken = Shapes::StringShape.new(name: 'PageToken')
50
+ Progress = Shapes::IntegerShape.new(name: 'Progress')
51
+ PutSnapshotBlockRequest = Shapes::StructureShape.new(name: 'PutSnapshotBlockRequest')
52
+ PutSnapshotBlockResponse = Shapes::StructureShape.new(name: 'PutSnapshotBlockResponse')
53
+ RequestThrottledException = Shapes::StructureShape.new(name: 'RequestThrottledException')
54
+ RequestThrottledExceptionReason = Shapes::StringShape.new(name: 'RequestThrottledExceptionReason')
36
55
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
56
+ ResourceNotFoundExceptionReason = Shapes::StringShape.new(name: 'ResourceNotFoundExceptionReason')
57
+ ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException')
58
+ ServiceQuotaExceededExceptionReason = Shapes::StringShape.new(name: 'ServiceQuotaExceededExceptionReason')
37
59
  SnapshotId = Shapes::StringShape.new(name: 'SnapshotId')
60
+ StartSnapshotRequest = Shapes::StructureShape.new(name: 'StartSnapshotRequest')
61
+ StartSnapshotResponse = Shapes::StructureShape.new(name: 'StartSnapshotResponse')
62
+ Status = Shapes::StringShape.new(name: 'Status')
63
+ Tag = Shapes::StructureShape.new(name: 'Tag')
64
+ TagKey = Shapes::StringShape.new(name: 'TagKey')
65
+ TagValue = Shapes::StringShape.new(name: 'TagValue')
66
+ Tags = Shapes::ListShape.new(name: 'Tags')
38
67
  TimeStamp = Shapes::TimestampShape.new(name: 'TimeStamp')
68
+ Timeout = Shapes::IntegerShape.new(name: 'Timeout')
39
69
  ValidationException = Shapes::StructureShape.new(name: 'ValidationException')
40
70
  ValidationExceptionReason = Shapes::StringShape.new(name: 'ValidationExceptionReason')
41
71
  VolumeSize = Shapes::IntegerShape.new(name: 'VolumeSize')
42
72
 
73
+ AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
74
+ AccessDeniedException.add_member(:reason, Shapes::ShapeRef.new(shape: AccessDeniedExceptionReason, required: true, location_name: "Reason"))
75
+ AccessDeniedException.struct_class = Types::AccessDeniedException
76
+
43
77
  Block.add_member(:block_index, Shapes::ShapeRef.new(shape: BlockIndex, location_name: "BlockIndex"))
44
78
  Block.add_member(:block_token, Shapes::ShapeRef.new(shape: BlockToken, location_name: "BlockToken"))
45
79
  Block.struct_class = Types::Block
@@ -53,6 +87,22 @@ module Aws::EBS
53
87
 
54
88
  ChangedBlocks.member = Shapes::ShapeRef.new(shape: ChangedBlock)
55
89
 
90
+ CompleteSnapshotRequest.add_member(:snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, required: true, location: "uri", location_name: "snapshotId"))
91
+ CompleteSnapshotRequest.add_member(:changed_blocks_count, Shapes::ShapeRef.new(shape: ChangedBlocksCount, required: true, location: "header", location_name: "x-amz-ChangedBlocksCount"))
92
+ CompleteSnapshotRequest.add_member(:checksum, Shapes::ShapeRef.new(shape: Checksum, location: "header", location_name: "x-amz-Checksum"))
93
+ CompleteSnapshotRequest.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location: "header", location_name: "x-amz-Checksum-Algorithm"))
94
+ CompleteSnapshotRequest.add_member(:checksum_aggregation_method, Shapes::ShapeRef.new(shape: ChecksumAggregationMethod, location: "header", location_name: "x-amz-Checksum-Aggregation-Method"))
95
+ CompleteSnapshotRequest.struct_class = Types::CompleteSnapshotRequest
96
+
97
+ CompleteSnapshotResponse.add_member(:status, Shapes::ShapeRef.new(shape: Status, location_name: "Status"))
98
+ CompleteSnapshotResponse.struct_class = Types::CompleteSnapshotResponse
99
+
100
+ ConcurrentLimitExceededException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
101
+ ConcurrentLimitExceededException.struct_class = Types::ConcurrentLimitExceededException
102
+
103
+ ConflictException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
104
+ ConflictException.struct_class = Types::ConflictException
105
+
56
106
  GetSnapshotBlockRequest.add_member(:snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, required: true, location: "uri", location_name: "snapshotId"))
57
107
  GetSnapshotBlockRequest.add_member(:block_index, Shapes::ShapeRef.new(shape: BlockIndex, required: true, location: "uri", location_name: "blockIndex"))
58
108
  GetSnapshotBlockRequest.add_member(:block_token, Shapes::ShapeRef.new(shape: BlockToken, required: true, location: "querystring", location_name: "blockToken"))
@@ -66,6 +116,9 @@ module Aws::EBS
66
116
  GetSnapshotBlockResponse[:payload] = :block_data
67
117
  GetSnapshotBlockResponse[:payload_member] = GetSnapshotBlockResponse.member(:block_data)
68
118
 
119
+ InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
120
+ InternalServerException.struct_class = Types::InternalServerException
121
+
69
122
  ListChangedBlocksRequest.add_member(:first_snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, location: "querystring", location_name: "firstSnapshotId"))
70
123
  ListChangedBlocksRequest.add_member(:second_snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, required: true, location: "uri", location_name: "secondSnapshotId"))
71
124
  ListChangedBlocksRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PageToken, location: "querystring", location_name: "pageToken"))
@@ -93,9 +146,61 @@ module Aws::EBS
93
146
  ListSnapshotBlocksResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PageToken, location_name: "NextToken"))
94
147
  ListSnapshotBlocksResponse.struct_class = Types::ListSnapshotBlocksResponse
95
148
 
149
+ PutSnapshotBlockRequest.add_member(:snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, required: true, location: "uri", location_name: "snapshotId"))
150
+ PutSnapshotBlockRequest.add_member(:block_index, Shapes::ShapeRef.new(shape: BlockIndex, required: true, location: "uri", location_name: "blockIndex"))
151
+ PutSnapshotBlockRequest.add_member(:block_data, Shapes::ShapeRef.new(shape: BlockData, required: true, location_name: "BlockData"))
152
+ PutSnapshotBlockRequest.add_member(:data_length, Shapes::ShapeRef.new(shape: DataLength, required: true, location: "header", location_name: "x-amz-Data-Length"))
153
+ PutSnapshotBlockRequest.add_member(:progress, Shapes::ShapeRef.new(shape: Progress, location: "header", location_name: "x-amz-Progress"))
154
+ PutSnapshotBlockRequest.add_member(:checksum, Shapes::ShapeRef.new(shape: Checksum, required: true, location: "header", location_name: "x-amz-Checksum"))
155
+ PutSnapshotBlockRequest.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, required: true, location: "header", location_name: "x-amz-Checksum-Algorithm"))
156
+ PutSnapshotBlockRequest.struct_class = Types::PutSnapshotBlockRequest
157
+ PutSnapshotBlockRequest[:payload] = :block_data
158
+ PutSnapshotBlockRequest[:payload_member] = PutSnapshotBlockRequest.member(:block_data)
159
+
160
+ PutSnapshotBlockResponse.add_member(:checksum, Shapes::ShapeRef.new(shape: Checksum, location: "header", location_name: "x-amz-Checksum"))
161
+ PutSnapshotBlockResponse.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location: "header", location_name: "x-amz-Checksum-Algorithm"))
162
+ PutSnapshotBlockResponse.struct_class = Types::PutSnapshotBlockResponse
163
+
164
+ RequestThrottledException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
165
+ RequestThrottledException.add_member(:reason, Shapes::ShapeRef.new(shape: RequestThrottledExceptionReason, location_name: "Reason"))
166
+ RequestThrottledException.struct_class = Types::RequestThrottledException
167
+
96
168
  ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
169
+ ResourceNotFoundException.add_member(:reason, Shapes::ShapeRef.new(shape: ResourceNotFoundExceptionReason, location_name: "Reason"))
97
170
  ResourceNotFoundException.struct_class = Types::ResourceNotFoundException
98
171
 
172
+ ServiceQuotaExceededException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
173
+ ServiceQuotaExceededException.add_member(:reason, Shapes::ShapeRef.new(shape: ServiceQuotaExceededExceptionReason, location_name: "Reason"))
174
+ ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException
175
+
176
+ StartSnapshotRequest.add_member(:volume_size, Shapes::ShapeRef.new(shape: VolumeSize, required: true, location_name: "VolumeSize"))
177
+ StartSnapshotRequest.add_member(:parent_snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, location_name: "ParentSnapshotId"))
178
+ StartSnapshotRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "Tags"))
179
+ StartSnapshotRequest.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "Description"))
180
+ StartSnapshotRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: IdempotencyToken, location_name: "ClientToken", metadata: {"idempotencyToken"=>true}))
181
+ StartSnapshotRequest.add_member(:encrypted, Shapes::ShapeRef.new(shape: Boolean, location_name: "Encrypted"))
182
+ StartSnapshotRequest.add_member(:kms_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "KmsKeyArn"))
183
+ StartSnapshotRequest.add_member(:timeout, Shapes::ShapeRef.new(shape: Timeout, location_name: "Timeout"))
184
+ StartSnapshotRequest.struct_class = Types::StartSnapshotRequest
185
+
186
+ StartSnapshotResponse.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "Description"))
187
+ StartSnapshotResponse.add_member(:snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, location_name: "SnapshotId"))
188
+ StartSnapshotResponse.add_member(:owner_id, Shapes::ShapeRef.new(shape: OwnerId, location_name: "OwnerId"))
189
+ StartSnapshotResponse.add_member(:status, Shapes::ShapeRef.new(shape: Status, location_name: "Status"))
190
+ StartSnapshotResponse.add_member(:start_time, Shapes::ShapeRef.new(shape: TimeStamp, location_name: "StartTime"))
191
+ StartSnapshotResponse.add_member(:volume_size, Shapes::ShapeRef.new(shape: VolumeSize, location_name: "VolumeSize"))
192
+ StartSnapshotResponse.add_member(:block_size, Shapes::ShapeRef.new(shape: BlockSize, location_name: "BlockSize"))
193
+ StartSnapshotResponse.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "Tags"))
194
+ StartSnapshotResponse.add_member(:parent_snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, location_name: "ParentSnapshotId"))
195
+ StartSnapshotResponse.add_member(:kms_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "KmsKeyArn"))
196
+ StartSnapshotResponse.struct_class = Types::StartSnapshotResponse
197
+
198
+ Tag.add_member(:key, Shapes::ShapeRef.new(shape: TagKey, location_name: "Key"))
199
+ Tag.add_member(:value, Shapes::ShapeRef.new(shape: TagValue, location_name: "Value"))
200
+ Tag.struct_class = Types::Tag
201
+
202
+ Tags.member = Shapes::ShapeRef.new(shape: Tag)
203
+
99
204
  ValidationException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
100
205
  ValidationException.add_member(:reason, Shapes::ShapeRef.new(shape: ValidationExceptionReason, location_name: "Reason"))
101
206
  ValidationException.struct_class = Types::ValidationException
@@ -118,14 +223,32 @@ module Aws::EBS
118
223
  "uid" => "ebs-2019-11-02",
119
224
  }
120
225
 
226
+ api.add_operation(:complete_snapshot, Seahorse::Model::Operation.new.tap do |o|
227
+ o.name = "CompleteSnapshot"
228
+ o.http_method = "POST"
229
+ o.http_request_uri = "/snapshots/completion/{snapshotId}"
230
+ o.input = Shapes::ShapeRef.new(shape: CompleteSnapshotRequest)
231
+ o.output = Shapes::ShapeRef.new(shape: CompleteSnapshotResponse)
232
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
233
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
234
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
235
+ o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
236
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
237
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
238
+ end)
239
+
121
240
  api.add_operation(:get_snapshot_block, Seahorse::Model::Operation.new.tap do |o|
122
241
  o.name = "GetSnapshotBlock"
123
242
  o.http_method = "GET"
124
243
  o.http_request_uri = "/snapshots/{snapshotId}/blocks/{blockIndex}"
125
244
  o.input = Shapes::ShapeRef.new(shape: GetSnapshotBlockRequest)
126
245
  o.output = Shapes::ShapeRef.new(shape: GetSnapshotBlockResponse)
246
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
127
247
  o.errors << Shapes::ShapeRef.new(shape: ValidationException)
128
248
  o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
249
+ o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
250
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
251
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
129
252
  end)
130
253
 
131
254
  api.add_operation(:list_changed_blocks, Seahorse::Model::Operation.new.tap do |o|
@@ -134,8 +257,12 @@ module Aws::EBS
134
257
  o.http_request_uri = "/snapshots/{secondSnapshotId}/changedblocks"
135
258
  o.input = Shapes::ShapeRef.new(shape: ListChangedBlocksRequest)
136
259
  o.output = Shapes::ShapeRef.new(shape: ListChangedBlocksResponse)
260
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
137
261
  o.errors << Shapes::ShapeRef.new(shape: ValidationException)
138
262
  o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
263
+ o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
264
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
265
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
139
266
  o[:pager] = Aws::Pager.new(
140
267
  limit_key: "max_results",
141
268
  tokens: {
@@ -150,8 +277,12 @@ module Aws::EBS
150
277
  o.http_request_uri = "/snapshots/{snapshotId}/blocks"
151
278
  o.input = Shapes::ShapeRef.new(shape: ListSnapshotBlocksRequest)
152
279
  o.output = Shapes::ShapeRef.new(shape: ListSnapshotBlocksResponse)
280
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
153
281
  o.errors << Shapes::ShapeRef.new(shape: ValidationException)
154
282
  o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
283
+ o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
284
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
285
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
155
286
  o[:pager] = Aws::Pager.new(
156
287
  limit_key: "max_results",
157
288
  tokens: {
@@ -159,6 +290,37 @@ module Aws::EBS
159
290
  }
160
291
  )
161
292
  end)
293
+
294
+ api.add_operation(:put_snapshot_block, Seahorse::Model::Operation.new.tap do |o|
295
+ o.name = "PutSnapshotBlock"
296
+ o.http_method = "PUT"
297
+ o.http_request_uri = "/snapshots/{snapshotId}/blocks/{blockIndex}"
298
+ o['authtype'] = "v4-unsigned-body"
299
+ o.input = Shapes::ShapeRef.new(shape: PutSnapshotBlockRequest)
300
+ o.output = Shapes::ShapeRef.new(shape: PutSnapshotBlockResponse)
301
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
302
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
303
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
304
+ o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
305
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
306
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
307
+ end)
308
+
309
+ api.add_operation(:start_snapshot, Seahorse::Model::Operation.new.tap do |o|
310
+ o.name = "StartSnapshot"
311
+ o.http_method = "POST"
312
+ o.http_request_uri = "/snapshots"
313
+ o.input = Shapes::ShapeRef.new(shape: StartSnapshotRequest)
314
+ o.output = Shapes::ShapeRef.new(shape: StartSnapshotResponse)
315
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
316
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
317
+ o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
318
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
319
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
320
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
321
+ o.errors << Shapes::ShapeRef.new(shape: ConcurrentLimitExceededException)
322
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
323
+ end)
162
324
  end
163
325
 
164
326
  end
@@ -27,7 +27,13 @@ module Aws::EBS
27
27
  # See {Seahorse::Client::RequestContext} for more information.
28
28
  #
29
29
  # ## Error Classes
30
+ # * {AccessDeniedException}
31
+ # * {ConcurrentLimitExceededException}
32
+ # * {ConflictException}
33
+ # * {InternalServerException}
34
+ # * {RequestThrottledException}
30
35
  # * {ResourceNotFoundException}
36
+ # * {ServiceQuotaExceededException}
31
37
  # * {ValidationException}
32
38
  #
33
39
  # Additionally, error classes are dynamically generated for service errors based on the error code
@@ -36,6 +42,91 @@ module Aws::EBS
36
42
 
37
43
  extend Aws::Errors::DynamicErrors
38
44
 
45
+ class AccessDeniedException < ServiceError
46
+
47
+ # @param [Seahorse::Client::RequestContext] context
48
+ # @param [String] message
49
+ # @param [Aws::EBS::Types::AccessDeniedException] data
50
+ def initialize(context, message, data = Aws::EmptyStructure.new)
51
+ super(context, message, data)
52
+ end
53
+
54
+ # @return [String]
55
+ def message
56
+ @message || @data[:message]
57
+ end
58
+
59
+ # @return [String]
60
+ def reason
61
+ @data[:reason]
62
+ end
63
+ end
64
+
65
+ class ConcurrentLimitExceededException < ServiceError
66
+
67
+ # @param [Seahorse::Client::RequestContext] context
68
+ # @param [String] message
69
+ # @param [Aws::EBS::Types::ConcurrentLimitExceededException] data
70
+ def initialize(context, message, data = Aws::EmptyStructure.new)
71
+ super(context, message, data)
72
+ end
73
+
74
+ # @return [String]
75
+ def message
76
+ @message || @data[:message]
77
+ end
78
+ end
79
+
80
+ class ConflictException < ServiceError
81
+
82
+ # @param [Seahorse::Client::RequestContext] context
83
+ # @param [String] message
84
+ # @param [Aws::EBS::Types::ConflictException] data
85
+ def initialize(context, message, data = Aws::EmptyStructure.new)
86
+ super(context, message, data)
87
+ end
88
+
89
+ # @return [String]
90
+ def message
91
+ @message || @data[:message]
92
+ end
93
+ end
94
+
95
+ class InternalServerException < ServiceError
96
+
97
+ # @param [Seahorse::Client::RequestContext] context
98
+ # @param [String] message
99
+ # @param [Aws::EBS::Types::InternalServerException] data
100
+ def initialize(context, message, data = Aws::EmptyStructure.new)
101
+ super(context, message, data)
102
+ end
103
+
104
+ # @return [String]
105
+ def message
106
+ @message || @data[:message]
107
+ end
108
+ end
109
+
110
+ class RequestThrottledException < ServiceError
111
+
112
+ # @param [Seahorse::Client::RequestContext] context
113
+ # @param [String] message
114
+ # @param [Aws::EBS::Types::RequestThrottledException] data
115
+ def initialize(context, message, data = Aws::EmptyStructure.new)
116
+ super(context, message, data)
117
+ end
118
+
119
+ # @return [String]
120
+ def message
121
+ @message || @data[:message]
122
+ end
123
+
124
+ # @return [String]
125
+ def reason
126
+ @data[:reason]
127
+ end
128
+ end
129
+
39
130
  class ResourceNotFoundException < ServiceError
40
131
 
41
132
  # @param [Seahorse::Client::RequestContext] context
@@ -49,6 +140,31 @@ module Aws::EBS
49
140
  def message
50
141
  @message || @data[:message]
51
142
  end
143
+
144
+ # @return [String]
145
+ def reason
146
+ @data[:reason]
147
+ end
148
+ end
149
+
150
+ class ServiceQuotaExceededException < ServiceError
151
+
152
+ # @param [Seahorse::Client::RequestContext] context
153
+ # @param [String] message
154
+ # @param [Aws::EBS::Types::ServiceQuotaExceededException] data
155
+ def initialize(context, message, data = Aws::EmptyStructure.new)
156
+ super(context, message, data)
157
+ end
158
+
159
+ # @return [String]
160
+ def message
161
+ @message || @data[:message]
162
+ end
163
+
164
+ # @return [String]
165
+ def reason
166
+ @data[:reason]
167
+ end
52
168
  end
53
169
 
54
170
  class ValidationException < ServiceError
@@ -10,6 +10,24 @@
10
10
  module Aws::EBS
11
11
  module Types
12
12
 
13
+ # You do not have sufficient access to perform this action.
14
+ #
15
+ # @!attribute [rw] message
16
+ # @return [String]
17
+ #
18
+ # @!attribute [rw] reason
19
+ # The reason for the exception.
20
+ # @return [String]
21
+ #
22
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/AccessDeniedException AWS API Documentation
23
+ #
24
+ class AccessDeniedException < Struct.new(
25
+ :message,
26
+ :reason)
27
+ SENSITIVE = []
28
+ include Aws::Structure
29
+ end
30
+
13
31
  # A block of data in an Amazon Elastic Block Store snapshot.
14
32
  #
15
33
  # @!attribute [rw] block_index
@@ -58,6 +76,103 @@ module Aws::EBS
58
76
  include Aws::Structure
59
77
  end
60
78
 
79
+ # @note When making an API call, you may pass CompleteSnapshotRequest
80
+ # data as a hash:
81
+ #
82
+ # {
83
+ # snapshot_id: "SnapshotId", # required
84
+ # changed_blocks_count: 1, # required
85
+ # checksum: "Checksum",
86
+ # checksum_algorithm: "SHA256", # accepts SHA256
87
+ # checksum_aggregation_method: "LINEAR", # accepts LINEAR
88
+ # }
89
+ #
90
+ # @!attribute [rw] snapshot_id
91
+ # The ID of the snapshot.
92
+ # @return [String]
93
+ #
94
+ # @!attribute [rw] changed_blocks_count
95
+ # The number of blocks that were written to the snapshot.
96
+ # @return [Integer]
97
+ #
98
+ # @!attribute [rw] checksum
99
+ # An aggregated Base-64 SHA256 checksum based on the checksums of each
100
+ # written block.
101
+ #
102
+ # To generate the aggregated checksum using the linear aggregation
103
+ # method, arrange the checksums for each written block in ascending
104
+ # order of their block index, concatenate them to form a single
105
+ # string, and then generate the checksum on the entire string using
106
+ # the SHA256 algorithm.
107
+ # @return [String]
108
+ #
109
+ # @!attribute [rw] checksum_algorithm
110
+ # The algorithm used to generate the checksum. Currently, the only
111
+ # supported algorithm is `SHA256`.
112
+ # @return [String]
113
+ #
114
+ # @!attribute [rw] checksum_aggregation_method
115
+ # The aggregation method used to generate the checksum. Currently, the
116
+ # only supported aggregation method is `LINEAR`.
117
+ # @return [String]
118
+ #
119
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/CompleteSnapshotRequest AWS API Documentation
120
+ #
121
+ class CompleteSnapshotRequest < Struct.new(
122
+ :snapshot_id,
123
+ :changed_blocks_count,
124
+ :checksum,
125
+ :checksum_algorithm,
126
+ :checksum_aggregation_method)
127
+ SENSITIVE = []
128
+ include Aws::Structure
129
+ end
130
+
131
+ # @!attribute [rw] status
132
+ # The status of the snapshot.
133
+ # @return [String]
134
+ #
135
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/CompleteSnapshotResponse AWS API Documentation
136
+ #
137
+ class CompleteSnapshotResponse < Struct.new(
138
+ :status)
139
+ SENSITIVE = []
140
+ include Aws::Structure
141
+ end
142
+
143
+ # You have reached the limit for concurrent API requests. For more
144
+ # information, see [Optimizing performance of the EBS direct APIs][1] in
145
+ # the *Amazon Elastic Compute Cloud User Guide*.
146
+ #
147
+ #
148
+ #
149
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapi-performance
150
+ #
151
+ # @!attribute [rw] message
152
+ # @return [String]
153
+ #
154
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/ConcurrentLimitExceededException AWS API Documentation
155
+ #
156
+ class ConcurrentLimitExceededException < Struct.new(
157
+ :message)
158
+ SENSITIVE = []
159
+ include Aws::Structure
160
+ end
161
+
162
+ # The request uses the same client token as a previous, but
163
+ # non-identical request.
164
+ #
165
+ # @!attribute [rw] message
166
+ # @return [String]
167
+ #
168
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/ConflictException AWS API Documentation
169
+ #
170
+ class ConflictException < Struct.new(
171
+ :message)
172
+ SENSITIVE = []
173
+ include Aws::Structure
174
+ end
175
+
61
176
  # @note When making an API call, you may pass GetSnapshotBlockRequest
62
177
  # data as a hash:
63
178
  #
@@ -123,6 +238,19 @@ module Aws::EBS
123
238
  include Aws::Structure
124
239
  end
125
240
 
241
+ # An internal error has occurred.
242
+ #
243
+ # @!attribute [rw] message
244
+ # @return [String]
245
+ #
246
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/InternalServerException AWS API Documentation
247
+ #
248
+ class InternalServerException < Struct.new(
249
+ :message)
250
+ SENSITIVE = []
251
+ include Aws::Structure
252
+ end
253
+
126
254
  # @note When making an API call, you may pass ListChangedBlocksRequest
127
255
  # data as a hash:
128
256
  #
@@ -281,15 +409,381 @@ module Aws::EBS
281
409
  include Aws::Structure
282
410
  end
283
411
 
412
+ # @note When making an API call, you may pass PutSnapshotBlockRequest
413
+ # data as a hash:
414
+ #
415
+ # {
416
+ # snapshot_id: "SnapshotId", # required
417
+ # block_index: 1, # required
418
+ # block_data: "data", # required
419
+ # data_length: 1, # required
420
+ # progress: 1,
421
+ # checksum: "Checksum", # required
422
+ # checksum_algorithm: "SHA256", # required, accepts SHA256
423
+ # }
424
+ #
425
+ # @!attribute [rw] snapshot_id
426
+ # The ID of the snapshot.
427
+ # @return [String]
428
+ #
429
+ # @!attribute [rw] block_index
430
+ # The block index of the block in which to write the data. A block
431
+ # index is the offset position of a block within a snapshot, and it is
432
+ # used to identify the block. To identify the logical offset of the
433
+ # data in the logical volume, multiply the block index with the block
434
+ # size (Block index * 512 bytes).
435
+ # @return [Integer]
436
+ #
437
+ # @!attribute [rw] block_data
438
+ # The data to write to the block.
439
+ #
440
+ # The block data is not signed as part of the Signature Version 4
441
+ # signing process. As a result, you must generate and provide a
442
+ # Base64-encoded SHA256 checksum for the block data using the
443
+ # **x-amz-Checksum** header. Also, you must specify the checksum
444
+ # algorithm using the **x-amz-Checksum-Algorithm** header. The
445
+ # checksum that you provide is part of the Signature Version 4 signing
446
+ # process. It is validated against a checksum generated by Amazon EBS
447
+ # to ensure the validity and authenticity of the data. If the
448
+ # checksums do not correspond, the request fails. For more
449
+ # information, see [ Using checksums with the EBS direct APIs][1] in
450
+ # the *Amazon Elastic Compute Cloud User Guide*.
451
+ #
452
+ #
453
+ #
454
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums
455
+ # @return [IO]
456
+ #
457
+ # @!attribute [rw] data_length
458
+ # The size of the data to write to the block, in bytes. Currently, the
459
+ # only supported size is `524288`.
460
+ #
461
+ # Valid values: `524288`
462
+ # @return [Integer]
463
+ #
464
+ # @!attribute [rw] progress
465
+ # The progress of the write process, as a percentage.
466
+ # @return [Integer]
467
+ #
468
+ # @!attribute [rw] checksum
469
+ # A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums
470
+ # are supported.
471
+ # @return [String]
472
+ #
473
+ # @!attribute [rw] checksum_algorithm
474
+ # The algorithm used to generate the checksum. Currently, the only
475
+ # supported algorithm is `SHA256`.
476
+ # @return [String]
477
+ #
478
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/PutSnapshotBlockRequest AWS API Documentation
479
+ #
480
+ class PutSnapshotBlockRequest < Struct.new(
481
+ :snapshot_id,
482
+ :block_index,
483
+ :block_data,
484
+ :data_length,
485
+ :progress,
486
+ :checksum,
487
+ :checksum_algorithm)
488
+ SENSITIVE = [:block_data]
489
+ include Aws::Structure
490
+ end
491
+
492
+ # @!attribute [rw] checksum
493
+ # The SHA256 checksum generated for the block data by Amazon EBS.
494
+ # @return [String]
495
+ #
496
+ # @!attribute [rw] checksum_algorithm
497
+ # The algorithm used by Amazon EBS to generate the checksum.
498
+ # @return [String]
499
+ #
500
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/PutSnapshotBlockResponse AWS API Documentation
501
+ #
502
+ class PutSnapshotBlockResponse < Struct.new(
503
+ :checksum,
504
+ :checksum_algorithm)
505
+ SENSITIVE = []
506
+ include Aws::Structure
507
+ end
508
+
509
+ # The number of API requests has exceed the maximum allowed API request
510
+ # throttling limit.
511
+ #
512
+ # @!attribute [rw] message
513
+ # @return [String]
514
+ #
515
+ # @!attribute [rw] reason
516
+ # The reason for the exception.
517
+ # @return [String]
518
+ #
519
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/RequestThrottledException AWS API Documentation
520
+ #
521
+ class RequestThrottledException < Struct.new(
522
+ :message,
523
+ :reason)
524
+ SENSITIVE = []
525
+ include Aws::Structure
526
+ end
527
+
284
528
  # The specified resource does not exist.
285
529
  #
286
530
  # @!attribute [rw] message
287
531
  # @return [String]
288
532
  #
533
+ # @!attribute [rw] reason
534
+ # The reason for the exception.
535
+ # @return [String]
536
+ #
289
537
  # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/ResourceNotFoundException AWS API Documentation
290
538
  #
291
539
  class ResourceNotFoundException < Struct.new(
292
- :message)
540
+ :message,
541
+ :reason)
542
+ SENSITIVE = []
543
+ include Aws::Structure
544
+ end
545
+
546
+ # Your current service quotas do not allow you to perform this action.
547
+ #
548
+ # @!attribute [rw] message
549
+ # @return [String]
550
+ #
551
+ # @!attribute [rw] reason
552
+ # The reason for the exception.
553
+ # @return [String]
554
+ #
555
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/ServiceQuotaExceededException AWS API Documentation
556
+ #
557
+ class ServiceQuotaExceededException < Struct.new(
558
+ :message,
559
+ :reason)
560
+ SENSITIVE = []
561
+ include Aws::Structure
562
+ end
563
+
564
+ # @note When making an API call, you may pass StartSnapshotRequest
565
+ # data as a hash:
566
+ #
567
+ # {
568
+ # volume_size: 1, # required
569
+ # parent_snapshot_id: "SnapshotId",
570
+ # tags: [
571
+ # {
572
+ # key: "TagKey",
573
+ # value: "TagValue",
574
+ # },
575
+ # ],
576
+ # description: "Description",
577
+ # client_token: "IdempotencyToken",
578
+ # encrypted: false,
579
+ # kms_key_arn: "KmsKeyArn",
580
+ # timeout: 1,
581
+ # }
582
+ #
583
+ # @!attribute [rw] volume_size
584
+ # The size of the volume, in GiB. The maximum size is `16384` GiB (16
585
+ # TiB).
586
+ # @return [Integer]
587
+ #
588
+ # @!attribute [rw] parent_snapshot_id
589
+ # The ID of the parent snapshot. If there is no parent snapshot, or if
590
+ # you are creating the first snapshot for an on-premises volume, omit
591
+ # this parameter.
592
+ #
593
+ # If your account is enabled for encryption by default, you cannot use
594
+ # an unencrypted snapshot as a parent snapshot. You must first create
595
+ # an encrypted copy of the parent snapshot using [CopySnapshot][1].
596
+ #
597
+ #
598
+ #
599
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html
600
+ # @return [String]
601
+ #
602
+ # @!attribute [rw] tags
603
+ # The tags to apply to the snapshot.
604
+ # @return [Array<Types::Tag>]
605
+ #
606
+ # @!attribute [rw] description
607
+ # A description for the snapshot.
608
+ # @return [String]
609
+ #
610
+ # @!attribute [rw] client_token
611
+ # A unique, case-sensitive identifier that you provide to ensure the
612
+ # idempotency of the request. Idempotency ensures that an API request
613
+ # completes only once. With an idempotent request, if the original
614
+ # request completes successfully. The subsequent retries with the same
615
+ # client token return the result from the original successful request
616
+ # and they have no additional effect.
617
+ #
618
+ # If you do not specify a client token, one is automatically generated
619
+ # by the AWS SDK.
620
+ #
621
+ # For more information, see [ Idempotency for StartSnapshot API][1] in
622
+ # the *Amazon Elastic Compute Cloud User Guide*.
623
+ #
624
+ # **A suitable default value is auto-generated.** You should normally
625
+ # not need to pass this option.
626
+ #
627
+ #
628
+ #
629
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html
630
+ # @return [String]
631
+ #
632
+ # @!attribute [rw] encrypted
633
+ # Indicates whether to encrypt the snapshot. To create an encrypted
634
+ # snapshot, specify `true`. To create an unencrypted snapshot, omit
635
+ # this parameter.
636
+ #
637
+ # If you specify a value for **ParentSnapshotId**, omit this
638
+ # parameter.
639
+ #
640
+ # If you specify `true`, the snapshot is encrypted using the CMK
641
+ # specified using the **KmsKeyArn** parameter. If no value is
642
+ # specified for **KmsKeyArn**, the default CMK for your account is
643
+ # used. If no default CMK has been specified for your account, the AWS
644
+ # managed CMK is used. To set a default CMK for your account, use [
645
+ # ModifyEbsDefaultKmsKeyId][1].
646
+ #
647
+ # If your account is enabled for encryption by default, you cannot set
648
+ # this parameter to `false`. In this case, you can omit this
649
+ # parameter.
650
+ #
651
+ # For more information, see [ Using encryption][2] in the *Amazon
652
+ # Elastic Compute Cloud User Guide*.
653
+ #
654
+ #
655
+ #
656
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html
657
+ # [2]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption
658
+ # @return [Boolean]
659
+ #
660
+ # @!attribute [rw] kms_key_arn
661
+ # The Amazon Resource Name (ARN) of the AWS Key Management Service
662
+ # (AWS KMS) customer master key (CMK) to be used to encrypt the
663
+ # snapshot. If you do not specify a CMK, the default AWS managed CMK
664
+ # is used.
665
+ #
666
+ # If you specify a **ParentSnapshotId**, omit this parameter; the
667
+ # snapshot will be encrypted using the same CMK that was used to
668
+ # encrypt the parent snapshot.
669
+ #
670
+ # If **Encrypted** is set to `true`, you must specify a CMK ARN.
671
+ # @return [String]
672
+ #
673
+ # @!attribute [rw] timeout
674
+ # The amount of time (in minutes) after which the snapshot is
675
+ # automatically cancelled if:
676
+ #
677
+ # * No blocks are written to the snapshot.
678
+ #
679
+ # * The snapshot is not completed after writing the last block of
680
+ # data.
681
+ #
682
+ # If no value is specified, the timeout defaults to `60` minutes.
683
+ # @return [Integer]
684
+ #
685
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/StartSnapshotRequest AWS API Documentation
686
+ #
687
+ class StartSnapshotRequest < Struct.new(
688
+ :volume_size,
689
+ :parent_snapshot_id,
690
+ :tags,
691
+ :description,
692
+ :client_token,
693
+ :encrypted,
694
+ :kms_key_arn,
695
+ :timeout)
696
+ SENSITIVE = [:kms_key_arn]
697
+ include Aws::Structure
698
+ end
699
+
700
+ # @!attribute [rw] description
701
+ # The description of the snapshot.
702
+ # @return [String]
703
+ #
704
+ # @!attribute [rw] snapshot_id
705
+ # The ID of the snapshot.
706
+ # @return [String]
707
+ #
708
+ # @!attribute [rw] owner_id
709
+ # The AWS account ID of the snapshot owner.
710
+ # @return [String]
711
+ #
712
+ # @!attribute [rw] status
713
+ # The status of the snapshot.
714
+ # @return [String]
715
+ #
716
+ # @!attribute [rw] start_time
717
+ # The timestamp when the snapshot was created.
718
+ # @return [Time]
719
+ #
720
+ # @!attribute [rw] volume_size
721
+ # The size of the volume, in GiB.
722
+ # @return [Integer]
723
+ #
724
+ # @!attribute [rw] block_size
725
+ # The size of the blocks in the snapshot, in bytes.
726
+ # @return [Integer]
727
+ #
728
+ # @!attribute [rw] tags
729
+ # The tags applied to the snapshot. You can specify up to 50 tags per
730
+ # snapshot. For more information, see [ Tagging your Amazon EC2
731
+ # resources][1] in the *Amazon Elastic Compute Cloud User Guide*.
732
+ #
733
+ #
734
+ #
735
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
736
+ # @return [Array<Types::Tag>]
737
+ #
738
+ # @!attribute [rw] parent_snapshot_id
739
+ # The ID of the parent snapshot.
740
+ # @return [String]
741
+ #
742
+ # @!attribute [rw] kms_key_arn
743
+ # The Amazon Resource Name (ARN) of the AWS Key Management Service
744
+ # (AWS KMS) customer master key (CMK) used to encrypt the snapshot.
745
+ # @return [String]
746
+ #
747
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/StartSnapshotResponse AWS API Documentation
748
+ #
749
+ class StartSnapshotResponse < Struct.new(
750
+ :description,
751
+ :snapshot_id,
752
+ :owner_id,
753
+ :status,
754
+ :start_time,
755
+ :volume_size,
756
+ :block_size,
757
+ :tags,
758
+ :parent_snapshot_id,
759
+ :kms_key_arn)
760
+ SENSITIVE = [:kms_key_arn]
761
+ include Aws::Structure
762
+ end
763
+
764
+ # Describes a tag.
765
+ #
766
+ # @note When making an API call, you may pass Tag
767
+ # data as a hash:
768
+ #
769
+ # {
770
+ # key: "TagKey",
771
+ # value: "TagValue",
772
+ # }
773
+ #
774
+ # @!attribute [rw] key
775
+ # The key of the tag.
776
+ # @return [String]
777
+ #
778
+ # @!attribute [rw] value
779
+ # The value of the tag.
780
+ # @return [String]
781
+ #
782
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/Tag AWS API Documentation
783
+ #
784
+ class Tag < Struct.new(
785
+ :key,
786
+ :value)
293
787
  SENSITIVE = []
294
788
  include Aws::Structure
295
789
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-ebs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.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-06-23 00:00:00.000000000 Z
11
+ date: 2020-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core