def deploy(environment_options, client, region = 'AWS_REGION')
      super

      puts "Deploying Lambda: #{@lambda_name} to Environment: #{environment_options.name}"

      unless File.exist?(@path_to_zip_file)
        raise ArgumentError, "Deployment Package Zip File does not exist: #{@path_to_zip_file}!"
      end

      lambda_details = retrieve_lambda_details

      if lambda_details.nil?
        function_version = create_lambda
      else
        update_lambda_config
        function_version = update_lambda_code
      end

      create_alias(function_version, environment_options.name, environment_options.description)

      cleanup_unused_versions if @delete_unreferenced_versions

      puts "Lambda: #{@lambda_name} successfully deployed!"
      true
    end
def deploy(environment_options, client, region = 'AWS_REGION')
      super

      puts "Deploying Lambda: #{@lambda_name} to Environment: #{environment_options.name}"

      unless File.exist?(@path_to_zip_file)
        raise ArgumentError, "Deployment Package Zip File does not exist: #{@path_to_zip_file}!"
      end

      lambda_details = retrieve_lambda_details

      if lambda_details.nil?
        function_version = create_lambda
      else
        update_lambda_config
        function_version = update_lambda_code
      end

      create_alias(function_version, environment_options.name, environment_options.description)

      cleanup_unused_versions if @delete_unreferenced_versions

      puts "Lambda: #{@lambda_name} successfully deployed!"
      true
    end
Initializes a Lambda Manager. Frontloaded configuration.

 @param [Hash] options The Configuration for the Lambda
 @option options [String] :lambda_name The name you want to assign to the function you are uploading. The function
  names appear in the console and are returned in the ListFunctions API. Function names are used to specify
  functions to other AWS Lambda API operations, such as Invoke. Note that the length constraint applies only to
  the ARN. If you specify only the function name, it is limited to 64 characters in length.
 @option options [String] :handler The function within your code that Lambda calls to begin execution.
 @option options [String] :role_arn The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when it
  executes your function to access any other Amazon Web Services (AWS) resources.
 @option options [String] :path_to_zip_file The absolute path to the Deployment Package zip file
 @option options [String] :runtime The runtime environment for the Lambda function you are uploading.
 @option options [String] :description ('Deployed with LambdaWrap') A short, user-defined function description.
  Lambda does not use this value. Assign a meaningful description as you see fit.
 @option options [Integer] :timeout (30) The function execution time at which Lambda should terminate the function.
 @option options [Integer] :memory_size (128) The amount of memory, in MB, your Lambda function is given. Lambda
  uses this memory size to infer the amount of CPU and memory allocated to your function. The value must be a
  multiple of 64MB. Minimum: 128, Maximum: 3008.
 @option options [Array<String>] :subnet_ids ([]) If your Lambda function accesses resources in a VPC, you provide
  this parameter identifying the list of subnet IDs. These must belong to the same VPC. You must provide at least
  one security group and one subnet ID to configure VPC access.
 @option options [Array<String>] :security_group_ids ([]) If your Lambda function accesses resources in a VPC, you
  provide this parameter identifying the list of security group IDs. These must belong to the same VPC. You must
  provide at least one security group and one subnet ID.
 @option options [Boolean] :delete_unreferenced_versions (true) Option to delete any Lambda Function Versions upon
  deployment that do not have an alias pointing to them.
 @option options [String] :dead_letter_queue_arn ('') The ARN of the SQS Queue for failed async invocations.
 Deploys the Lambda to the specified Environment. Creates a Lambda Function if one didn't exist.
 Updates the Lambda's configuration, Updates the Lambda's Code, publishes a new version, and creates
 an alias that points to the newly published version. If the @delete_unreferenced_versions option
 is enabled, all Lambda Function versions that don't have an alias pointing to them will be deleted.

 @param environment_options [LambdaWrap::Environment] The target Environment to deploy
 @param client [Aws::Lambda::Client] Client to use with SDK. Should be passed in by the API class.
 @param region [String] AWS Region string. Should be passed in by the API class.