ecs_helper 0.0.25 → 0.0.26

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6fcdfa5ea72481d6e07bea7f9bf9ec044ca79ece2c680233f538ed7a4e3a7683
4
- data.tar.gz: de5b3ea5643b878c6c27989d8fce5a87771c3da25fef2968494fccd422e0774d
3
+ metadata.gz: 16ad520e81a6ee88b6cb3b67c8e68ee1cf0e724ea20d1fdd8595ffda8023be65
4
+ data.tar.gz: 6d1398b798ae584fbb163d6234f01b209abb00bdd33489ee75e5ec2aae1f9bcd
5
5
  SHA512:
6
- metadata.gz: 5061f5c736a06834cfd0486891b82aa5d93cd0938acb9d7c8f8e492e01269b4ee6aac18a5d73a1eeacbb5a8c0ee45c34ea31d358a1729cfc8def3771c7a77d6b
7
- data.tar.gz: 4c488f4fc1b8badd9a82cee368dc1f21a7b505f047daa16ca51cf93f29e2559211d54a406ef2e05a6c3ffc39bf87d0192595129f7db871d2e0b70b00e0a925f9
6
+ metadata.gz: 44029c3fab73d9878376b1590bcba8a0f1ab39324a0aadac136f9736021514390fffec0c221d20769602c14934558221b1685eca8e1867a4f199e7790b5865b5
7
+ data.tar.gz: abda0b0495455d13034a82345d2ff5dc09349a08b80c4b641b41ad3117f37fe3a28e25469f4857275babcad65673587dbb76f6398602e8b7447095a6a5f99e8d
data/Gemfile.lock CHANGED
@@ -1,10 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ecs_helper (0.0.24)
4
+ ecs_helper (0.0.25)
5
5
  aws-sdk-ecr (~> 1.42, >= 1.42)
6
6
  aws-sdk-ecrpublic (~> 1.3, >= 1.3)
7
7
  aws-sdk-ecs (~> 1.80, >= 1.80)
8
+ aws-sdk-ssm (~> 1.0.0.rc7)
8
9
  colorize (~> 0.8, >= 0.8)
9
10
  json (~> 2.5, >= 2.5)
10
11
  terrapin (~> 0.6, >= 0.6)
@@ -17,13 +18,13 @@ GEM
17
18
  ast (2.4.2)
18
19
  awesome_print (1.9.2)
19
20
  aws-eventstream (1.2.0)
20
- aws-partitions (1.496.0)
21
+ aws-partitions (1.503.0)
21
22
  aws-sdk-core (3.121.0)
22
23
  aws-eventstream (~> 1, >= 1.0.2)
23
24
  aws-partitions (~> 1, >= 1.239.0)
24
25
  aws-sigv4 (~> 1.1)
25
26
  jmespath (~> 1.0)
26
- aws-sdk-ecr (1.45.0)
27
+ aws-sdk-ecr (1.46.0)
27
28
  aws-sdk-core (~> 3, >= 3.120.0)
28
29
  aws-sigv4 (~> 1.1)
29
30
  aws-sdk-ecrpublic (1.6.0)
@@ -32,6 +33,9 @@ GEM
32
33
  aws-sdk-ecs (1.85.0)
33
34
  aws-sdk-core (~> 3, >= 3.120.0)
34
35
  aws-sigv4 (~> 1.1)
36
+ aws-sdk-ssm (1.0.0)
37
+ aws-sdk-core (~> 3)
38
+ aws-sigv4 (~> 1.0)
35
39
  aws-sigv4 (1.4.0)
36
40
  aws-eventstream (~> 1, >= 1.0.2)
37
41
  byebug (11.1.3)
data/ecs_helper.gemspec CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
36
36
  s.add_runtime_dependency 'aws-sdk-ecr', '~> 1.42', '>= 1.42'
37
37
  s.add_runtime_dependency 'aws-sdk-ecrpublic', '~> 1.3', '>= 1.3'
38
38
  s.add_runtime_dependency 'aws-sdk-ecs', '~> 1.80', '>= 1.80'
39
+ s.add_runtime_dependency 'aws-sdk-ssm', '~> 1.0.0.rc7'
39
40
  s.add_runtime_dependency 'colorize', '~> 0.8', '>= 0.8'
40
41
  s.add_runtime_dependency 'json', '~> 2.5', '>= 2.5'
41
42
  s.add_runtime_dependency 'terrapin', '~> 0.6', '>= 0.6'
@@ -1,11 +1,13 @@
1
1
  require 'aws-sdk-ecs'
2
2
  require 'aws-sdk-ecr'
3
+ require 'aws-sdk-ssm'
3
4
 
4
5
  class ECSHelper::Client
5
- attr_accessor :ecs, :ecr
6
+ attr_accessor :ecs, :ecr, :ssm
6
7
  def initialize
7
8
  @ecs = Aws::ECS::Client.new
8
9
  @ecr = Aws::ECR::Client.new
10
+ @ssm = Aws::SSM::Client.new
9
11
  end
10
12
 
11
13
  # ECS
