ecs_helper 0.0.25 → 0.0.26

Sign up to get free protection for your applications and to get access to all the features.
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