aws-sdk-utils 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2c8229a4b96b285d3e03b2675e1f482fe446a029
4
+ data.tar.gz: f127949374fe7a17bbd379750bd468629fdcd9d4
5
+ SHA512:
6
+ metadata.gz: 90f49e47addaea72f2cefd066c879fe21a0874937f4a26418d8b25b922d0723581e079084238999293a7d02b207a97d7bd24a6e951b270178d8d28eee97d6fbb
7
+ data.tar.gz: 6f55efe16b543299e2f64881e133172468e56c73cb2bb70c3e288eb441d9c81276ee86745bf5c67706c639b3b3ea182f00f7a4fe2bf17a85df2cc8acf16b6f97
@@ -0,0 +1,43 @@
1
+ require 'aws-sdk'
2
+
3
+ class CloudFormationConverger
4
+
5
+ def converge(stack_name:,
6
+ stack_path:,
7
+ parameters:nil)
8
+
9
+ cloudformation_client = Aws::CloudFormation::Client.new
10
+ resource = Aws::CloudFormation::Resource.new(client: cloudformation_client)
11
+ if resource.stacks.find {|stack| stack.name == stack_name }
12
+ stack = resource.stack(stack_name)
13
+ begin
14
+ stack.update(template_body: IO.read(stack_path),
15
+ capabilities: %w(CAPABILITY_IAM))
16
+ rescue Exception => error
17
+ if error.to_s =~ /No updates are to be performed/
18
+ puts 'no updates necessary'
19
+ else
20
+ raise error
21
+ end
22
+ end
23
+
24
+ else
25
+ stack = resource.create_stack(stack_name: stack_name,
26
+ template_body: IO.read(stack_path),
27
+ capabilities: %w(CAPABILITY_IAM))
28
+ end
29
+
30
+ stack.wait_until(max_attempts:100, delay:15) do |stack|
31
+ stack.stack_status =~ /COMPLETE/ or stack.stack_status =~ /FAILED/
32
+ end
33
+
34
+ if stack.stack_status =~ /FAILED/
35
+ raise "#{stack_name} failed to converge: #{stack.stack_status}"
36
+ end
37
+
38
+ stack.outputs.inject({}) do |hash, output|
39
+ hash[output.output_key] = output.output_value
40
+ hash
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,33 @@
1
+ require 'aws-sdk'
2
+
3
+ class LambdaAliasSwitcher
4
+
5
+ def switch_alias(function_name:,
6
+ alias_arg:,
7
+ function_version: '$LATEST')
8
+ fail 'function name is nil' if function_name.nil?
9
+ fail 'alias arg is nil' if alias_arg.nil?
10
+
11
+ client = Aws::Lambda::Client.new
12
+
13
+ list_aliases_response = client.list_aliases function_name: function_name
14
+
15
+ found_alias = list_aliases_response.aliases.find do |alias_iter|
16
+ alias_iter.name == alias_arg
17
+ end
18
+
19
+ if found_alias.nil?
20
+
21
+ create_alias_response = client.create_alias function_name: function_name,
22
+ name: alias_arg,
23
+ function_version: function_version
24
+
25
+ create_alias_response.alias_arn
26
+ else
27
+ update_alias_response = client.update_alias function_name: function_name,
28
+ name: alias_arg,
29
+ function_version: function_version
30
+ update_alias_response.alias_arn
31
+ end
32
+ end
33
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aws-sdk-utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - someguy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aws-sdk
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 2.2.17
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 2.2.17
27
+ description: Low level utilities for dealing with AWS SDK
28
+ email:
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/cloudformation_converger.rb
34
+ - lib/lambda_alias_switcher.rb
35
+ homepage: https://github.com/stelligent/aws-sdk-utils
36
+ licenses:
37
+ - MIT
38
+ metadata: {}
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: 2.1.0
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubyforge_project:
56
+ rubygems_version: 2.6.0
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: aws-sdk-utils
60
+ test_files: []