jets 3.0.15 → 3.0.16
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 +3 -0
- data/lib/jets/aws_services.rb +38 -10
- data/lib/jets/commands/clean/log.rb +0 -13
- data/lib/jets/commands/delete.rb +1 -21
- data/lib/jets/commands/deploy.rb +0 -44
- data/lib/jets/resource/api_gateway/rest_api/routes/change/base.rb +5 -20
- data/lib/jets/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e612ac00d993cb94a8458bbf238abc72e898ddbb4b6205c9d0d7a8d2e5388a6c
|
4
|
+
data.tar.gz: e2d13089ca64351b1b4c0c8672b31b17e0708e1caf817eab40abc957775fccf5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4db9003f65f11b9a47101159dd80e6576bb12a34989de95227b27882db575d5b61b8d2c2b11965fd933f50156e7197ae80e30da498c12a10bcd868934e96a2b9
|
7
|
+
data.tar.gz: ca781f60467a266f48abb452cbb1f1aa0ee7c5734315e9d3886786c37d2519466749dc04e28aca50ba470c6260763dc3ef5c2e34ad0a8ee1f883f231db623d0d
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
+
## [3.0.16] - 2021-09-10
|
7
|
+
- [#590](https://github.com/boltops-tools/jets/pull/590) Improve Rate Limit Handling
|
8
|
+
|
6
9
|
## [3.0.15] - 2021-09-05
|
7
10
|
- [#587](https://github.com/boltops-tools/jets/pull/587) Fix private method names
|
8
11
|
- [#588](https://github.com/boltops-tools/jets/pull/588) custom domain: adjust rate limit for base mapping
|
data/lib/jets/aws_services.rb
CHANGED
@@ -16,52 +16,80 @@ module Jets::AwsServices
|
|
16
16
|
include StackStatus
|
17
17
|
|
18
18
|
def apigateway
|
19
|
-
Aws::APIGateway::Client.new
|
19
|
+
Aws::APIGateway::Client.new(aws_options)
|
20
20
|
end
|
21
21
|
global_memoize :apigateway
|
22
22
|
|
23
23
|
def cfn
|
24
|
-
Aws::CloudFormation::Client.new
|
24
|
+
Aws::CloudFormation::Client.new(aws_options)
|
25
25
|
end
|
26
26
|
global_memoize :cfn
|
27
27
|
|
28
28
|
def dynamodb
|
29
|
-
Aws::DynamoDB::Client.new
|
29
|
+
Aws::DynamoDB::Client.new(aws_options)
|
30
30
|
end
|
31
31
|
global_memoize :dynamodb
|
32
32
|
|
33
33
|
def aws_lambda
|
34
|
-
Aws::Lambda::Client.new
|
34
|
+
Aws::Lambda::Client.new(aws_options)
|
35
35
|
end
|
36
36
|
global_memoize :aws_lambda
|
37
37
|
|
38
38
|
def logs
|
39
|
-
Aws::CloudWatchLogs::Client.new
|
39
|
+
Aws::CloudWatchLogs::Client.new(aws_options)
|
40
40
|
end
|
41
41
|
global_memoize :logs
|
42
42
|
|
43
43
|
def s3
|
44
|
-
Aws::S3::Client.new
|
44
|
+
Aws::S3::Client.new(aws_options)
|
45
45
|
end
|
46
46
|
global_memoize :s3
|
47
47
|
|
48
48
|
def s3_resource
|
49
|
-
Aws::S3::Resource.new
|
49
|
+
Aws::S3::Resource.new(aws_options)
|
50
50
|
end
|
51
51
|
global_memoize :s3_resource
|
52
52
|
|
53
53
|
def sns
|
54
|
-
Aws::SNS::Client.new
|
54
|
+
Aws::SNS::Client.new(aws_options)
|
55
55
|
end
|
56
56
|
global_memoize :sns
|
57
57
|
|
58
58
|
def sqs
|
59
|
-
Aws::SQS::Client.new
|
59
|
+
Aws::SQS::Client.new(aws_options)
|
60
60
|
end
|
61
61
|
global_memoize :sqs
|
62
62
|
|
63
63
|
def sts
|
64
|
-
Aws::STS::Client.new
|
64
|
+
Aws::STS::Client.new(aws_options)
|
65
65
|
end
|
66
66
|
global_memoize :sts
|
67
|
+
|
68
|
+
# Override the AWS retry settings with Jets AWS clients.
|
69
|
+
#
|
70
|
+
# The aws-sdk-core has exponential backup with this formula:
|
71
|
+
#
|
72
|
+
# 2 ** c.retries * c.config.retry_base_delay
|
73
|
+
#
|
74
|
+
# So the max delay will be 2 ** 7 * 0.6 = 76.8s
|
75
|
+
#
|
76
|
+
# Only scoping this to deploy because dont want to affect people's application that use the aws sdk.
|
77
|
+
#
|
78
|
+
# There is also additional rate backoff logic elsewhere, since this is only scoped to deploys.
|
79
|
+
#
|
80
|
+
# Useful links:
|
81
|
+
# https://github.com/aws/aws-sdk-ruby/blob/master/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb
|
82
|
+
# https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html
|
83
|
+
#
|
84
|
+
def aws_options
|
85
|
+
options = {
|
86
|
+
retry_limit: 7, # default: 3
|
87
|
+
retry_base_delay: 0.6, # default: 0.3
|
88
|
+
}
|
89
|
+
options.merge!(
|
90
|
+
log_level: :debug,
|
91
|
+
logger: Logger.new($stdout),
|
92
|
+
) if ENV['JETS_DEBUG_AWS_SDK']
|
93
|
+
options
|
94
|
+
end
|
67
95
|
end
|
@@ -26,20 +26,7 @@ class Jets::Commands::Clean
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def delete_log_group(log_group_name)
|
29
|
-
retries = 0
|
30
29
|
logs.delete_log_group(log_group_name: log_group_name)
|
31
|
-
rescue Aws::CloudWatchLogs::Errors::ThrottlingException => e
|
32
|
-
retries += 1
|
33
|
-
seconds = 2 ** retries
|
34
|
-
|
35
|
-
puts "WARN: delete_log_group #{e.class} #{e.message}".color(:yellow)
|
36
|
-
puts "Backing off and will retry in #{seconds} seconds."
|
37
|
-
sleep(seconds)
|
38
|
-
if seconds > 90 # 2 ** 6 is 64 so will give up after 6 retries
|
39
|
-
puts "Giving up after #{retries} retries"
|
40
|
-
else
|
41
|
-
retry
|
42
|
-
end
|
43
30
|
end
|
44
31
|
|
45
32
|
def clean_deploys
|
data/lib/jets/commands/delete.rb
CHANGED
@@ -44,27 +44,7 @@ class Jets::Commands::Delete
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def confirm_project_exists
|
47
|
-
|
48
|
-
begin
|
49
|
-
cfn.describe_stacks(stack_name: parent_stack_name)
|
50
|
-
rescue Aws::CloudFormation::Errors::ValidationError
|
51
|
-
# Aws::CloudFormation::Errors::ValidationError is thrown when the stack
|
52
|
-
# does not exist
|
53
|
-
puts "The parent stack #{Jets.config.project_namespace.color(:green)} for the project #{Jets.config.project_name.color(:green)} does not exist. So it cannot be deleted."
|
54
|
-
exit 0
|
55
|
-
rescue Aws::CloudFormation::Errors::Throttling => e
|
56
|
-
retries += 1
|
57
|
-
seconds = 2 ** retries
|
58
|
-
|
59
|
-
puts "WARN: confirm_project_exists #{e.class} #{e.message}".color(:yellow)
|
60
|
-
puts "Backing off and will retry in #{seconds} seconds."
|
61
|
-
sleep(seconds)
|
62
|
-
if seconds > 90 # 2 ** 6 is 64 so will give up after 6 retries
|
63
|
-
puts "Giving up after #{retries} retries"
|
64
|
-
else
|
65
|
-
retry
|
66
|
-
end
|
67
|
-
end
|
47
|
+
cfn.describe_stacks(stack_name: parent_stack_name)
|
68
48
|
end
|
69
49
|
|
70
50
|
def empty_s3_bucket
|
data/lib/jets/commands/deploy.rb
CHANGED
@@ -9,7 +9,6 @@ module Jets::Commands
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def run
|
12
|
-
aws_config_update!
|
13
12
|
deployment_env = Jets.config.project_namespace.color(:green)
|
14
13
|
puts "Deploying to Lambda #{deployment_env} environment..."
|
15
14
|
return if @options[:noop]
|
@@ -37,29 +36,6 @@ module Jets::Commands
|
|
37
36
|
ship(stack_type: :full, s3_bucket: s3_bucket)
|
38
37
|
end
|
39
38
|
|
40
|
-
# Override the AWS retry settings during a deploy.
|
41
|
-
#
|
42
|
-
# The aws-sdk-core has expondential backup with this formula:
|
43
|
-
#
|
44
|
-
# 2 ** c.retries * c.config.retry_base_delay
|
45
|
-
#
|
46
|
-
# So the max delay will be 2 ** 7 * 0.6 = 76.8s
|
47
|
-
#
|
48
|
-
# Only scoping this to deploy because dont want to affect people's application that use the aws sdk.
|
49
|
-
#
|
50
|
-
# There is also additional rate backoff logic elsewhere, since this is only scoped to deploys.
|
51
|
-
#
|
52
|
-
# Useful links:
|
53
|
-
# https://github.com/aws/aws-sdk-ruby/blob/master/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb
|
54
|
-
# https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html
|
55
|
-
#
|
56
|
-
def aws_config_update!
|
57
|
-
Aws.config.update(
|
58
|
-
retry_limit: 7, # default: 3
|
59
|
-
retry_base_delay: 0.6, # default: 0.3
|
60
|
-
)
|
61
|
-
end
|
62
|
-
|
63
39
|
def create_s3_event_buckets
|
64
40
|
buckets = Jets::Job::Base.s3_events.keys
|
65
41
|
buckets.each do |bucket|
|
@@ -126,28 +102,8 @@ module Jets::Commands
|
|
126
102
|
end
|
127
103
|
|
128
104
|
def find_stack(stack_name)
|
129
|
-
retries = 0
|
130
105
|
resp = cfn.describe_stacks(stack_name: stack_name)
|
131
106
|
resp.stacks.first
|
132
|
-
rescue Aws::CloudFormation::Errors::ValidationError => e
|
133
|
-
# example: Stack with id demo-dev does not exist
|
134
|
-
if e.message =~ /Stack with/ && e.message =~ /does not exist/
|
135
|
-
nil
|
136
|
-
else
|
137
|
-
raise
|
138
|
-
end
|
139
|
-
rescue Aws::CloudFormation::Errors::Throttling => e
|
140
|
-
retries += 1
|
141
|
-
seconds = 2 ** retries
|
142
|
-
|
143
|
-
puts "WARN: find_stack #{e.class} #{e.message}".color(:yellow)
|
144
|
-
puts "Backing off and will retry in #{seconds} seconds."
|
145
|
-
sleep(seconds)
|
146
|
-
if seconds > 90 # 2 ** 6 is 64 so will give up after 6 retries
|
147
|
-
puts "Giving up after #{retries} retries"
|
148
|
-
else
|
149
|
-
retry
|
150
|
-
end
|
151
107
|
end
|
152
108
|
|
153
109
|
# All CloudFormation states listed here: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html
|
@@ -59,26 +59,11 @@ class Jets::Resource::ApiGateway::RestApi::Routes::Change
|
|
59
59
|
|
60
60
|
def method_uri(resource_id, http_method)
|
61
61
|
# https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
http_method: http_method
|
68
|
-
)
|
69
|
-
rescue Aws::APIGateway::Errors::TooManyRequestsException => e
|
70
|
-
retries += 1
|
71
|
-
seconds = 2 ** retries
|
72
|
-
|
73
|
-
puts "WARN: method_uri #{e.class} #{e.message}".color(:yellow)
|
74
|
-
puts "Backing off and will retry in #{seconds} seconds."
|
75
|
-
sleep(seconds)
|
76
|
-
if seconds > 90 # 2 ** 6 is 64 so will give up after 6 retries
|
77
|
-
puts "Giving up after #{retries} retries"
|
78
|
-
else
|
79
|
-
retry
|
80
|
-
end
|
81
|
-
end
|
62
|
+
resp = apigateway.get_method(
|
63
|
+
rest_api_id: rest_api_id,
|
64
|
+
resource_id: resource_id,
|
65
|
+
http_method: http_method
|
66
|
+
)
|
82
67
|
resp.method_integration.uri
|
83
68
|
end
|
84
69
|
|
data/lib/jets/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|