@@ -62,4 +64,9 @@ class ECSHelper::Client
62
64
  def describe_images(params = {})
63
65
  ecr.describe_images(params).image_details[0]
64
66
  end
67
+
68
+ # SSM
69
+ def get_ssm_parameters(params = {})
70
+ ssm.get_parameters(params).parameters
71
+ end
65
72
  end
@@ -6,6 +6,7 @@ class ECSHelper::Command::Base
6
6
  include ECSHelper::Logging
7
7
  attr_accessor :type, :options, :helper, :client, :option_parser
8
8
 
9
+
9
10
  def initialize(helper)
10
11
  @client = helper.client
11
12
  @helper = helper
@@ -0,0 +1,46 @@
1
+ require 'terrapin'
2
+
3
+ class ECSHelper::Command::ExportEnvSecrets < ECSHelper::Command::Base
4
+ attr_accessor :params
5
+
6
+ def cmd_option_parser
7
+ options = {
8
+ env_vars: []
9
+ }
10
+ parser = ::OptionParser.new do |opts|
11
+ opts.banner = "Usage: ecs_helper export_env_secrets"
12
+ opts.on('-n', '--name=VARIABLE', '') { |o| options[:env_vars] << o }
13
+ end
14
+ [parser, options]
15
+ end
16
+
17
+ def required
18
+ []
19
+ end
20
+
21
+ def run
22
+ return log("No ENV secrets to export. Please pass ENV variables names using -n") if options[:env_vars].empty?
23
+ export_values
24
+ end
25
+
26
+ private
27
+
28
+ def to_aws_ssm_name(name)
29
+ "/#{helper.project}-#{helper.application}-#{helper.environment}/#{name}"
30
+ end
31
+
32
+ def export_values
33
+ params_name = options[:env_vars].map {|var_name| to_aws_ssm_name(var_name)}
34
+ aws_ssm_params = client.get_ssm_parameters(names: params_name, with_decryption: true)
35
+
36
+ variables = (['export'] + aws_ssm_params.map do |aws_ssm_param|
37
+ next if aws_ssm_param.empty?
38
+ value = aws_ssm_param.value
39
+ name = aws_ssm_param.name.split('/').last
40
+
41
+ "#{name}=#{value}"
42
+ rescue Aws::SSM::Errors::ParameterNotFound
43
+ next
44
+ end).join(' ')
45
+ end
46
+ end
@@ -15,7 +15,7 @@ class ECSHelper::Command::ExportImages < ECSHelper::Command::Base
15
15
  end
16
16
 
17
17
  def run
18
- puts export_images
18
+ export_images
19
19
  end
20
20
 
21
21
  private
@@ -6,6 +6,7 @@ class ECSHelper::Command
6
6
  autoload :ExportImages, 'ecs_helper/command/export_images'
7
7
  autoload :ECRLogin, 'ecs_helper/command/ecr_login'
8
8
  autoload :RunCommand, 'ecs_helper/command/run_command'
9
+ autoload :ExportEnvSecrets, 'ecs_helper/command/export_env_secrets'
9
10
 
10
11
  CMD_MAPPING = {
11
12
  "build_and_push" => BuildAndPush,
@@ -13,6 +14,7 @@ class ECSHelper::Command
13
14
  "export_images" => ExportImages,
14
15
  "ecr_login" => ECRLogin,
15
16
  "run_command" => RunCommand,
17
+ "export_env_secrets" => ExportEnvSecrets,
16
18
  }
17
19
  AVAILABLE_COMMANDS = CMD_MAPPING.keys
18
20
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ECSHelper
4
- VERSION = '0.0.25'
4
+ VERSION = '0.0.26'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecs_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.25
4
+ version: 0.0.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Petrov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-19 00:00:00.000000000 Z
11
+ date: 2021-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -238,6 +238,20 @@ dependencies:
238
238
  - - "~>"
239
239
  - !ruby/object:Gem::Version
240
240
  version: '1.80'
241
+ - !ruby/object:Gem::Dependency
242
+ name: aws-sdk-ssm
243
+ requirement: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - "~>"
246
+ - !ruby/object:Gem::Version
247
+ version: 1.0.0.rc7
248
+ type: :runtime
249
+ prerelease: false
250
+ version_requirements: !ruby/object:Gem::Requirement
251
+ requirements:
252
+ - - "~>"
253
+ - !ruby/object:Gem::Version
254
+ version: 1.0.0.rc7
241
255
  - !ruby/object:Gem::Dependency
242
256
  name: colorize
243
257
  requirement: !ruby/object:Gem::Requirement
@@ -322,6 +336,7 @@ files:
322
336
  - lib/ecs_helper/command/build_and_push.rb
323
337
  - lib/ecs_helper/command/deploy.rb
324
338
  - lib/ecs_helper/command/ecr_login.rb
339
+ - lib/ecs_helper/command/export_env_secrets.rb
325
340
  - lib/ecs_helper/command/export_images.rb
326
341
  - lib/ecs_helper/command/run_command.rb
327
342
  - lib/ecs_helper/common_helper.rb