MovableInkAWS 2.5.1 → 2.6.1
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/Gemfile.lock +31 -31
- data/lib/movable_ink/aws/metadata.rb +1 -1
- data/lib/movable_ink/aws/route53.rb +18 -18
- data/lib/movable_ink/aws/ssm.rb +14 -11
- data/lib/movable_ink/version.rb +1 -1
- data/spec/ssm_spec.rb +10 -0
- 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: 238d21eb16377f58da3db182b93157e34f26e05b5a12a8f233039153e581ab1a
|
4
|
+
data.tar.gz: 55249c69017ffb581c53478eedb109c026fce69fde1dec5f60580d66b42970af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 365976f0e0e1ba918bfd8875e95e0d78d3ce59cf83ab6896b3c001250046cf5081e2cfe09b192196e01f7daef60c41523e647d720a5b8356980e2fca3900dfe2
|
7
|
+
data.tar.gz: 2fed258445a35f69973085710a2465e09845a1e98068f1f535551cefb3e1ebd11af9fdaed90781055b4757961eb107f8b92745bb4a0f3443cb25ebe95d7c8b75
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
MovableInkAWS (2.
|
4
|
+
MovableInkAWS (2.6.1)
|
5
5
|
aws-sdk-athena (~> 1)
|
6
6
|
aws-sdk-autoscaling (~> 1)
|
7
7
|
aws-sdk-cloudwatch (~> 1)
|
@@ -24,48 +24,48 @@ GEM
|
|
24
24
|
addressable (2.7.0)
|
25
25
|
public_suffix (>= 2.0.2, < 5.0)
|
26
26
|
aws-eventstream (1.2.0)
|
27
|
-
aws-partitions (1.
|
28
|
-
aws-sdk-athena (1.
|
29
|
-
aws-sdk-core (~> 3, >= 3.
|
27
|
+
aws-partitions (1.573.0)
|
28
|
+
aws-sdk-athena (1.52.0)
|
29
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
30
30
|
aws-sigv4 (~> 1.1)
|
31
|
-
aws-sdk-autoscaling (1.
|
32
|
-
aws-sdk-core (~> 3, >= 3.
|
31
|
+
aws-sdk-autoscaling (1.78.0)
|
32
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
33
33
|
aws-sigv4 (~> 1.1)
|
34
|
-
aws-sdk-cloudwatch (1.
|
35
|
-
aws-sdk-core (~> 3, >= 3.
|
34
|
+
aws-sdk-cloudwatch (1.62.0)
|
35
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
36
36
|
aws-sigv4 (~> 1.1)
|
37
|
-
aws-sdk-core (3.
|
37
|
+
aws-sdk-core (3.130.0)
|
38
38
|
aws-eventstream (~> 1, >= 1.0.2)
|
39
39
|
aws-partitions (~> 1, >= 1.525.0)
|
40
40
|
aws-sigv4 (~> 1.1)
|
41
41
|
jmespath (~> 1.0)
|
42
|
-
aws-sdk-ec2 (1.
|
43
|
-
aws-sdk-core (~> 3, >= 3.
|
42
|
+
aws-sdk-ec2 (1.305.0)
|
43
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
44
44
|
aws-sigv4 (~> 1.1)
|
45
|
-
aws-sdk-eks (1.
|
46
|
-
aws-sdk-core (~> 3, >= 3.
|
45
|
+
aws-sdk-eks (1.74.0)
|
46
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
47
47
|
aws-sigv4 (~> 1.1)
|
48
|
-
aws-sdk-elasticache (1.
|
49
|
-
aws-sdk-core (~> 3, >= 3.
|
48
|
+
aws-sdk-elasticache (1.76.0)
|
49
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
50
50
|
aws-sigv4 (~> 1.1)
|
51
|
-
aws-sdk-kms (1.
|
52
|
-
aws-sdk-core (~> 3, >= 3.
|
51
|
+
aws-sdk-kms (1.55.0)
|
52
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
53
53
|
aws-sigv4 (~> 1.1)
|
54
|
-
aws-sdk-rds (1.
|
55
|
-
aws-sdk-core (~> 3, >= 3.
|
54
|
+
aws-sdk-rds (1.142.0)
|
55
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
56
56
|
aws-sigv4 (~> 1.1)
|
57
|
-
aws-sdk-route53 (1.
|
58
|
-
aws-sdk-core (~> 3, >= 3.
|
57
|
+
aws-sdk-route53 (1.62.0)
|
58
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
59
59
|
aws-sigv4 (~> 1.1)
|
60
|
-
aws-sdk-s3 (1.
|
61
|
-
aws-sdk-core (~> 3, >= 3.
|
60
|
+
aws-sdk-s3 (1.113.0)
|
61
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
62
62
|
aws-sdk-kms (~> 1)
|
63
|
+
aws-sigv4 (~> 1.4)
|
64
|
+
aws-sdk-sns (1.53.0)
|
65
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
63
66
|
aws-sigv4 (~> 1.1)
|
64
|
-
aws-sdk-
|
65
|
-
aws-sdk-core (~> 3, >= 3.
|
66
|
-
aws-sigv4 (~> 1.1)
|
67
|
-
aws-sdk-ssm (1.108.0)
|
68
|
-
aws-sdk-core (~> 3, >= 3.112.0)
|
67
|
+
aws-sdk-ssm (1.134.0)
|
68
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
69
69
|
aws-sigv4 (~> 1.1)
|
70
70
|
aws-sigv4 (1.4.0)
|
71
71
|
aws-eventstream (~> 1, >= 1.0.2)
|
@@ -82,10 +82,10 @@ GEM
|
|
82
82
|
httparty (0.16.3)
|
83
83
|
mime-types (~> 3.0)
|
84
84
|
multi_xml (>= 0.5.2)
|
85
|
-
jmespath (1.6.
|
86
|
-
mime-types (3.
|
85
|
+
jmespath (1.6.1)
|
86
|
+
mime-types (3.4.1)
|
87
87
|
mime-types-data (~> 3.2015)
|
88
|
-
mime-types-data (3.
|
88
|
+
mime-types-data (3.2022.0105)
|
89
89
|
multi_xml (0.6.0)
|
90
90
|
multipart-post (2.1.1)
|
91
91
|
public_suffix (4.0.5)
|
@@ -20,7 +20,7 @@ module MovableInk
|
|
20
20
|
request['X-aws-ec2-metadata-token'] = imds_token
|
21
21
|
response = http(timeout_seconds: num * 3).request(request)
|
22
22
|
return response.body
|
23
|
-
rescue Net::OpenTimeout, Net::ReadTimeout, Errno::EHOSTDOWN
|
23
|
+
rescue Net::OpenTimeout, Net::ReadTimeout, Errno::EHOSTDOWN, Errno::ECONNREFUSED
|
24
24
|
sleep(num * 2)
|
25
25
|
end
|
26
26
|
|
@@ -3,21 +3,21 @@ require 'aws-sdk-route53'
|
|
3
3
|
module MovableInk
|
4
4
|
class AWS
|
5
5
|
module Route53
|
6
|
-
def route53
|
7
|
-
@route53_client ||= Aws::Route53::Client.new(region: 'us-east-1')
|
6
|
+
def route53(client = nil)
|
7
|
+
@route53_client ||= (client) ? client : Aws::Route53::Client.new(region: 'us-east-1')
|
8
8
|
end
|
9
9
|
|
10
|
-
def resource_record_sets(hosted_zone_id)
|
10
|
+
def resource_record_sets(hosted_zone_id, client = nil)
|
11
11
|
@resource_record_sets ||= {}
|
12
|
-
@resource_record_sets[hosted_zone_id] ||= list_all_r53_resource_record_sets(hosted_zone_id)
|
12
|
+
@resource_record_sets[hosted_zone_id] ||= list_all_r53_resource_record_sets(hosted_zone_id, client)
|
13
13
|
end
|
14
14
|
|
15
|
-
def get_resource_record_sets_by_instance_name(zone, instance_name)
|
16
|
-
resource_record_sets(zone).select{|rrs| rrs.set_identifier == instance_name}.first.to_h
|
15
|
+
def get_resource_record_sets_by_instance_name(zone, instance_name, client = nil)
|
16
|
+
resource_record_sets(zone, client).select{|rrs| rrs.set_identifier == instance_name}.first.to_h
|
17
17
|
end
|
18
18
|
|
19
|
-
def delete_resource_record_sets(zone, instance_name)
|
20
|
-
resource_record_set = get_resource_record_sets_by_instance_name(zone, instance_name)
|
19
|
+
def delete_resource_record_sets(zone, instance_name, client = nil)
|
20
|
+
resource_record_set = get_resource_record_sets_by_instance_name(zone, instance_name, client)
|
21
21
|
return if resource_record_set.empty?
|
22
22
|
|
23
23
|
change_batch = {
|
@@ -28,36 +28,36 @@ module MovableInk
|
|
28
28
|
}
|
29
29
|
|
30
30
|
run_with_backoff do
|
31
|
-
route53.change_resource_record_sets({change_batch: change_batch, hosted_zone_id: zone})
|
31
|
+
route53(client).change_resource_record_sets({change_batch: change_batch, hosted_zone_id: zone})
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
def list_all_r53_resource_record_sets(hosted_zone_id)
|
35
|
+
def list_all_r53_resource_record_sets(hosted_zone_id, client = nil)
|
36
36
|
run_with_backoff do
|
37
|
-
route53.list_resource_record_sets({
|
37
|
+
route53(client).list_resource_record_sets({
|
38
38
|
hosted_zone_id: hosted_zone_id
|
39
39
|
}).flat_map(&:resource_record_sets)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
def list_health_checks
|
43
|
+
def list_health_checks(client = nil)
|
44
44
|
run_with_backoff do
|
45
|
-
route53.list_health_checks().flat_map(&:health_checks)
|
45
|
+
route53(client).list_health_checks().flat_map(&:health_checks)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
def get_health_check_tags(health_check_id)
|
49
|
+
def get_health_check_tags(health_check_id, client = nil)
|
50
50
|
run_with_backoff do
|
51
|
-
route53.list_tags_for_resource({
|
51
|
+
route53(client).list_tags_for_resource({
|
52
52
|
resource_type: 'healthcheck',
|
53
53
|
resource_id: health_check_id
|
54
54
|
}).resource_tag_set.tags
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
-
def find_health_check_by_tag(key, value)
|
59
|
-
list_health_checks.detect do |health_check|
|
60
|
-
get_health_check_tags(health_check.id).detect { |tag| tag.key == key && tag.value.include?(value) }
|
58
|
+
def find_health_check_by_tag(key, value, client = nil)
|
59
|
+
list_health_checks(client).detect do |health_check|
|
60
|
+
get_health_check_tags(health_check.id, client).detect { |tag| tag.key == key && tag.value.include?(value) }
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
data/lib/movable_ink/aws/ssm.rb
CHANGED
@@ -3,26 +3,29 @@ require 'aws-sdk-ssm'
|
|
3
3
|
module MovableInk
|
4
4
|
class AWS
|
5
5
|
module SSM
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
def ssm_client(region = nil)
|
8
|
+
@ssm_clients_map ||= {}
|
9
|
+
@ssm_clients_map[region] ||= Aws::SSM::Client.new(region: (region.nil?) ? 'us-east-1' : region)
|
8
10
|
end
|
9
11
|
|
10
|
-
def ssm_client_failover
|
11
|
-
@
|
12
|
+
def ssm_client_failover(failregion = nil)
|
13
|
+
@ssm_failover_clients_map ||= {}
|
14
|
+
@ssm_failover_clients_map[failregion] ||= Aws::SSM::Client.new(region: (failregion.nil?) ? 'us-west-2' : failregion)
|
12
15
|
end
|
13
16
|
|
14
|
-
def run_with_backoff_and_client_fallback(&block)
|
17
|
+
def run_with_backoff_and_client_fallback(region = nil, failregion = nil, &block)
|
15
18
|
run_with_backoff do
|
16
|
-
block.call(ssm_client)
|
19
|
+
block.call(ssm_client(region))
|
17
20
|
end
|
18
21
|
rescue MovableInk::AWS::Errors::FailedWithBackoff => e
|
19
22
|
run_with_backoff(tries: 3) do
|
20
|
-
block.call(ssm_client_failover)
|
23
|
+
block.call(ssm_client_failover(failregion))
|
21
24
|
end
|
22
25
|
end
|
23
26
|
|
24
|
-
def get_secret(environment: mi_env, role:, attribute:)
|
25
|
-
run_with_backoff_and_client_fallback do |ssm|
|
27
|
+
def get_secret(environment: mi_env, role:, attribute:, region: nil, failregion: nil)
|
28
|
+
run_with_backoff_and_client_fallback(region, failregion) do |ssm|
|
26
29
|
begin
|
27
30
|
resp = ssm.get_parameter(
|
28
31
|
name: "/#{environment}/#{role}/#{attribute}",
|
@@ -35,9 +38,9 @@ module MovableInk
|
|
35
38
|
end
|
36
39
|
end
|
37
40
|
|
38
|
-
def get_role_secrets(environment: mi_env, role:)
|
41
|
+
def get_role_secrets(environment: mi_env, role:, region: nil, failregion: nil)
|
39
42
|
path = "/#{environment}/#{role}"
|
40
|
-
run_with_backoff_and_client_fallback do |ssm|
|
43
|
+
run_with_backoff_and_client_fallback(region, failregion) do |ssm|
|
41
44
|
ssm.get_parameters_by_path(
|
42
45
|
path: path,
|
43
46
|
with_decryption: true
|
data/lib/movable_ink/version.rb
CHANGED
data/spec/ssm_spec.rb
CHANGED
@@ -68,6 +68,11 @@ describe MovableInk::AWS::SSM do
|
|
68
68
|
expect(Aws::SSM::Client).to receive(:new).with({ region: 'us-east-1' })
|
69
69
|
aws.ssm_client
|
70
70
|
end
|
71
|
+
|
72
|
+
it 'Allows region to be defined as a parameter' do
|
73
|
+
expect(Aws::SSM::Client).to receive(:new).with({ region: 'us-east-2' })
|
74
|
+
aws.ssm_client('us-east-2')
|
75
|
+
end
|
71
76
|
end
|
72
77
|
|
73
78
|
describe 'ssm_client_failover' do
|
@@ -75,6 +80,11 @@ describe MovableInk::AWS::SSM do
|
|
75
80
|
expect(Aws::SSM::Client).to receive(:new).with({ region: 'us-west-2' })
|
76
81
|
aws.ssm_client_failover
|
77
82
|
end
|
83
|
+
|
84
|
+
it 'fails over to parameter defined region' do
|
85
|
+
expect(Aws::SSM::Client).to receive(:new).with({ region: 'us-west-1' })
|
86
|
+
aws.ssm_client_failover('us-west-1')
|
87
|
+
end
|
78
88
|
end
|
79
89
|
|
80
90
|
describe 'run_with_backoff_and_client_fallback' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: MovableInkAWS
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Chesler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-core
|