Sha256: b0238dc974347309900cacaca421b7c4dbefcbab79b957cbc2a86e706ed00c31

Contents?: true

Size: 1.92 KB

Versions: 65

Compression:

Stored size: 1.92 KB

Contents

# frozen_string_literal: true

require 'aws-sigv4'

module Aws
  module EC2
    module Plugins

      # This plugin auto populates the following request params for the
      # CopySnapshot API:
      #
      # * `:destination_region`
      # * `:presigned_url`
      #
      # These params are required by EC2 when copying an encrypted snapshot.
      # @api private
      class CopyEncryptedSnapshot < Seahorse::Client::Plugin

        # @api private
        class Handler < Seahorse::Client::Handler

          def call(context)
            params = context.params
            params[:destination_region] = context.config.region
            params[:presigned_url] = presigned_url(context, params)
            @handler.call(context)
          end

          private

          def presigned_url(context, params)
            param_list = Aws::Query::ParamList.new
            param_list.set('Action', 'CopySnapshot')
            param_list.set('DestinationRegion', context.config.region)
            param_list.set('Version', context.config.api.version)
            Aws::Query::EC2ParamBuilder.new(param_list).apply(context.operation.input, params)

            signer = Aws::Sigv4::Signer.new(
              service: 'ec2',
              region: params[:source_region],
              credentials_provider: context.config.credentials
            )
            url = Aws::Partitions::EndpointProvider.resolve(
              signer.region, 'ec2', 'regional',
              {
                dualstack: context.config.use_dualstack_endpoint,
                fips: context.config.use_fips_endpoint
              }
            )
            url += "?#{param_list.to_s}"

            signer.presign_url(
              http_method: 'GET',
              url: url,
              body: '',
              expires_in: 3600
            ).to_s
          end

        end

        handler(Handler, step: :initialize, operations: [:copy_snapshot])

      end
    end
  end
end

Version data entries

65 entries across 65 versions & 1 rubygems

Version Path
aws-sdk-ec2-1.341.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.340.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.339.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.338.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.337.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.336.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.335.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.334.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.333.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.332.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.331.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.330.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.329.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.328.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.327.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.326.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.325.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.324.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.323.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb
aws-sdk-ec2-1.322.0 lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb