class CfnVpn::Templates::Lambdas

Public Class Methods

package_lambda(name:, bucket:, func:, files:) click to toggle source
# File lib/cfnvpn/templates/lambdas.rb, line 10
def self.package_lambda(name:, bucket:, func:, files:)
  lambdas_dir = File.join(File.dirname(File.expand_path(__FILE__)), 'lambdas')
  FileUtils.mkdir_p(lambdas_dir)

  CfnVpn::Log.logger.debug "zipping lambda function #{func}"
  zipfile_name = "#{func}-#{SecureRandom.hex}.zip"
  zipfile_path = "#{CfnVpn.cfnvpn_path}/#{name}/lambdas"
  FileUtils.mkdir_p(zipfile_path)
  Zip::File.open("#{zipfile_path}/#{zipfile_name}", Zip::File::CREATE) do |zipfile|
    files.each do |file|
      zipfile.add(file, File.join("#{lambdas_dir}/#{func}", file))
    end
  end

  bucket = Aws::S3::Bucket.new(bucket)
  object = bucket.object("cfnvpn/lambdas/#{name}/#{zipfile_name}")
  CfnVpn::Log.logger.debug "uploading #{zipfile_name} to s3://#{bucket}/#{object.key}"
  object.upload_file("#{zipfile_path}/#{zipfile_name}")

  return object.key
end