Class: AddyLambda::AWS
- Inherits:
-
Object
- Object
- AddyLambda::AWS
- Defined in:
- lib/addy_lambda/aws.rb
Overview
Common functionality for AWS related activities
Class Method Summary collapse
-
.copy_file_from_bucket_to_bucket(s3_client, src_bucket, src_key, dest_bucket, dest_key) ⇒ Object
s3_client = Aws::S3::Client.new.
-
.copy_file_from_s3(s3_client, bucket, key, destination) ⇒ Object
s3_client = Aws::S3::Client.new.
-
.generate_jwt(lambda_client, issuer, audience, expire, payload) ⇒ Object
NOTE: issuer AddyLambda::JwtIssuers::…, Audience AddyLambda::JwtAudiences::…
-
.get_ssm_value(ssm_client, path) ⇒ Object
ssm_client = Aws::SSM::Client.new.
-
.invoke_lambda(lambda_client, function_name, payload, syncronous: true) ⇒ Object
lambda_client = Aws::Lambda::Client.new.
-
.list_s3_files(s3_client, bucket, prefix, suffix) ⇒ Object
s3_client = Aws::S3::Client.new.
-
.post_slack_message(lambda_client, post_as_name, channel, message, emoji = ':tada', unfurl_links: false) ⇒ Object
lambda_client = Aws::Lambda::Client.new.
-
.save_file_to_s3(s3_client, file_location, bucket, key) ⇒ Object
s3_client = Aws::S3::Client.new.
-
.send_email(lambda_client, recipient_emails, from_name, from_email, subject, content_html) ⇒ Object
lambda_client = Aws::Lambda::Client.new.
- .validate_jwt(lambda_client, jwt) ⇒ Object
Class Method Details
.copy_file_from_bucket_to_bucket(s3_client, src_bucket, src_key, dest_bucket, dest_key) ⇒ Object
s3_client = Aws::S3::Client.new
56 57 58 |
# File 'lib/addy_lambda/aws.rb', line 56 def self.copy_file_from_bucket_to_bucket(s3_client, src_bucket, src_key, dest_bucket, dest_key) s3_client.copy_object(bucket: dest_bucket, copy_source: "/#{src_bucket}/#{src_key}", key: dest_key) end |
.copy_file_from_s3(s3_client, bucket, key, destination) ⇒ Object
s3_client = Aws::S3::Client.new
72 73 74 |
# File 'lib/addy_lambda/aws.rb', line 72 def self.copy_file_from_s3(s3_client, bucket, key, destination) s3_client.get_object({ bucket: bucket, key: key }, target: destination) end |
.generate_jwt(lambda_client, issuer, audience, expire, payload) ⇒ Object
NOTE: issuer AddyLambda::JwtIssuers::…, Audience AddyLambda::JwtAudiences::…
101 102 103 104 105 106 107 108 109 110 |
# File 'lib/addy_lambda/aws.rb', line 101 def self.generate_jwt(lambda_client, issuer, audience, expire, payload) lambda_payload = { 'issuer' => JWT_ISSUERS[issuer], 'audience' => JWT_AUDIENCES[audience], 'expire' => expire, 'payload' => payload } jwt_response = AddyLambda::AWS.invoke_lambda(lambda_client, 'jwt-generate', lambda_payload) jwt_response.key?('jwt') ? jwt_response['jwt'] : jwt_response end |
.get_ssm_value(ssm_client, path) ⇒ Object
ssm_client = Aws::SSM::Client.new
21 22 23 24 25 26 27 28 |
# File 'lib/addy_lambda/aws.rb', line 21 def self.get_ssm_value(ssm_client, path) request = { name: path, with_decryption: true } response = ssm_client.get_parameter(request) response.parameter.value end |
.invoke_lambda(lambda_client, function_name, payload, syncronous: true) ⇒ Object
lambda_client = Aws::Lambda::Client.new
31 32 33 34 35 36 37 38 |
# File 'lib/addy_lambda/aws.rb', line 31 def self.invoke_lambda(lambda_client, function_name, payload, syncronous: true) resp = lambda_client.invoke({ function_name: function_name, invocation_type: syncronous ? 'RequestResponse' : 'Event', payload: payload.to_json }) AddyLambda::Common.valid_json?(resp.payload.string) ? JSON.parse(resp.payload.string) : resp.payload.string end |
.list_s3_files(s3_client, bucket, prefix, suffix) ⇒ Object
s3_client = Aws::S3::Client.new
61 62 63 64 65 66 67 68 69 |
# File 'lib/addy_lambda/aws.rb', line 61 def self.list_s3_files(s3_client, bucket, prefix, suffix) files = [] objects = s3_client.list_objects_v2({ bucket: bucket, prefix: prefix }).contents objects.each do |o| key = o[:key] files << key if key.start_with?(prefix) && key.end_with?(suffix) end files end |
.post_slack_message(lambda_client, post_as_name, channel, message, emoji = ':tada', unfurl_links: false) ⇒ Object
lambda_client = Aws::Lambda::Client.new
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/addy_lambda/aws.rb', line 41 def self.(lambda_client, post_as_name, channel, , emoji = ':tada', unfurl_links: false) input_params = { 'user' => post_as_name, 'channel' => channel, 'message' => , 'emoji' => emoji, 'unfurl_links' => unfurl_links } response_body = AddyLambda::AWS.invoke_lambda(lambda_client, 'slack-client', input_params) return response_body unless response_body.key?('error') logger.error(response_body['error']) end |
.save_file_to_s3(s3_client, file_location, bucket, key) ⇒ Object
s3_client = Aws::S3::Client.new
77 78 79 80 81 82 |
# File 'lib/addy_lambda/aws.rb', line 77 def self.save_file_to_s3(s3_client, file_location, bucket, key) # Upload File.open(file_location, 'rb') do |file| s3_client.put_object(bucket: bucket, key: key, body: file) end end |
.send_email(lambda_client, recipient_emails, from_name, from_email, subject, content_html) ⇒ Object
lambda_client = Aws::Lambda::Client.new
85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/addy_lambda/aws.rb', line 85 def self.send_email(lambda_client, recipient_emails, from_name, from_email, subject, content_html) input_params = { 'recipient_list' => recipient_emails, 'from_name' => from_name, 'from_email' => from_email, 'subject' => subject, 'content_html' => content_html } response_body = AddyLambda::AWS.invoke_lambda(lambda_client, 'mailgun-client', input_params) return response_body unless response_body.key?('error') logger.error(response_body['error']) end |
.validate_jwt(lambda_client, jwt) ⇒ Object
112 113 114 115 116 117 118 |
# File 'lib/addy_lambda/aws.rb', line 112 def self.validate_jwt(lambda_client, jwt) lambda_payload = { 'jwt' => jwt } response = AddyLambda::AWS.invoke_lambda(lambda_client, 'jwt-validate', lambda_payload) response['statusCode'] == 200 ? JSON.parse(response['body']) : response end |