Module: Lambda::MicroVMs::Session

Defined in:
lib/lambda/microvms/session.rb

Overview

Convenience API for run/use/cleanup MicroVM sessions.

Class Method Summary collapse

Class Method Details

.cleanup(vm, after) ⇒ Object?

Apply a session cleanup policy to a MicroVM.

Parameters:

  • vm (MicroVM)

    MicroVM to clean up

  • after (Symbol, nil)

    cleanup policy

Returns:

  • (Object, nil)

    cleanup result

Raises:

  • (ArgumentError)

    when the policy is unknown



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/lambda/microvms/session.rb', line 32

def cleanup(vm, after) # rubocop:disable Naming/MethodParameterName
  case after
  when :keep, nil
    nil
  when :suspend
    vm.suspend
  when :terminate
    vm.terminate
  else
    raise ArgumentError, "unknown cleanup policy: #{after.inspect}"
  end
end

.session(image_arn:, role_arn:, after: :suspend, client: Client.new, **run_options) {|vm| ... } ⇒ Object

Run a MicroVM, wait for it, yield it, and then clean it up.

Parameters:

  • image_arn (String)

    MicroVM image ARN

  • role_arn (String)

    IAM role ARN for the MicroVM runtime

  • after (Symbol, nil) (defaults to: :suspend)

    cleanup policy: :suspend, :terminate, :keep, or nil

  • client (Client) (defaults to: Client.new)

    lifecycle client

  • run_options (Hash)

    additional run parameters

Yield Parameters:

Returns:

  • (Object)

    block result



18
19
20
21
22
23
24
# File 'lib/lambda/microvms/session.rb', line 18

def session(image_arn:, role_arn:, after: :suspend, client: Client.new, **run_options)
  vm = client.image(image_arn).run(role_arn: role_arn, **run_options)
  vm.wait_until_running
  yield vm
ensure
  cleanup(vm, after) if vm
end