Class: Kybus::AWS::LayerManager
- Inherits:
-
Object
- Object
- Kybus::AWS::LayerManager
- Defined in:
- lib/kybus/aws/layer_manager.rb
Instance Method Summary collapse
- #create_layer(zip_file, layer_name, zipfile_hash) ⇒ Object
- #create_or_update_layer(zip_file, layer_name, checksum_file) ⇒ Object
- #get_layer_arn(layer_name) ⇒ Object
-
#initialize(lambda_client, function_name) ⇒ LayerManager
constructor
A new instance of LayerManager.
- #layer_version_exists?(layer_name) ⇒ Boolean
Constructor Details
#initialize(lambda_client, function_name) ⇒ LayerManager
Returns a new instance of LayerManager.
17 18 19 20 |
# File 'lib/kybus/aws/layer_manager.rb', line 17 def initialize(lambda_client, function_name) @lambda_client = lambda_client @function_name = function_name end |
Instance Method Details
#create_layer(zip_file, layer_name, zipfile_hash) ⇒ Object
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/kybus/aws/layer_manager.rb', line 34 def create_layer(zip_file, layer_name, zipfile_hash) response = @lambda_client.publish_layer_version( layer_name:, content: { zip_file: File.read(zip_file) }, description: zipfile_hash, compatible_runtimes: ['ruby3.3'] ) puts "Layer '#{layer_name}' created: #{response.layer_version_arn}" response.layer_version_arn end |
#create_or_update_layer(zip_file, layer_name, checksum_file) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/kybus/aws/layer_manager.rb', line 22 def create_or_update_layer(zip_file, layer_name, checksum_file) layer_exists = layer_version_exists?(layer_name) zipfile_hash = calculate_md5(checksum_file) if !layer_exists || layer_exists.description != zipfile_hash create_layer(zip_file, layer_name, zipfile_hash) else puts "Layer unmodified: #{layer_name}" layer_exists.layer_version_arn end end |
#get_layer_arn(layer_name) ⇒ Object
52 53 54 55 |
# File 'lib/kybus/aws/layer_manager.rb', line 52 def get_layer_arn(layer_name) layer_version = layer_version_exists?(layer_name) layer_version&.layer_version_arn end |
#layer_version_exists?(layer_name) ⇒ Boolean
45 46 47 48 49 50 |
# File 'lib/kybus/aws/layer_manager.rb', line 45 def layer_version_exists?(layer_name) response = @lambda_client.list_layer_versions(layer_name:, max_items: 1) response.layer_versions.first rescue Aws::Lambda::Errors::ResourceNotFoundException nil end |