aws-sdk-rails 4.2.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/VERSION +1 -1
- data/lib/aws/rails/middleware/elastic_beanstalk_sqsd.rb +29 -22
- data/lib/aws/rails/notifications.rb +2 -1
- data/lib/aws/rails/railtie.rb +35 -73
- data/lib/aws-sdk-rails.rb +0 -16
- metadata +5 -62
- data/lib/aws/rails/action_mailbox/rspec.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7354b35727ee37128ccb8b13f94a4d0564518e02e1acaf87086a3664fbea719
|
4
|
+
data.tar.gz: 8c9aae1eb8fed5ee9c4dca9d74fadd95619a0d05c455c9164dca9310002199db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3c645120b3787a041900edd7365dec40d766807bc6c11fe81cd6788909d3f180c549fbd0e9071acfeefcd8608cc2e7d3d99f8f53d4ebf611742a33683eeddf0
|
7
|
+
data.tar.gz: 49743ff5d71ed4dfe915e6aa80cb6d1f1fdb6ba18d783330faae0e320435af92bb32ed78a042b3cb3be486e4a5cdf3826c723d36272a89a599c7f00c85ec0eca
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
5.0.0 (2024-11-21)
|
2
|
+
------------------
|
3
|
+
|
4
|
+
* Feature - [Major Version] Remove dependencies on modular feature gems: `aws-actiondispatch-dynamodb`, `aws-actionmailer-ses`, `aws-actionmailbox-ses`, `aws-activejob-sqs`, and `aws-record-rails`.
|
5
|
+
|
6
|
+
* Issue - Remove `Aws::Rails.add_action_mailer_delivery_method` in favor of `ActionMailer::Base.add_delivery_method` or the Railtie and configuration in `aws-actionmailer-ses ~> 1`.
|
7
|
+
|
8
|
+
* Issue - Remove require of `aws/rails/action_mailbox/rspec` in favor of `aws/action_mailbox/ses/rspec`.
|
9
|
+
|
10
|
+
* Issue - Remove symlinked namespaces from previous major versions.
|
11
|
+
|
12
|
+
* Feature - `ActiveSupport::Notifications` are enabled by default and removes `Aws::Rails.instrument_sdk_operations`.
|
13
|
+
|
14
|
+
* Feature - Moved railtie initializations to their appropriate spots.
|
15
|
+
|
16
|
+
* Issue - Do not execute `ActiveJob` from EB cron without the root path.
|
17
|
+
|
1
18
|
4.2.0 (2024-11-20)
|
2
19
|
------------------
|
3
20
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
5.0.0
|
@@ -31,37 +31,42 @@ module Aws
|
|
31
31
|
private
|
32
32
|
|
33
33
|
def execute_job(request)
|
34
|
-
# Jobs queued from the
|
35
|
-
job =
|
34
|
+
# Jobs queued from the SQS adapter contain the JSON message in the request body.
|
35
|
+
job = ::ActiveSupport::JSON.decode(request.body.string)
|
36
36
|
job_name = job['job_class']
|
37
37
|
@logger.debug("Executing job: #{job_name}")
|
38
|
-
|
39
|
-
begin
|
40
|
-
::ActiveJob::Base.execute(job)
|
41
|
-
rescue NameError => e
|
42
|
-
@logger.error("Job #{job_name} could not resolve to a class that inherits from Active Job.")
|
43
|
-
@logger.error("Error: #{e}")
|
44
|
-
return internal_error_response
|
45
|
-
end
|
46
|
-
|
38
|
+
_execute_job(job, job_name)
|
47
39
|
[200, { 'Content-Type' => 'text/plain' }, ["Successfully ran job #{job_name}."]]
|
40
|
+
rescue NameError
|
41
|
+
internal_error_response
|
42
|
+
end
|
43
|
+
|
44
|
+
def _execute_job(job, job_name)
|
45
|
+
::ActiveJob::Base.execute(job)
|
46
|
+
rescue NameError => e
|
47
|
+
@logger.error("Job #{job_name} could not resolve to a class that inherits from Active Job.")
|
48
|
+
@logger.error("Error: #{e}")
|
49
|
+
raise e
|
48
50
|
end
|
49
51
|
|
50
52
|
def execute_periodic_task(request)
|
51
53
|
# The beanstalk worker SQS Daemon will add the 'X-Aws-Sqsd-Taskname' for periodic tasks set in cron.yaml.
|
52
54
|
job_name = request.headers['X-Aws-Sqsd-Taskname']
|
53
55
|
@logger.debug("Creating and executing periodic task: #{job_name}")
|
54
|
-
|
55
|
-
begin
|
56
|
-
job = job_name.constantize.new
|
57
|
-
job.perform_now
|
58
|
-
rescue NameError => e
|
59
|
-
@logger.error("Periodic task #{job_name} could not resolve to an Active Job class - check the spelling in cron.yaml.")
|
60
|
-
@logger.error("Error: #{e}.")
|
61
|
-
return internal_error_response
|
62
|
-
end
|
63
|
-
|
56
|
+
_execute_periodic_task(job_name)
|
64
57
|
[200, { 'Content-Type' => 'text/plain' }, ["Successfully ran periodic task #{job_name}."]]
|
58
|
+
rescue NameError
|
59
|
+
internal_error_response
|
60
|
+
end
|
61
|
+
|
62
|
+
def _execute_periodic_task(job_name)
|
63
|
+
job = job_name.constantize.new
|
64
|
+
job.perform_now
|
65
|
+
rescue NameError => e
|
66
|
+
@logger.error("Periodic task #{job_name} could not resolve to an Active Job class " \
|
67
|
+
'- check the cron name spelling and set the path as / in cron.yaml.')
|
68
|
+
@logger.error("Error: #{e}.")
|
69
|
+
raise e
|
65
70
|
end
|
66
71
|
|
67
72
|
def internal_error_response
|
@@ -84,7 +89,7 @@ module Aws
|
|
84
89
|
# The beanstalk worker SQS Daemon will add the custom 'X-Aws-Sqsd-Taskname' header
|
85
90
|
# for periodic tasks set in cron.yaml.
|
86
91
|
def periodic_task?(request)
|
87
|
-
|
92
|
+
request.headers['X-Aws-Sqsd-Taskname'].present? && request.fullpath == '/'
|
88
93
|
end
|
89
94
|
|
90
95
|
def sent_from_docker_host?(request)
|
@@ -112,6 +117,7 @@ module Aws
|
|
112
117
|
@default_docker_ips ||= build_default_docker_ips
|
113
118
|
end
|
114
119
|
|
120
|
+
# rubocop:disable Metrics/AbcSize
|
115
121
|
def build_default_docker_ips
|
116
122
|
default_gw_ips = ['172.17.0.1']
|
117
123
|
|
@@ -128,6 +134,7 @@ module Aws
|
|
128
134
|
|
129
135
|
default_gw_ips
|
130
136
|
end
|
137
|
+
# rubocop:enable Metrics/AbcSize
|
131
138
|
end
|
132
139
|
end
|
133
140
|
end
|
data/lib/aws/rails/railtie.rb
CHANGED
@@ -3,34 +3,24 @@
|
|
3
3
|
module Aws
|
4
4
|
# Use the Rails namespace.
|
5
5
|
module Rails
|
6
|
+
# See https://guides.rubyonrails.org/configuring.html#initializers
|
6
7
|
# @api private
|
7
8
|
class Railtie < ::Rails::Railtie
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
Aws::Rails.log_to_rails_logger
|
12
|
-
Aws::Rails.use_rails_encrypted_credentials
|
13
|
-
Aws::Rails.add_action_mailer_delivery_method
|
14
|
-
Aws::Rails.add_action_mailer_delivery_method(:sesv2)
|
15
|
-
|
16
|
-
if %i[ses sesv2].include?(::Rails.application.config.action_mailer.delivery_method)
|
17
|
-
::Rails.logger.warn(<<~MSG)
|
18
|
-
** Aws::Rails.add_action_mailer_delivery_method will be removed in aws-sdk-rails ~> 5.
|
19
|
-
In `aws-actionmailer-ses ~> 1`, configuration will be set using config settings:
|
20
|
-
|
21
|
-
config.action_mailer.delivery_method = :ses_v2
|
22
|
-
config.action_mailer.ses_v2_settings = { region: 'us-west-2' }
|
23
|
-
|
24
|
-
Existing Mailer classes have moved namespaces but will continue to work in this major version. **
|
25
|
-
MSG
|
26
|
-
end
|
9
|
+
# Set the logger for the AWS SDK to Rails.logger.
|
10
|
+
initializer 'aws-sdk-rails.log-to-rails-logger', after: :initialize_logger do
|
11
|
+
Aws.config[:logger] = ::Rails.logger
|
27
12
|
end
|
28
13
|
|
29
|
-
|
30
|
-
|
14
|
+
# Configures the AWS SDK with credentials from Rails encrypted credentials.
|
15
|
+
initializer 'aws-sdk-rails.use-rails-encrypted-credentials', after: :load_environment_config do
|
16
|
+
# limit the config keys we merge to credentials only
|
17
|
+
aws_credential_keys = %i[access_key_id secret_access_key session_token account_id]
|
18
|
+
creds = ::Rails.application.credentials[:aws].to_h.slice(*aws_credential_keys)
|
19
|
+
Aws.config.merge!(creds)
|
31
20
|
end
|
32
21
|
|
33
|
-
|
22
|
+
# Eager load the AWS SDK Clients.
|
23
|
+
initializer 'aws-sdk-rails.eager-load-sdk', before: :eager_load! do
|
34
24
|
Aws.define_singleton_method(:eager_load!) do
|
35
25
|
Aws.constants.each do |c|
|
36
26
|
m = Aws.const_get(c)
|
@@ -46,65 +36,37 @@ module Aws
|
|
46
36
|
config.eager_load_namespaces << Aws
|
47
37
|
end
|
48
38
|
end
|
49
|
-
end
|
50
|
-
|
51
|
-
# Configures the AWS SDK for Ruby's logger to use the Rails logger.
|
52
|
-
def self.log_to_rails_logger
|
53
|
-
Aws.config[:logger] = ::Rails.logger
|
54
|
-
nil
|
55
|
-
end
|
56
39
|
|
57
|
-
|
58
|
-
|
59
|
-
#
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
# Aws::SESV2::Client.
|
68
|
-
#
|
69
|
-
# @param [Symbol] name The name of the ActionMailer delivery method to
|
70
|
-
# register, either :ses or :sesv2.
|
71
|
-
# @param [Hash] client_options The options you wish to pass on to the
|
72
|
-
# Aws::SES[V2]::Client initialization method.
|
73
|
-
def self.add_action_mailer_delivery_method(name = :ses, client_options = {})
|
74
|
-
# TODO: remove this method in aws-sdk-rails ~> 5
|
75
|
-
ActiveSupport.on_load(:action_mailer) do
|
76
|
-
if name == :sesv2
|
77
|
-
add_delivery_method(name, Aws::Rails::Sesv2Mailer, client_options)
|
78
|
-
else
|
79
|
-
add_delivery_method(name, Aws::Rails::SesMailer, client_options)
|
40
|
+
# Add ActiveSupport Notifications instrumentation to AWS SDK client operations.
|
41
|
+
# Each operation will produce an event with a name `<operation>.<service>.aws`.
|
42
|
+
# For example, S3's put_object has an event name of: put_object.S3.aws
|
43
|
+
initializer 'aws-sdk-rails.instrument-sdk-operations', after: :load_active_support do
|
44
|
+
Aws.constants.each do |c|
|
45
|
+
m = Aws.const_get(c)
|
46
|
+
if m.is_a?(Module) && m.const_defined?(:Client) &&
|
47
|
+
(client = m.const_get(:Client)) && client.superclass == Seahorse::Client::Base
|
48
|
+
m.const_get(:Client).add_plugin(Aws::Rails::Notifications)
|
49
|
+
end
|
80
50
|
end
|
81
51
|
end
|
82
|
-
end
|
83
52
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
def self.instrument_sdk_operations
|
88
|
-
Aws.constants.each do |c|
|
89
|
-
m = Aws.const_get(c)
|
90
|
-
if m.is_a?(Module) && m.const_defined?(:Client) &&
|
91
|
-
(client = m.const_get(:Client)) && client.superclass == Seahorse::Client::Base
|
92
|
-
m.const_get(:Client).add_plugin(Aws::Rails::Notifications)
|
93
|
-
end
|
53
|
+
# Register a middleware that will handle requests from the Elastic Beanstalk worker SQS Daemon.
|
54
|
+
initializer 'aws-sdk-rails.add-sqsd-middleware', before: :build_middleware_stack do |app|
|
55
|
+
Aws::Rails.add_sqsd_middleware(app)
|
94
56
|
end
|
95
57
|
end
|
96
58
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
return unless ENV['AWS_PROCESS_BEANSTALK_WORKER_REQUESTS']
|
59
|
+
class << self
|
60
|
+
# @api private
|
61
|
+
def add_sqsd_middleware(app)
|
62
|
+
return unless ENV['AWS_PROCESS_BEANSTALK_WORKER_REQUESTS']
|
102
63
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
64
|
+
if app.config.force_ssl
|
65
|
+
# SQS Daemon sends requests over HTTP - allow and process them before enforcing SSL.
|
66
|
+
app.config.middleware.insert_before(::ActionDispatch::SSL, Aws::Rails::Middleware::ElasticBeanstalkSQSD)
|
67
|
+
else
|
68
|
+
app.config.middleware.use(Aws::Rails::Middleware::ElasticBeanstalkSQSD)
|
69
|
+
end
|
108
70
|
end
|
109
71
|
end
|
110
72
|
end
|
data/lib/aws-sdk-rails.rb
CHANGED
@@ -4,24 +4,8 @@ require_relative 'aws/rails/middleware/elastic_beanstalk_sqsd'
|
|
4
4
|
require_relative 'aws/rails/railtie'
|
5
5
|
require_relative 'aws/rails/notifications'
|
6
6
|
|
7
|
-
# remove these in aws-sdk-rails 5
|
8
|
-
require 'aws-actiondispatch-dynamodb'
|
9
|
-
require 'aws-actionmailbox-ses' if defined?(ActionMailbox::Engine)
|
10
|
-
require 'aws-actionmailer-ses'
|
11
|
-
require 'aws-activejob-sqs'
|
12
|
-
require 'aws-record-rails'
|
13
|
-
|
14
7
|
module Aws
|
15
8
|
module Rails
|
16
9
|
VERSION = File.read(File.expand_path('../VERSION', __dir__)).strip
|
17
10
|
end
|
18
11
|
end
|
19
|
-
|
20
|
-
# remove these in aws-sdk-rails 5
|
21
|
-
Aws::Rails::SqsActiveJob = Aws::ActiveJob::SQS
|
22
|
-
Aws::Rails::EbsSqsActiveJobMiddleware = Aws::Rails::Middleware::ElasticBeanstalkSQSD
|
23
|
-
Aws::Rails::SesMailer = Aws::ActionMailer::SES::Mailer
|
24
|
-
Aws::Rails::Sesv2Mailer = Aws::ActionMailer::SESV2::Mailer
|
25
|
-
# This is for backwards compatibility after introducing support for SESv2.
|
26
|
-
# The old mailer is now replaced with the new SES (v1) mailer.
|
27
|
-
Aws::Rails::Mailer = Aws::Rails::SesMailer
|
metadata
CHANGED
@@ -1,85 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-sdk-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amazon Web Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-11-
|
11
|
+
date: 2024-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: aws-
|
14
|
+
name: aws-sdk-core
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: aws-actionmailbox-ses
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: aws-actionmailer-ses
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: aws-activejob-sqs
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: aws-record-rails
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
26
|
+
version: '3'
|
83
27
|
- !ruby/object:Gem::Dependency
|
84
28
|
name: railties
|
85
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -105,7 +49,6 @@ files:
|
|
105
49
|
- LICENSE.txt
|
106
50
|
- VERSION
|
107
51
|
- lib/aws-sdk-rails.rb
|
108
|
-
- lib/aws/rails/action_mailbox/rspec.rb
|
109
52
|
- lib/aws/rails/middleware/elastic_beanstalk_sqsd.rb
|
110
53
|
- lib/aws/rails/notifications.rb
|
111
54
|
- lib/aws/rails/railtie.rb
|
@@ -1,10 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# This can be deleted in aws-sdk-rails ~> 5
|
4
|
-
|
5
|
-
require 'aws/action_mailbox/ses/rspec'
|
6
|
-
Aws::Rails::ActionMailbox::RSpec = Aws::ActionMailbox::SES::RSpec
|
7
|
-
|
8
|
-
Kernel.warn('Aws::Rails::ActionMailbox::RSpec is deprecated in aws-sdk-rails ~> 5. ' \
|
9
|
-
'Use Aws::ActionMailbox::SES::RSpec instead.')
|
10
|
-
Kernel.warn('Please require "aws/action_mailbox/ses/rspec" instead of "aws/rails/action_mailbox/rspec"')
|