aws-sdk-rails 4.1.0 → 4.2.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 +239 -0
- data/LICENSE.txt +12 -0
- data/VERSION +1 -1
- data/lib/aws/rails/action_mailbox/rspec.rb +6 -65
- data/lib/aws/rails/middleware/elastic_beanstalk_sqsd.rb +134 -0
- data/lib/aws/rails/notifications.rb +3 -6
- data/lib/aws/rails/railtie.rb +39 -40
- data/lib/aws-sdk-rails.rb +16 -8
- metadata +26 -152
- data/app/controllers/action_mailbox/ingresses/ses/inbound_emails_controller.rb +0 -79
- data/bin/aws_sqs_active_job +0 -6
- data/config/routes.rb +0 -8
- data/lib/action_dispatch/session/dynamodb_store.rb +0 -38
- data/lib/active_job/queue_adapters/sqs_adapter/params.rb +0 -78
- data/lib/active_job/queue_adapters/sqs_adapter.rb +0 -58
- data/lib/active_job/queue_adapters/sqs_async_adapter.rb +0 -39
- data/lib/aws/rails/action_mailbox/engine.rb +0 -21
- data/lib/aws/rails/action_mailbox/rspec/email.rb +0 -50
- data/lib/aws/rails/action_mailbox/rspec/subscription_confirmation.rb +0 -37
- data/lib/aws/rails/action_mailbox/s3_client.rb +0 -28
- data/lib/aws/rails/action_mailbox/sns_message_verifier.rb +0 -18
- data/lib/aws/rails/action_mailbox/sns_notification.rb +0 -99
- data/lib/aws/rails/middleware/ebs_sqs_active_job_middleware.rb +0 -118
- data/lib/aws/rails/ses_mailer.rb +0 -49
- data/lib/aws/rails/sesv2_mailer.rb +0 -60
- data/lib/aws/rails/sqs_active_job/configuration.rb +0 -184
- data/lib/aws/rails/sqs_active_job/deduplication.rb +0 -21
- data/lib/aws/rails/sqs_active_job/executor.rb +0 -77
- data/lib/aws/rails/sqs_active_job/job_runner.rb +0 -27
- data/lib/aws/rails/sqs_active_job/lambda_handler.rb +0 -63
- data/lib/aws/rails/sqs_active_job/poller.rb +0 -160
- data/lib/aws/rails/sqs_active_job.rb +0 -33
- data/lib/generators/aws_record/base.rb +0 -213
- data/lib/generators/aws_record/generated_attribute.rb +0 -138
- data/lib/generators/aws_record/model/USAGE +0 -24
- data/lib/generators/aws_record/model/model_generator.rb +0 -25
- data/lib/generators/aws_record/model/templates/model.erb +0 -48
- data/lib/generators/aws_record/model/templates/table_config.erb +0 -18
- data/lib/generators/aws_record/secondary_index.rb +0 -66
- data/lib/generators/dynamo_db/session_store_migration/USAGE +0 -13
- data/lib/generators/dynamo_db/session_store_migration/session_store_migration_generator.rb +0 -48
- data/lib/generators/dynamo_db/session_store_migration/templates/dynamo_db_session_store.yml +0 -70
- data/lib/generators/dynamo_db/session_store_migration/templates/session_store_migration.erb +0 -9
- data/lib/tasks/aws_record/migrate.rake +0 -14
- data/lib/tasks/dynamo_db/session_store.rake +0 -10
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'aws-record'
|
2
|
-
<% if has_validations? -%>
|
3
|
-
require 'active_model'
|
4
|
-
<% end -%>
|
5
|
-
|
6
|
-
<% module_namespacing do -%>
|
7
|
-
class <%= class_name %>
|
8
|
-
include Aws::Record
|
9
|
-
<% if options.key? :scaffold -%>
|
10
|
-
extend ActiveModel::Naming
|
11
|
-
<% end -%>
|
12
|
-
<% if has_validations? -%>
|
13
|
-
include ActiveModel::Validations
|
14
|
-
<% end -%>
|
15
|
-
<% if options.key? :password_digest -%>
|
16
|
-
include ActiveModel::SecurePassword
|
17
|
-
<% end -%>
|
18
|
-
<% if mutation_tracking_disabled? -%>
|
19
|
-
disable_mutation_tracking
|
20
|
-
<% end -%>
|
21
|
-
|
22
|
-
<% attributes.each do |attribute| -%>
|
23
|
-
<%= attribute.type %> :<%= attribute.name %><% *opts, last_opt = attribute.options.to_a %><%= ', ' if last_opt %><% opts.each do |opt| %><%= opt[0] %>: <%= opt[1] %>, <% end %><% if last_opt %><%= last_opt[0] %>: <%= last_opt[1] %><% end %>
|
24
|
-
<% end -%>
|
25
|
-
<% gsis.each do |index| %>
|
26
|
-
global_secondary_index(
|
27
|
-
:<%= index.name %>,
|
28
|
-
hash_key: :<%= index.hash_key -%>,<%- if index.range_key %>
|
29
|
-
range_key: :<%= index.range_key -%>,<%- end %>
|
30
|
-
projection: {
|
31
|
-
projection_type: <%= index.projection_type %>
|
32
|
-
}
|
33
|
-
)
|
34
|
-
<% end -%>
|
35
|
-
<% if !required_attrs.empty? -%>
|
36
|
-
validates_presence_of <% *req, last_req = required_attrs -%><% req.each do |required_validation|-%>:<%= required_validation %>, <% end -%>:<%= last_req %>
|
37
|
-
<% end -%>
|
38
|
-
<% length_validations.each do |attribute, validation| -%>
|
39
|
-
validates_length_of :<%= attribute %>, within: <%= validation %>
|
40
|
-
<% end -%>
|
41
|
-
<% if options['table_name'] -%>
|
42
|
-
set_table_name "<%= options['table_name'] %>"
|
43
|
-
<% end -%>
|
44
|
-
<% if options.key? :password_digest -%>
|
45
|
-
has_secure_password
|
46
|
-
<% end -%>
|
47
|
-
end
|
48
|
-
<% end -%>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'aws-record'
|
2
|
-
|
3
|
-
module ModelTableConfig
|
4
|
-
def self.config
|
5
|
-
Aws::Record::TableConfig.define do |t|
|
6
|
-
t.model_class <%= class_name %>
|
7
|
-
|
8
|
-
t.read_capacity_units <%= primary_read_units %>
|
9
|
-
t.write_capacity_units <%= primary_write_units %>
|
10
|
-
<%- gsis.each do |index| %>
|
11
|
-
t.global_secondary_index(:<%= index.name %>) do |i|
|
12
|
-
i.read_capacity_units <%= gsi_rw_units[index.name][0] %>
|
13
|
-
i.write_capacity_units <%= gsi_rw_units[index.name][1] %>
|
14
|
-
end
|
15
|
-
<%- end -%>
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module AwsRecord
|
4
|
-
module Generators
|
5
|
-
class SecondaryIndex
|
6
|
-
PROJ_TYPES = %w[ALL KEYS_ONLY INCLUDE].freeze
|
7
|
-
attr_reader :name, :hash_key, :range_key, :projection_type
|
8
|
-
|
9
|
-
class << self
|
10
|
-
def parse(key_definition)
|
11
|
-
name, index_options = key_definition.split(':')
|
12
|
-
index_options = index_options.split(',') if index_options
|
13
|
-
opts = parse_raw_options(index_options)
|
14
|
-
|
15
|
-
new(name, opts)
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def parse_raw_options(raw_opts)
|
21
|
-
raw_opts ||= []
|
22
|
-
raw_opts.to_h { |opt| get_option_value(opt) }
|
23
|
-
end
|
24
|
-
|
25
|
-
def get_option_value(raw_option)
|
26
|
-
case raw_option
|
27
|
-
|
28
|
-
when /hkey\{(\w+)\}/
|
29
|
-
[:hash_key, ::Regexp.last_match(1)]
|
30
|
-
when /rkey\{(\w+)\}/
|
31
|
-
[:range_key, ::Regexp.last_match(1)]
|
32
|
-
when /proj_type\{(\w+)\}/
|
33
|
-
[:projection_type, ::Regexp.last_match(1)]
|
34
|
-
else
|
35
|
-
raise ArgumentError, "Invalid option for secondary index #{raw_option}"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def initialize(name, opts)
|
41
|
-
raise ArgumentError, 'You must provide a name' unless name
|
42
|
-
raise ArgumentError, 'You must provide a hash key' unless opts[:hash_key]
|
43
|
-
|
44
|
-
if opts.key? :projection_type
|
45
|
-
unless PROJ_TYPES.include? opts[:projection_type]
|
46
|
-
raise ArgumentError, "Invalid projection type #{opts[:projection_type]}"
|
47
|
-
end
|
48
|
-
if opts[:projection_type] != 'ALL'
|
49
|
-
raise NotImplementedError, 'ALL is the only projection type currently supported'
|
50
|
-
end
|
51
|
-
else
|
52
|
-
opts[:projection_type] = 'ALL'
|
53
|
-
end
|
54
|
-
|
55
|
-
if opts[:hash_key] == opts[:range_key]
|
56
|
-
raise ArgumentError, "#{opts[:hash_key]} cannot be both the rkey and hkey for gsi #{name}"
|
57
|
-
end
|
58
|
-
|
59
|
-
@name = name
|
60
|
-
@hash_key = opts[:hash_key]
|
61
|
-
@range_key = opts[:range_key]
|
62
|
-
@projection_type = "\"#{opts[:projection_type]}\""
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
Generates a migration file for deleting and a creating a DynamoDB
|
3
|
-
sessions table, and a configuration file for the session store.
|
4
|
-
|
5
|
-
Example:
|
6
|
-
rails generate dynamo_db:session_store_migration <MIGRATION_NAME>
|
7
|
-
|
8
|
-
This will create:
|
9
|
-
db/migrate/#{VERSION}_#{MIGRATION_NAME}.rb
|
10
|
-
config/dynamo_db_session_store.yml
|
11
|
-
|
12
|
-
The migration will be run when the command rake db:migrate is run
|
13
|
-
in the command line.
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'rails/generators/named_base'
|
4
|
-
|
5
|
-
# This class generates a migration file for deleting and creating
|
6
|
-
# a DynamoDB sessions table.
|
7
|
-
module DynamoDb
|
8
|
-
module Generators
|
9
|
-
# Generates an ActiveRecord migration that creates and deletes a DynamoDB
|
10
|
-
# Session table.
|
11
|
-
class SessionStoreMigrationGenerator < Rails::Generators::NamedBase
|
12
|
-
include Rails::Generators::Migration
|
13
|
-
|
14
|
-
source_root File.expand_path('templates', __dir__)
|
15
|
-
|
16
|
-
# Desired name of migration class
|
17
|
-
argument :name, type: :string, default: 'create_dynamo_db_sessions_table'
|
18
|
-
|
19
|
-
# @return [Rails Migration File] migration file for creation and deletion
|
20
|
-
# of a DynamoDB session table.
|
21
|
-
def generate_migration_file
|
22
|
-
migration_template(
|
23
|
-
'session_store_migration.erb',
|
24
|
-
"db/migrate/#{name.underscore}.rb"
|
25
|
-
)
|
26
|
-
end
|
27
|
-
|
28
|
-
def copy_sample_config_file
|
29
|
-
template(
|
30
|
-
'dynamo_db_session_store.yml',
|
31
|
-
'config/dynamo_db_session_store.yml'
|
32
|
-
)
|
33
|
-
end
|
34
|
-
|
35
|
-
# Next migration number - must be implemented
|
36
|
-
def self.next_migration_number(_dir = nil)
|
37
|
-
Time.now.utc.strftime('%Y%m%d%H%M%S')
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
# @return [String] activerecord migration version
|
43
|
-
def migration_version
|
44
|
-
"#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# Uncomment and manipulate the key value pairs below
|
2
|
-
# in order to configure the DynamoDB Session Store Application.
|
3
|
-
|
4
|
-
# [String] The secret key for HMAC encryption. This defaults to
|
5
|
-
# `Rails.application.secret_key_base`. You can use a different key if desired.
|
6
|
-
#
|
7
|
-
# secret_key: SECRET_KEY
|
8
|
-
|
9
|
-
# [String] Session table name.
|
10
|
-
#
|
11
|
-
# table_name: Sessions
|
12
|
-
|
13
|
-
# [String] Session table hash key name.
|
14
|
-
#
|
15
|
-
# table_key: session_id
|
16
|
-
|
17
|
-
# [Boolean] Define as true or false depending on if you want a strongly
|
18
|
-
# consistent read.
|
19
|
-
# See AWS DynamoDB documentation for table consistent_read for more
|
20
|
-
# information on this setting.
|
21
|
-
#
|
22
|
-
# consistent_read: true
|
23
|
-
|
24
|
-
# [Integer] Maximum number of reads consumed per second before
|
25
|
-
# DynamoDB returns a ThrottlingException. See AWS DynamoDB documentation
|
26
|
-
# or table read_capacity for more information on this setting.
|
27
|
-
#
|
28
|
-
# read_capacity: 10
|
29
|
-
|
30
|
-
# [Integer] Maximum number of writes consumed per second before
|
31
|
-
# DynamoDB returns a ThrottlingException. See AWS DynamoDB documentation
|
32
|
-
# or table write_capacity for more information on this setting.
|
33
|
-
#
|
34
|
-
# write_capacity: 5
|
35
|
-
|
36
|
-
# [Boolean] Define as true or false depending on whether you want all errors to be
|
37
|
-
# raised up the stack.
|
38
|
-
#
|
39
|
-
# raise_errors: false
|
40
|
-
|
41
|
-
# [Integer] Maximum number of seconds earlier
|
42
|
-
# from the current time that a session was created.
|
43
|
-
# By default this is 7 days.
|
44
|
-
#
|
45
|
-
# max_age: 604800
|
46
|
-
|
47
|
-
# [Integer] Maximum number of seconds
|
48
|
-
# before the current time that the session was last accessed.
|
49
|
-
# By default this is 5 hours.
|
50
|
-
#
|
51
|
-
# max_stale: 18000
|
52
|
-
|
53
|
-
# [Boolean] Define as true or false for whether you want to enable locking
|
54
|
-
# for all accesses to session data.
|
55
|
-
#
|
56
|
-
# enable_locking: false
|
57
|
-
|
58
|
-
# [Integer] Time in milleseconds after which lock will expire.
|
59
|
-
#
|
60
|
-
# lock_expiry_time: 500
|
61
|
-
|
62
|
-
# [Integer] Time in milleseconds to wait before retrying to obtain
|
63
|
-
# lock once an attempt to obtain lock has been made and has failed.
|
64
|
-
#
|
65
|
-
# lock_retry_delay: 500
|
66
|
-
|
67
|
-
# [Integer] Maximum time in seconds to wait to acquire lock
|
68
|
-
# before giving up.
|
69
|
-
#
|
70
|
-
# lock_max_wait_time: 1
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
desc 'Run all table configs in table_config folder'
|
4
|
-
namespace :aws_record do
|
5
|
-
task migrate: :environment do
|
6
|
-
Dir[File.join('db', 'table_config', '**/*.rb')].each do |filename|
|
7
|
-
puts "running #{filename}"
|
8
|
-
require(File.expand_path(filename))
|
9
|
-
|
10
|
-
table_config = ModelTableConfig.config
|
11
|
-
table_config.migrate! unless table_config.compatible?
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
namespace 'dynamo_db' do
|
4
|
-
namespace 'session_store' do
|
5
|
-
desc 'Clean up old sessions in the Amazon DynamoDB session store table.'
|
6
|
-
task clean: :environment do
|
7
|
-
Aws::SessionStore::DynamoDB::GarbageCollection.collect_garbage
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|