train-aws 0.1.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 55d3555be3cd3461a42daef54bf0d1de9ded9dd2
4
+ data.tar.gz: d681329529c4428c1ca97c04ae489d6504e9943c
5
+ SHA512:
6
+ metadata.gz: 56ce935a372ce3b0e7194a1fe3fe7e312b9841fc5ea451ff87eda0c4ee54b23d5b40691b49e6c4062699eebd24674c62402cb346687d0b0d88bc635ceb1f9c86
7
+ data.tar.gz: 73f49504bf5ad60d360b3135e41c50928d5a8e801abdbe28d59bd0216cf33b4469d9dd6b0d4b0720d260c0cd6dab32d7baee15f64e2060bc49f86d20be6c5a99
data/Gemfile ADDED
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+ source 'https://rubygems.org'
3
+
4
+ # This is Gemfile, which is used by bundler
5
+ # to ensure a coherent set of gems is installed.
6
+ # This file lists dependencies needed when outside
7
+ # of a gem (the gemspec lists deps for gem deployment)
8
+
9
+ # Bundler should refer to the gemspec for any dependencies.
10
+ gemspec
11
+
12
+ # Remaining group is only used for development.
13
+ group :development do
14
+ gem 'pry'
15
+ gem 'bundler'
16
+ gem 'byebug'
17
+ gem 'minitest'
18
+ gem 'mocha'
19
+ gem 'm'
20
+ gem 'rake'
21
+ gem 'rubocop', '= 0.49.1' # Need to keep in sync with main InSpec project, so config files will work
22
+ end
@@ -0,0 +1,103 @@
1
+ # train-aws - Train Plugin for connecting to AWS
2
+
3
+ This plugin allows applications that rely on Train to communicate with the Amazon Web Services API. For example, InSpec uses this to perform compliance checks against AWS infrastructure components.
4
+
5
+ The plugin is a wrapper around `aws-sdk-core` version 3, with additional service-specific gems added where needed by the `inspec-aws` resource pack.
6
+
7
+ Train itself has no CLI, nor a sophisticated test harness. InSpec does have such facilities, so installing Train plugins will require an InSpec installation. You do not need to use or understand InSpec.
8
+
9
+ Train plugins may be developed without an InSpec installation.
10
+
11
+ ## To Install this as a User
12
+
13
+ Train plugins are distributed as gems. You may choose to manage the gem yourself, but if you are an InSpec user, InSPec can handle it for you.
14
+
15
+ You will need InSpec v2.3 or later.
16
+
17
+ Simply run:
18
+
19
+ ```
20
+ $ inspec plugin install train-aws
21
+ ```
22
+
23
+ You can then run:
24
+
25
+ ```
26
+ $ inspec detect -t aws://
27
+ == Platform Details
28
+
29
+ Name: aws
30
+ Families: cloud, api
31
+ Release: train-aws: v0.1.0, aws-sdk-core: 3.30.0
32
+ Arch: -
33
+ ```
34
+
35
+ ## Authenticating to AWS
36
+
37
+ These instructions assume you are using InSpec.
38
+
39
+ ### Setting up AWS credentials for InSpec
40
+
41
+ InSpec uses the standard AWS authentication mechanisms. Typically, you will create an IAM user specifically for auditing activities.
42
+
43
+ * 1 Create an IAM user in the AWS console, with your choice of username. Check the box marked "Programmatic Access."
44
+ * 2 On the Permissions screen, choose Direct Attach. Select the AWS-managed IAM Profile named "ReadOnlyAccess." If you wish to restrict the user further, you may do so; see individual InSpec resources to identify which permissions are required.
45
+ * 3 After generating the key, record the Access Key ID and Secret Key.
46
+
47
+ #### Using Environment Variables to provide credentials
48
+
49
+ You may provide the credentials to InSpec by setting the following environment variables: `AWS_REGION`, `AWS_ACCESS_KEY_ID`, and `AWS_SECRET_KEY_ID`. You may also use `AWS_PROFILE`, or if you are using MFA, `AWS_SESSION_TOKEN`. See the [AWS Command Line Interface Docs](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) for details.
50
+
51
+ Once you have your environment variables set, you can verify your credentials by running:
52
+
53
+ ```bash
54
+ you$ inspec detect -t aws://
55
+
56
+ == Platform Details
57
+ Name: aws
58
+ Families: cloud, api
59
+ Release: aws-sdk-v2.10.125
60
+ ```
61
+
62
+ #### Using the InSpec target option to provide credentials on AWS
63
+
64
+ Look for a file in your home directory named `~/.aws/credentials`. If it does not exist, create it. Choose a name for your profile; here, we're using the name 'auditing'. Add your credentials as a new profile, in INI format:
65
+
66
+ ```bash
67
+ [auditing]
68
+ aws_access_key_id = AKIA....
69
+ aws_secret_access_key = 1234....abcd
70
+ ```
71
+
72
+ You may now run InSpec using the `--target` / `-t` option, using the format `-t aws://region/profile`. For example, to connect to the Ohio region using a profile named 'auditing', use `-t aws://us-east-2/auditing`. Any omitted portion will use teh environment variables.
73
+
74
+ To verify your credentials,
75
+
76
+ ```bash
77
+ you$ inspec detect -t aws://
78
+
79
+ == Platform Details
80
+ Name: aws
81
+ Families: cloud, api
82
+ Release: aws-sdk-v2.10.125
83
+ ```
84
+
85
+ ## Reporting Issues
86
+
87
+ Bugs, typos, limitations, and frustrations are welcome to be reported through the [GitHub issues page for the train-aws project](https://github.com/inspec/train-aws/issues).
88
+
89
+ You may also ask questions in the #inspec channel of the CHef Community Slack team. However, for an issue to get traction, please report it as a github issue.
90
+
91
+ ## Development on this Plugin
92
+
93
+ ### Development Process
94
+
95
+ If you wish to contribute to this plugin, please use the usual fork-branch-push-PR cycle. All functional changes need new tests, and bugfixes are expected to include a new test that demonstrates the bug.
96
+
97
+ ### Reference Information
98
+
99
+ [Plugin Development](https://github.com/inspec/train/blob/master/docs/dev/plugins.md) is documented on the `train` project on GitHub.
100
+
101
+ ### Testing changes against AWS
102
+
103
+ Live-fire testing against AWS is performed by the `integration` set of tests. To run the integration tests, you will need to have a set of AWS credentials exported to your environment. See test/integration/live_connect_test.rb .
@@ -0,0 +1,21 @@
1
+ # This file is known as the "entry point."
2
+ # This is the file Train will try to load if it
3
+ # thinks your plugin is needed.
4
+
5
+ # The *only* thing this file should do is setup the
6
+ # load path, then load plugin files.
7
+
8
+ # Next two lines simply add the path of the gem to the load path.
9
+ # This is not needed when being loaded as a gem; but when doing
10
+ # plugin development, you may need it. Either way, it's harmless.
11
+ libdir = File.dirname(__FILE__)
12
+ $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
13
+
14
+ # It's traditonal to keep your gem version in a separate file, so CI can find it easier.
15
+ require 'train-aws/version'
16
+
17
+ # A train plugin has three components: Transport, Connection, and Platform.
18
+ # Transport acts as the glue.
19
+ require 'train-aws/transport'
20
+ require 'train-aws/platform'
21
+ require 'train-aws/connection'
@@ -0,0 +1,99 @@
1
+ # Connection definition file for an example Train plugin.
2
+
3
+ # Most of the work of a Train plugin happens in this file.
4
+ # Connections derive from Train::Plugins::Transport::BaseConnection,
5
+ # and provide a variety of services. Later generations of the plugin
6
+ # API will likely separate out these responsibilities, but for now,
7
+ # some of the responsibilities include:
8
+ # * authentication to the target
9
+ # * platform / release /family detection
10
+ # * caching
11
+ # * API execution
12
+ # * marshalling to / from JSON
13
+ # You don't have to worry about most of this.
14
+
15
+ # Push platform detection out to a mixin, as it tends
16
+ # to develop at a different cadence than the rest
17
+ require 'train-aws/platform'
18
+ require 'train'
19
+ require 'train/plugins'
20
+
21
+ require 'aws-sdk-core'
22
+
23
+ require 'aws-sdk-cloudtrail'
24
+ require 'aws-sdk-cloudwatch'
25
+ require 'aws-sdk-cloudwatchlogs'
26
+ require 'aws-sdk-costandusagereportservice'
27
+ require 'aws-sdk-configservice'
28
+ require 'aws-sdk-ec2'
29
+ require 'aws-sdk-ecs'
30
+ require 'aws-sdk-eks'
31
+ require 'aws-sdk-elasticloadbalancing'
32
+ require 'aws-sdk-iam'
33
+ require 'aws-sdk-kms'
34
+ require 'aws-sdk-rds'
35
+ require 'aws-sdk-s3'
36
+ require 'aws-sdk-sqs'
37
+ require 'aws-sdk-sns'
38
+
39
+ module TrainPlugins
40
+ module Aws
41
+ # You must inherit from BaseConnection.
42
+ class Connection < Train::Plugins::Transport::BaseConnection
43
+ # We've placed platform detection in a separate module; pull it in here.
44
+ include TrainPlugins::Aws::Platform
45
+
46
+ def initialize(options)
47
+ # 'options' here is a hash, Symbol-keyed,
48
+ # of what Train.target_config decided to do with the URI that it was
49
+ # passed by `inspec -t` (or however the application gathered target information)
50
+ # Some plugins might use this moment to capture credentials from the URI,
51
+ # and the configure an underlying SDK accordingly.
52
+ # You might also take a moment to manipulate the options.
53
+ # Have a look at the Local, SSH, and AWS transports for ideas about what
54
+ # you can do with the options.
55
+
56
+ # Override for any cli options
57
+ # aws://region/my-profile
58
+ options[:region] = options[:host] || options[:region]
59
+ if options[:path]
60
+ # string the leading / from path
61
+ options[:profile] = options[:path].sub(%r{^/}, '')
62
+ end
63
+
64
+ # Now let the BaseConnection have a chance to configure itself.
65
+ super(options)
66
+
67
+ # Force enable caching.
68
+ enable_cache :api_call
69
+
70
+ # Why are we doing this?
71
+ # Why aren't we calling the AWS config system?
72
+ ENV['AWS_PROFILE'] = @options[:profile] if @options[:profile]
73
+ ENV['AWS_REGION'] = @options[:region] if @options[:region]
74
+ end
75
+
76
+ # We support caching on the aws_client call, but not the aws_resource call
77
+ def aws_client(klass)
78
+ return klass.new unless cache_enabled?(:api_call)
79
+ @cache[:api_call][klass.to_s.to_sym] ||= klass.new
80
+ end
81
+
82
+ def aws_resource(klass, args)
83
+ klass.new(args)
84
+ end
85
+
86
+ # TODO: determine exactly what this is used for
87
+ def uri
88
+ "aws://#{@options[:region]}"
89
+ end
90
+
91
+ def unique_identifier
92
+ # use aws account id
93
+ sts_client = aws_client(::Aws::STS::Client)
94
+ sts_client.get_caller_identity.account
95
+ end
96
+
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,37 @@
1
+ # Platform definition file. This is a good place to separate out any
2
+ # logic regarding the identification of the OS or API at the far end
3
+ # of the connection.
4
+
5
+ # Abbreviate the namespace here, if you like.
6
+ module TrainPlugins::Aws
7
+ # Since we're mixing in the platform detection facility into Connection,
8
+ # this has to come in as a Module.
9
+ module Platform
10
+ # The method `platform` is called when platform detection is
11
+ # about to be performed. Train core defines a sophisticated
12
+ # system for platform detection, but for most plugins, you'll
13
+ # only ever run on the special platform for which you are targeting.
14
+ def platform
15
+ # If you are declaring a new platform, you will need to tell
16
+ # Train a bit about it.
17
+ # If you were defining a cloud API, you should say you are a member
18
+ # of the cloud family.
19
+
20
+ # This plugin defines a new platform.
21
+ Train::Platforms.name('aws').in_family('cloud')
22
+
23
+ # When you know you will only ever run on your dedicated platform
24
+ # force_platform! lets you bypass platform detection.
25
+ # The options to this are not currently documented completely.
26
+
27
+ # Use release to report a version number. You might use the version
28
+ # of the plugin, or a version of an important underlying SDK, or a
29
+ # version of a remote API.
30
+ aws_version = Gem.loaded_specs['aws-sdk-core'].version
31
+ aws_version = "aws-sdk-core: v#{aws_version}"
32
+ plugin_version = "train-aws: v#{TrainPlugins::Aws::VERSION}"
33
+
34
+ force_platform!('aws', release: "#{plugin_version}, #{aws_version}")
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,44 @@
1
+
2
+ require 'train'
3
+ require 'train/plugins'
4
+ require 'aws-sdk-core'
5
+
6
+ # Train Plugins v1 are usually declared under the TrainPlugins namespace.
7
+ # Each plugin has three components: Transport, Connection, and Platform.
8
+ # We'll only define the Transport here, but we'll refer to the others.
9
+ require 'train-aws/connection'
10
+
11
+ module TrainPlugins
12
+ module Aws
13
+ class Transport < Train.plugin(1)
14
+ name 'aws'
15
+
16
+ # Pass ENV vars in using a block to `option`. This causes `
17
+ # option to lazy-evaluate the block to provide a default value.`
18
+ # Otherwise, we would read the ENV var (and set the default)
19
+ # once at compile time, which would make testing difficult.
20
+ # TODO: convert to thor-style defaults
21
+ option(:region, required: true) { ENV['AWS_REGION'] }
22
+ option(:access_key_id) { ENV['AWS_ACCESS_KEY_ID'] }
23
+ option(:secret_access_key) { ENV['AWS_SECRET_ACCESS_KEY'] }
24
+ option(:session_token) { ENV['AWS_SESSION_TOKEN'] }
25
+
26
+ # This can provide the access key id and secret access key
27
+ option(:profile) { ENV['AWS_PROFILE'] }
28
+
29
+ # The only thing you MUST do in a transport is a define a
30
+ # connection() method that returns a instance that is a
31
+ # subclass of BaseConnection.
32
+
33
+ # The options passed to this are undocumented and rarely used.
34
+ def connection(_instance_opts = nil)
35
+ # Typical practice is to cache the connection as an instance variable.
36
+ # Do what makes sense for your platform.
37
+ # @options here is the parsed options that the calling
38
+ # app handed to us at process invocation. See the Connection class
39
+ # for more details.
40
+ @connection ||= TrainPlugins::Aws::Connection.new(@options)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,10 @@
1
+ # This file exists simply to record the version number of the plugin.
2
+ # It is kept in a separate file, so that your gemspec can load it and
3
+ # learn the current version without loading the whole plugin. Also,
4
+ # many CI servers can update this file when "version bumping".
5
+
6
+ module TrainPlugins
7
+ module Aws
8
+ VERSION = '0.1.0'.freeze
9
+ end
10
+ end
@@ -0,0 +1,59 @@
1
+ # As plugins are usually packaged and distributed as a RubyGem,
2
+ # we have to provide a .gemspec file, which controls the gembuild
3
+ # and publish process. This is a fairly generic gemspec.
4
+
5
+ # It is traditional in a gemspec to dynamically load the current version
6
+ # from a file in the source tree. The next three lines make that happen.
7
+ lib = File.expand_path('../lib', __FILE__)
8
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
9
+ require 'train-aws/version'
10
+
11
+ Gem::Specification.new do |spec|
12
+ # Importantly, all Train plugins must be prefixed with `train-`
13
+ spec.name = 'train-aws'
14
+
15
+ # It is polite to namespace your plugin under InspecPlugins::YourPluginInCamelCase
16
+ spec.version = TrainPlugins::Aws::VERSION
17
+ spec.authors = ['Chef InSpec Team']
18
+ spec.email = ['inspec@chef.io']
19
+ spec.summary = "AWS API Transport for Train"
20
+ spec.description = 'Allows applictaions using Train to speak to AWS; handles authentication, cacheing, and SDK dependency management.'
21
+ spec.homepage = 'https://github.com/inspec/train-aws'
22
+ spec.license = 'Apache-2.0'
23
+
24
+ # Though complicated-looking, this is pretty standard for a gemspec.
25
+ # It just filters what will actually be packaged in the gem (leaving
26
+ # out tests, etc)
27
+ spec.files = %w{
28
+ README.md train-aws.gemspec Gemfile
29
+ } + Dir.glob(
30
+ 'lib/**/*', File::FNM_DOTMATCH
31
+ ).reject { |f| File.directory?(f) }
32
+ spec.require_paths = ['lib']
33
+
34
+ # If you rely on any other gems, list them here with any constraints.
35
+ # This is how `inspec plugin install` is able to manage your dependencies.
36
+
37
+ # If you only need certain gems during development or testing, list
38
+ # them in Gemfile, not here.
39
+
40
+ # Do not list inspec as a dependency of a train plugin.
41
+
42
+ spec.add_dependency 'train', '~> 2.0'
43
+ spec.add_dependency 'aws-sdk-core', '~> 3.0'
44
+ spec.add_dependency 'aws-sdk-cloudtrail', '~> 1.8'
45
+ spec.add_dependency 'aws-sdk-cloudwatch', '~> 1.13'
46
+ spec.add_dependency 'aws-sdk-cloudwatchlogs', '~> 1.13'
47
+ spec.add_dependency 'aws-sdk-configservice', '~> 1.21'
48
+ spec.add_dependency 'aws-sdk-costandusagereportservice', '~> 1.6'
49
+ spec.add_dependency 'aws-sdk-ec2', '~> 1.70'
50
+ spec.add_dependency 'aws-sdk-ecs', '~> 1.30'
51
+ spec.add_dependency 'aws-sdk-eks', '~> 1.9'
52
+ spec.add_dependency 'aws-sdk-elasticloadbalancing', '~> 1.8'
53
+ spec.add_dependency 'aws-sdk-iam', '~> 1.13'
54
+ spec.add_dependency 'aws-sdk-kms', '~> 1.13'
55
+ spec.add_dependency 'aws-sdk-rds', '~> 1.43'
56
+ spec.add_dependency 'aws-sdk-s3', '~> 1.30'
57
+ spec.add_dependency 'aws-sdk-sns', '~> 1.9'
58
+ spec.add_dependency 'aws-sdk-sqs', '~> 1.10'
59
+ end
metadata ADDED
@@ -0,0 +1,291 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: train-aws
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chef InSpec Team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-02-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: train
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-sdk-core
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: aws-sdk-cloudtrail
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.8'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: aws-sdk-cloudwatch
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.13'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.13'
69
+ - !ruby/object:Gem::Dependency
70
+ name: aws-sdk-cloudwatchlogs
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.13'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.13'
83
+ - !ruby/object:Gem::Dependency
84
+ name: aws-sdk-configservice
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.21'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.21'
97
+ - !ruby/object:Gem::Dependency
98
+ name: aws-sdk-costandusagereportservice
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.6'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.6'
111
+ - !ruby/object:Gem::Dependency
112
+ name: aws-sdk-ec2
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.70'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.70'
125
+ - !ruby/object:Gem::Dependency
126
+ name: aws-sdk-ecs
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.30'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.30'
139
+ - !ruby/object:Gem::Dependency
140
+ name: aws-sdk-eks
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.9'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.9'
153
+ - !ruby/object:Gem::Dependency
154
+ name: aws-sdk-elasticloadbalancing
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.8'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.8'
167
+ - !ruby/object:Gem::Dependency
168
+ name: aws-sdk-iam
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.13'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.13'
181
+ - !ruby/object:Gem::Dependency
182
+ name: aws-sdk-kms
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '1.13'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '1.13'
195
+ - !ruby/object:Gem::Dependency
196
+ name: aws-sdk-rds
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '1.43'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '1.43'
209
+ - !ruby/object:Gem::Dependency
210
+ name: aws-sdk-s3
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '1.30'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '1.30'
223
+ - !ruby/object:Gem::Dependency
224
+ name: aws-sdk-sns
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '1.9'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '1.9'
237
+ - !ruby/object:Gem::Dependency
238
+ name: aws-sdk-sqs
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '1.10'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '1.10'
251
+ description: Allows applictaions using Train to speak to AWS; handles authentication,
252
+ cacheing, and SDK dependency management.
253
+ email:
254
+ - inspec@chef.io
255
+ executables: []
256
+ extensions: []
257
+ extra_rdoc_files: []
258
+ files:
259
+ - Gemfile
260
+ - README.md
261
+ - lib/train-aws.rb
262
+ - lib/train-aws/connection.rb
263
+ - lib/train-aws/platform.rb
264
+ - lib/train-aws/transport.rb
265
+ - lib/train-aws/version.rb
266
+ - train-aws.gemspec
267
+ homepage: https://github.com/inspec/train-aws
268
+ licenses:
269
+ - Apache-2.0
270
+ metadata: {}
271
+ post_install_message:
272
+ rdoc_options: []
273
+ require_paths:
274
+ - lib
275
+ required_ruby_version: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: '0'
280
+ required_rubygems_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ requirements: []
286
+ rubyforge_project:
287
+ rubygems_version: 2.6.14.3
288
+ signing_key:
289
+ specification_version: 4
290
+ summary: AWS API Transport for Train
291
+ test_files: []