Class: Aws::Rails::Middleware::ElasticBeanstalkSQSD
- Inherits:
-
Object
- Object
- Aws::Rails::Middleware::ElasticBeanstalkSQSD
- Defined in:
- lib/aws/rails/middleware/elastic_beanstalk_sqsd.rb
Overview
Middleware to handle requests from the SQS Daemon present on Elastic Beanstalk worker environments.
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ ElasticBeanstalkSQSD
constructor
A new instance of ElasticBeanstalkSQSD.
- #shutdown(timeout = nil) ⇒ Object
Constructor Details
#initialize(app) ⇒ ElasticBeanstalkSQSD
Returns a new instance of ElasticBeanstalkSQSD.
8 9 10 11 12 13 14 15 |
# File 'lib/aws/rails/middleware/elastic_beanstalk_sqsd.rb', line 8 def initialize(app) @app = app @logger = ::Rails.logger return unless ENV['AWS_PROCESS_BEANSTALK_WORKER_JOBS_ASYNC'] @executor = init_executor end |
Instance Method Details
#call(env) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/aws/rails/middleware/elastic_beanstalk_sqsd.rb', line 17 def call(env) request = ::ActionDispatch::Request.new(env) # Pass through unless user agent is the SQS Daemon return @app.call(env) unless from_sqs_daemon?(request) @logger.debug('aws-sdk-rails middleware detected call from Elastic Beanstalk SQS Daemon.') # Only accept requests from this user agent if it is from localhost or a docker host in case of forgery. unless request.local? || sent_from_docker_host?(request) @logger.warn('SQSD request detected from untrusted address; returning 403 forbidden.') return forbidden_response end # Execute job or periodic task based on HTTP request context execute(request) end |
#shutdown(timeout = nil) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/aws/rails/middleware/elastic_beanstalk_sqsd.rb', line 35 def shutdown(timeout = nil) return unless @executor @logger.info("Shutting down SQS EBS background job executor. Timeout: #{timeout}") @executor.shutdown clean_shutdown = @executor.wait_for_termination(timeout) @logger.info("SQS EBS background executor shutdown complete. Clean: #{clean_shutdown}") end |