TerraformDevKit 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.appveyor.yml +0 -0
- data/.gitignore +0 -0
- data/.rspec +2 -2
- data/.travis.yml +8 -8
- data/Gemfile +4 -4
- data/LICENSE +0 -0
- data/README.md +206 -206
- data/Rakefile +6 -6
- data/TerraformDevKit.gemspec +36 -36
- data/bin/console +14 -14
- data/bin/setup +8 -8
- data/exe/wait_for_url +0 -0
- data/lib/TerraformDevKit.rb +21 -21
- data/lib/TerraformDevKit/aws/aws.rb +65 -65
- data/lib/TerraformDevKit/aws/cloudfront.rb +20 -20
- data/lib/TerraformDevKit/aws/dynamodb.rb +46 -46
- data/lib/TerraformDevKit/aws/s3.rb +44 -44
- data/lib/TerraformDevKit/aws/terraform_remote_state.rb +67 -67
- data/lib/TerraformDevKit/backup_state.rb +18 -18
- data/lib/TerraformDevKit/command.rb +0 -0
- data/lib/TerraformDevKit/config.rb +0 -0
- data/lib/TerraformDevKit/download.rb +0 -0
- data/lib/TerraformDevKit/environment.rb +0 -0
- data/lib/TerraformDevKit/extended_file_utils.rb +14 -14
- data/lib/TerraformDevKit/os.rb +0 -0
- data/lib/TerraformDevKit/request.rb +0 -0
- data/lib/TerraformDevKit/retry.rb +0 -0
- data/lib/TerraformDevKit/terraform_config_manager.rb +0 -0
- data/lib/TerraformDevKit/terraform_env_manager.rb +0 -0
- data/lib/TerraformDevKit/terraform_installer.rb +0 -0
- data/lib/TerraformDevKit/terraform_log_filter.rb +0 -0
- data/lib/TerraformDevKit/terraform_project_config.rb +10 -10
- data/lib/TerraformDevKit/terraform_template_config_file.rb +0 -0
- data/lib/TerraformDevKit/url.rb +0 -0
- data/lib/TerraformDevKit/version.rb +3 -3
- data/lib/TerraformDevKit/zip_file_generator.rb +47 -47
- data/tasks/devkit.rake +194 -192
- metadata +3 -3
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require 'bundler/gem_tasks'
|
2
|
-
require 'rspec/core/rake_task'
|
3
|
-
|
4
|
-
RSpec::Core::RakeTask.new(:spec)
|
5
|
-
|
6
|
-
task :default => :spec
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
|
4
|
+
RSpec::Core::RakeTask.new(:spec)
|
5
|
+
|
6
|
+
task :default => :spec
|
data/TerraformDevKit.gemspec
CHANGED
@@ -1,36 +1,36 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
lib = File.expand_path('../lib', __FILE__)
|
4
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
require 'TerraformDevKit/version'
|
6
|
-
|
7
|
-
Gem::Specification.new do |spec|
|
8
|
-
spec.name = 'TerraformDevKit'
|
9
|
-
spec.version = TerraformDevKit::VERSION
|
10
|
-
spec.authors = ['Victor Jimenez']
|
11
|
-
spec.email = ['vjimenez@vistaprint.com']
|
12
|
-
|
13
|
-
spec.summary = 'Set of scripts to ease development and testing with Terraform.'
|
14
|
-
spec.homepage = 'https://github.com/vistaprint/TerraformDevKit'
|
15
|
-
spec.license = 'Apache-2.0'
|
16
|
-
|
17
|
-
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
-
f.match(%r{^(test|spec|features)/})
|
19
|
-
end
|
20
|
-
spec.bindir = 'exe'
|
21
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
-
spec.require_paths = ['lib']
|
23
|
-
|
24
|
-
spec.add_development_dependency 'bundler', '~> 1.14'
|
25
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
-
spec.add_development_dependency 'rspec', '~> 3.0'
|
27
|
-
spec.add_development_dependency 'webmock', '~> 3.0'
|
28
|
-
|
29
|
-
spec.add_runtime_dependency 'aws-sdk-core', '~> 3'
|
30
|
-
spec.add_runtime_dependency 'aws-sdk-dynamodb', '~> 1'
|
31
|
-
spec.add_runtime_dependency 'aws-sdk-cloudfront', '~> 1'
|
32
|
-
spec.add_runtime_dependency 'aws-sdk-s3', '~> 1'
|
33
|
-
spec.add_runtime_dependency 'mustache', '~> 1.0'
|
34
|
-
spec.add_runtime_dependency 'rainbow', '~> 3.0'
|
35
|
-
spec.add_runtime_dependency 'rubyzip', '~> 1.2'
|
36
|
-
end
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'TerraformDevKit/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'TerraformDevKit'
|
9
|
+
spec.version = TerraformDevKit::VERSION
|
10
|
+
spec.authors = ['Victor Jimenez']
|
11
|
+
spec.email = ['vjimenez@vistaprint.com']
|
12
|
+
|
13
|
+
spec.summary = 'Set of scripts to ease development and testing with Terraform.'
|
14
|
+
spec.homepage = 'https://github.com/vistaprint/TerraformDevKit'
|
15
|
+
spec.license = 'Apache-2.0'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.bindir = 'exe'
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ['lib']
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.14'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
27
|
+
spec.add_development_dependency 'webmock', '~> 3.0'
|
28
|
+
|
29
|
+
spec.add_runtime_dependency 'aws-sdk-core', '~> 3'
|
30
|
+
spec.add_runtime_dependency 'aws-sdk-dynamodb', '~> 1'
|
31
|
+
spec.add_runtime_dependency 'aws-sdk-cloudfront', '~> 1'
|
32
|
+
spec.add_runtime_dependency 'aws-sdk-s3', '~> 1'
|
33
|
+
spec.add_runtime_dependency 'mustache', '~> 1.0'
|
34
|
+
spec.add_runtime_dependency 'rainbow', '~> 3.0'
|
35
|
+
spec.add_runtime_dependency 'rubyzip', '~> 1.2'
|
36
|
+
end
|
data/bin/console
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "TerraformDevKit"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "TerraformDevKit"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
set -euo pipefail
|
3
|
-
IFS=$'\n\t'
|
4
|
-
set -vx
|
5
|
-
|
6
|
-
bundle install
|
7
|
-
|
8
|
-
# Do any other automated setup that you need to do here
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
set -euo pipefail
|
3
|
+
IFS=$'\n\t'
|
4
|
+
set -vx
|
5
|
+
|
6
|
+
bundle install
|
7
|
+
|
8
|
+
# Do any other automated setup that you need to do here
|
data/exe/wait_for_url
CHANGED
File without changes
|
data/lib/TerraformDevKit.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
require 'TerraformDevKit/aws/aws'
|
2
|
-
require 'TerraformDevKit/aws/cloudfront'
|
3
|
-
require 'TerraformDevKit/aws/dynamodb'
|
4
|
-
require 'TerraformDevKit/aws/terraform_remote_state'
|
5
|
-
require 'TerraformDevKit/aws/s3'
|
6
|
-
require 'TerraformDevKit/backup_state'
|
7
|
-
require 'TerraformDevKit/command'
|
8
|
-
require 'TerraformDevKit/config'
|
9
|
-
require 'TerraformDevKit/environment'
|
10
|
-
require 'TerraformDevKit/extended_file_utils'
|
11
|
-
require 'TerraformDevKit/os'
|
12
|
-
require 'TerraformDevKit/request'
|
13
|
-
require 'TerraformDevKit/retry'
|
14
|
-
require 'TerraformDevKit/terraform_config_manager'
|
15
|
-
require 'TerraformDevKit/terraform_env_manager'
|
16
|
-
require 'TerraformDevKit/terraform_installer'
|
17
|
-
require 'TerraformDevKit/terraform_log_filter'
|
18
|
-
require 'TerraformDevKit/terraform_project_config'
|
19
|
-
require 'TerraformDevKit/terraform_template_config_file'
|
20
|
-
require 'TerraformDevKit/url'
|
21
|
-
require 'TerraformDevKit/version'
|
1
|
+
require 'TerraformDevKit/aws/aws'
|
2
|
+
require 'TerraformDevKit/aws/cloudfront'
|
3
|
+
require 'TerraformDevKit/aws/dynamodb'
|
4
|
+
require 'TerraformDevKit/aws/terraform_remote_state'
|
5
|
+
require 'TerraformDevKit/aws/s3'
|
6
|
+
require 'TerraformDevKit/backup_state'
|
7
|
+
require 'TerraformDevKit/command'
|
8
|
+
require 'TerraformDevKit/config'
|
9
|
+
require 'TerraformDevKit/environment'
|
10
|
+
require 'TerraformDevKit/extended_file_utils'
|
11
|
+
require 'TerraformDevKit/os'
|
12
|
+
require 'TerraformDevKit/request'
|
13
|
+
require 'TerraformDevKit/retry'
|
14
|
+
require 'TerraformDevKit/terraform_config_manager'
|
15
|
+
require 'TerraformDevKit/terraform_env_manager'
|
16
|
+
require 'TerraformDevKit/terraform_installer'
|
17
|
+
require 'TerraformDevKit/terraform_log_filter'
|
18
|
+
require 'TerraformDevKit/terraform_project_config'
|
19
|
+
require 'TerraformDevKit/terraform_template_config_file'
|
20
|
+
require 'TerraformDevKit/url'
|
21
|
+
require 'TerraformDevKit/version'
|
@@ -1,65 +1,65 @@
|
|
1
|
-
require 'aws-sdk-core'
|
2
|
-
|
3
|
-
Aws.use_bundled_cert!
|
4
|
-
|
5
|
-
module TerraformDevKit
|
6
|
-
module Aws
|
7
|
-
class AwsConfig
|
8
|
-
def initialize(config)
|
9
|
-
unless config.nil?
|
10
|
-
@profile = config.fetch('profile', nil)
|
11
|
-
@region = config.fetch('region', nil)
|
12
|
-
@access_key_id = config.fetch('access_key_id', nil)
|
13
|
-
@secret_access_key = config.fetch('secret_access_key', nil)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def credentials
|
18
|
-
unless profile.nil?
|
19
|
-
credentials = ::Aws::SharedCredentials.new(profile_name: profile)
|
20
|
-
return credentials if credentials.set?
|
21
|
-
end
|
22
|
-
|
23
|
-
return ::Aws::Credentials.new(*access_keys) if access_keys_available?
|
24
|
-
|
25
|
-
raise 'Cannot find AWS credentials'
|
26
|
-
end
|
27
|
-
|
28
|
-
def region
|
29
|
-
@region || ENV['AWS_REGION']
|
30
|
-
end
|
31
|
-
|
32
|
-
def profile
|
33
|
-
@profile || ENV['AWS_PROFILE']
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def access_keys
|
39
|
-
return config_access_keys if config_has_access_keys?
|
40
|
-
return environment_access_keys if environment_has_access_keys?
|
41
|
-
nil
|
42
|
-
end
|
43
|
-
|
44
|
-
def access_keys_available?
|
45
|
-
config_has_access_keys? || environment_has_access_keys?
|
46
|
-
end
|
47
|
-
|
48
|
-
def config_has_access_keys?
|
49
|
-
!@access_key_id.nil? && !@secret_access_key.nil?
|
50
|
-
end
|
51
|
-
|
52
|
-
def config_access_keys
|
53
|
-
return @access_key_id, @secret_access_key
|
54
|
-
end
|
55
|
-
|
56
|
-
def environment_has_access_keys?
|
57
|
-
ENV.key?('AWS_ACCESS_KEY_ID') && ENV.key?('AWS_SECRET_ACCESS_KEY')
|
58
|
-
end
|
59
|
-
|
60
|
-
def environment_access_keys
|
61
|
-
return ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
1
|
+
require 'aws-sdk-core'
|
2
|
+
|
3
|
+
Aws.use_bundled_cert!
|
4
|
+
|
5
|
+
module TerraformDevKit
|
6
|
+
module Aws
|
7
|
+
class AwsConfig
|
8
|
+
def initialize(config)
|
9
|
+
unless config.nil?
|
10
|
+
@profile = config.fetch('profile', nil)
|
11
|
+
@region = config.fetch('region', nil)
|
12
|
+
@access_key_id = config.fetch('access_key_id', nil)
|
13
|
+
@secret_access_key = config.fetch('secret_access_key', nil)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def credentials
|
18
|
+
unless profile.nil?
|
19
|
+
credentials = ::Aws::SharedCredentials.new(profile_name: profile)
|
20
|
+
return credentials if credentials.set?
|
21
|
+
end
|
22
|
+
|
23
|
+
return ::Aws::Credentials.new(*access_keys) if access_keys_available?
|
24
|
+
|
25
|
+
raise 'Cannot find AWS credentials'
|
26
|
+
end
|
27
|
+
|
28
|
+
def region
|
29
|
+
@region || ENV['AWS_REGION']
|
30
|
+
end
|
31
|
+
|
32
|
+
def profile
|
33
|
+
@profile || ENV['AWS_PROFILE']
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def access_keys
|
39
|
+
return config_access_keys if config_has_access_keys?
|
40
|
+
return environment_access_keys if environment_has_access_keys?
|
41
|
+
nil
|
42
|
+
end
|
43
|
+
|
44
|
+
def access_keys_available?
|
45
|
+
config_has_access_keys? || environment_has_access_keys?
|
46
|
+
end
|
47
|
+
|
48
|
+
def config_has_access_keys?
|
49
|
+
!@access_key_id.nil? && !@secret_access_key.nil?
|
50
|
+
end
|
51
|
+
|
52
|
+
def config_access_keys
|
53
|
+
return @access_key_id, @secret_access_key
|
54
|
+
end
|
55
|
+
|
56
|
+
def environment_has_access_keys?
|
57
|
+
ENV.key?('AWS_ACCESS_KEY_ID') && ENV.key?('AWS_SECRET_ACCESS_KEY')
|
58
|
+
end
|
59
|
+
|
60
|
+
def environment_access_keys
|
61
|
+
return ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -1,20 +1,20 @@
|
|
1
|
-
require 'aws-sdk-cloudfront'
|
2
|
-
|
3
|
-
module TerraformDevKit
|
4
|
-
module Aws
|
5
|
-
class CloudFront
|
6
|
-
def initialize(credentials, region)
|
7
|
-
@cloudfront = ::Aws::CloudFront::Client.new(
|
8
|
-
region: region,
|
9
|
-
credentials:credentials
|
10
|
-
)
|
11
|
-
end
|
12
|
-
|
13
|
-
def distribution_is_deployed?(distribution_id)
|
14
|
-
@cloudfront.get_distribution({
|
15
|
-
id: distribution_id,
|
16
|
-
}).distribution.status == 'Deployed'
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
1
|
+
require 'aws-sdk-cloudfront'
|
2
|
+
|
3
|
+
module TerraformDevKit
|
4
|
+
module Aws
|
5
|
+
class CloudFront
|
6
|
+
def initialize(credentials, region)
|
7
|
+
@cloudfront = ::Aws::CloudFront::Client.new(
|
8
|
+
region: region,
|
9
|
+
credentials:credentials
|
10
|
+
)
|
11
|
+
end
|
12
|
+
|
13
|
+
def distribution_is_deployed?(distribution_id)
|
14
|
+
@cloudfront.get_distribution({
|
15
|
+
id: distribution_id,
|
16
|
+
}).distribution.status == 'Deployed'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,46 +1,46 @@
|
|
1
|
-
require 'aws-sdk-dynamodb'
|
2
|
-
|
3
|
-
Aws.use_bundled_cert!
|
4
|
-
|
5
|
-
module TerraformDevKit
|
6
|
-
module Aws
|
7
|
-
# Wrapper class around aws dynamodb
|
8
|
-
class DynamoDB
|
9
|
-
def initialize(credentials, region)
|
10
|
-
@db_client = ::Aws::DynamoDB::Client.new(
|
11
|
-
credentials: credentials,
|
12
|
-
region: region
|
13
|
-
)
|
14
|
-
end
|
15
|
-
|
16
|
-
def put_item(table_name, item)
|
17
|
-
@db_client.put_item({item: item, table_name: table_name})
|
18
|
-
end
|
19
|
-
|
20
|
-
def create_table(table_name, attributes, keys, read_capacity, write_capacity)
|
21
|
-
@db_client.create_table(
|
22
|
-
attribute_definitions: attributes,
|
23
|
-
key_schema: keys,
|
24
|
-
provisioned_throughput: {
|
25
|
-
read_capacity_units: read_capacity,
|
26
|
-
write_capacity_units: write_capacity
|
27
|
-
},
|
28
|
-
table_name: table_name
|
29
|
-
)
|
30
|
-
end
|
31
|
-
|
32
|
-
def get_table_status(table_name)
|
33
|
-
resp = @db_client.describe_table({
|
34
|
-
table_name: table_name,
|
35
|
-
})
|
36
|
-
resp.table.table_status
|
37
|
-
end
|
38
|
-
|
39
|
-
def delete_table(table_name)
|
40
|
-
@db_client.delete_table({
|
41
|
-
table_name: table_name,
|
42
|
-
})
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
1
|
+
require 'aws-sdk-dynamodb'
|
2
|
+
|
3
|
+
Aws.use_bundled_cert!
|
4
|
+
|
5
|
+
module TerraformDevKit
|
6
|
+
module Aws
|
7
|
+
# Wrapper class around aws dynamodb
|
8
|
+
class DynamoDB
|
9
|
+
def initialize(credentials, region)
|
10
|
+
@db_client = ::Aws::DynamoDB::Client.new(
|
11
|
+
credentials: credentials,
|
12
|
+
region: region
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
def put_item(table_name, item)
|
17
|
+
@db_client.put_item({item: item, table_name: table_name})
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_table(table_name, attributes, keys, read_capacity, write_capacity)
|
21
|
+
@db_client.create_table(
|
22
|
+
attribute_definitions: attributes,
|
23
|
+
key_schema: keys,
|
24
|
+
provisioned_throughput: {
|
25
|
+
read_capacity_units: read_capacity,
|
26
|
+
write_capacity_units: write_capacity
|
27
|
+
},
|
28
|
+
table_name: table_name
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_table_status(table_name)
|
33
|
+
resp = @db_client.describe_table({
|
34
|
+
table_name: table_name,
|
35
|
+
})
|
36
|
+
resp.table.table_status
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete_table(table_name)
|
40
|
+
@db_client.delete_table({
|
41
|
+
table_name: table_name,
|
42
|
+
})
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -1,44 +1,44 @@
|
|
1
|
-
require 'aws-sdk-s3'
|
2
|
-
|
3
|
-
Aws.use_bundled_cert!
|
4
|
-
|
5
|
-
module TerraformDevKit
|
6
|
-
module Aws
|
7
|
-
class S3
|
8
|
-
def initialize(credentials, region)
|
9
|
-
@s3_client = ::Aws::S3::Client.new(
|
10
|
-
credentials: credentials,
|
11
|
-
region: region
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
def create_bucket(bucket_name)
|
16
|
-
@s3_client.create_bucket(
|
17
|
-
bucket: bucket_name
|
18
|
-
)
|
19
|
-
end
|
20
|
-
|
21
|
-
def delete_bucket(bucket_name)
|
22
|
-
empty_bucket(bucket_name)
|
23
|
-
|
24
|
-
@s3_client.delete_bucket(
|
25
|
-
bucket: bucket_name
|
26
|
-
)
|
27
|
-
end
|
28
|
-
|
29
|
-
def empty_bucket(bucket_name)
|
30
|
-
keys_to_delete = @s3_client
|
31
|
-
.list_objects_v2(bucket: bucket_name)
|
32
|
-
.contents
|
33
|
-
.map { |x| { key: x.key } }
|
34
|
-
|
35
|
-
@s3_client.delete_objects(
|
36
|
-
bucket: bucket_name,
|
37
|
-
delete: {
|
38
|
-
objects: keys_to_delete
|
39
|
-
}
|
40
|
-
)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
1
|
+
require 'aws-sdk-s3'
|
2
|
+
|
3
|
+
Aws.use_bundled_cert!
|
4
|
+
|
5
|
+
module TerraformDevKit
|
6
|
+
module Aws
|
7
|
+
class S3
|
8
|
+
def initialize(credentials, region)
|
9
|
+
@s3_client = ::Aws::S3::Client.new(
|
10
|
+
credentials: credentials,
|
11
|
+
region: region
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_bucket(bucket_name)
|
16
|
+
@s3_client.create_bucket(
|
17
|
+
bucket: bucket_name
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
def delete_bucket(bucket_name)
|
22
|
+
empty_bucket(bucket_name)
|
23
|
+
|
24
|
+
@s3_client.delete_bucket(
|
25
|
+
bucket: bucket_name
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
29
|
+
def empty_bucket(bucket_name)
|
30
|
+
keys_to_delete = @s3_client
|
31
|
+
.list_objects_v2(bucket: bucket_name)
|
32
|
+
.contents
|
33
|
+
.map { |x| { key: x.key } }
|
34
|
+
|
35
|
+
@s3_client.delete_objects(
|
36
|
+
bucket: bucket_name,
|
37
|
+
delete: {
|
38
|
+
objects: keys_to_delete
|
39
|
+
}
|
40
|
+
)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|