aws-sdk-ebs 1.6.0 → 1.7.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: 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