serverkit-aws 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: a57e09c031fe6375425d75add1e4a91ebcc47bb3
4
- data.tar.gz: 362b1425fbadec3124b9db2e2768e621fedf9a20
3
+ metadata.gz: 1e7fa8e75351d9ff3c9d5ffcffbe1546e651552b
4
+ data.tar.gz: 39393fc23076116a7de457249535f40cd746af87
5
5
  SHA512:
6
- metadata.gz: 9e13f5c6b752db825331d46ca0fd3e4a1ecd66e05e5dda558fe31dbdb8c8c14a157d56ddf12a92d7eb5b0bfd592389b3559e75fe4da633ae6c0abeb8821cac62
7
- data.tar.gz: bfe51e47fbd04a82e30ffe625904189deb47734040d535e27fbb1e606d5e1f07635cbdcb90beafa64f1157cd70801245a414191d23cb1686fbe48deb935dd80d
6
+ metadata.gz: fab356fef434f99366f9c4e4bb65145f98f75622df78469a78be773fdbc912224fa7e47788a80cc6d1aafc38bf2d8d6197144b11a36e527d1fca088c5a3c8e87
7
+ data.tar.gz: 25beffaeac0fb78c283b9d09066745ec781d519d616adb649f51743759f530b37810f185053905adb1189b8b1f8c7e30b1e6dd484d7b554a437b459d8f895f55
@@ -1,3 +1,6 @@
1
+ ## 0.0.4
2
+ - Add cloud_front_web_distribution resource
3
+
1
4
  ## 0.0.3
2
5
  - Fix gemspec name
3
6
 
data/README.md CHANGED
@@ -8,22 +8,42 @@ gem "serverkit-aws"
8
8
  ```
9
9
 
10
10
  ## Resource
11
- ### s3_bucket
12
- Create a S3 bucket.
11
+ ### cloud_front_web_distribution
12
+ Create a CloudFront web distribution.
13
13
 
14
14
  #### Attributes
15
- - name - S3 bucket name (required) (e.g. `"my-bucket"`)
16
15
  - aws_access_key_id - AWS access key ID
17
16
  - aws_region - AWS region
18
17
  - aws_secret_access_key - AWS secret access key
18
+ - distribution_config - distribution_config parameter
19
19
 
20
- Note: serverkit-s3 searches the following locations for credentials and a region:
20
+ Note: some default parameters are reverse-merged into given distribution_config.
21
21
 
22
- - `ENV["AWS_ACCESS_KEY_ID"]`
23
- - `ENV["AWS_REGION"]`
24
- - `ENV["AWS_SECRET_ACCESS_KEY"]`
25
- - The shared credentials ini file at `~/.aws/credentials`
26
- - From an instance profile when running on EC2
22
+ #### Example
23
+ ```yml
24
+ resources:
25
+ - type: cloud_front_web_distribution
26
+ aws_region: ap-northeast-1
27
+ distribution_config:
28
+ caller_reference: test
29
+ default_cache_behavior:
30
+ target_origin_id: S3-test
31
+ origins:
32
+ items:
33
+ - id: S3-test
34
+ domain_name: test.s3.amazonaws.com
35
+ s3_origin_config:
36
+ origin_access_identity: ""
37
+ quantity: 1
38
+ ```
39
+ ### s3_bucket
40
+ Create a S3 bucket.
41
+
42
+ #### Attributes
43
+ - aws_access_key_id - AWS access key ID
44
+ - aws_region - AWS region
45
+ - aws_secret_access_key - AWS secret access key
46
+ - name - S3 bucket name (required) (e.g. `"my-bucket"`)
27
47
 
28
48
  #### Example
29
49
  ```yml
@@ -32,3 +52,12 @@ resources:
32
52
  name: my-bucket
33
53
  aws_region: ap-northeast-1
34
54
  ```
55
+
56
+ ## Credentials and Region
57
+ serverkit-aws searches the following locations for credentials and a region:
58
+
59
+ - `ENV["AWS_ACCESS_KEY_ID"]`
60
+ - `ENV["AWS_REGION"]`
61
+ - `ENV["AWS_SECRET_ACCESS_KEY"]`
62
+ - The shared credentials ini file at `~/.aws/credentials`
63
+ - From an instance profile when running on EC2
@@ -1,2 +1,3 @@
1
1
  require "serverkit/aws/version"
2
+ require "serverkit/resources/cloud_front_web_distribution"
2
3
  require "serverkit/resources/s3_bucket"
@@ -0,0 +1,16 @@
1
+ module Serverkit
2
+ module Aws
3
+ module ClientOptionsGeneratable
4
+ private
5
+
6
+ # @return [Hash{Symbol => Object}]
7
+ def client_options
8
+ options = { region: aws_region }
9
+ if aws_access_key_id || aws_secret_access_key
10
+ options[:credentials] = ::Aws::Credentials.new(aws_access_key_id, aws_secret_access_key)
11
+ end
12
+ options
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  module Serverkit
2
2
  module Aws
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -0,0 +1,63 @@
1
+ require "active_support/core_ext/hash/keys"
2
+ require "aws-sdk"
3
+ require "serverkit/aws/client_options_generatable"
4
+ require "serverkit/resources/base"
5
+
6
+ module Serverkit
7
+ module Resources
8
+ class CloudFrontWebDistribution < Base
9
+ include ::Serverkit::Aws::ClientOptionsGeneratable
10
+
11
+ DEFAULT_DISTRIBUTION_CONFIG = {
12
+ comment: "Created by serverkit-aws",
13
+ default_cache_behavior: {
14
+ forwarded_values: {
15
+ cookies: {
16
+ forward: "none",
17
+ },
18
+ query_string: false,
19
+ },
20
+ min_ttl: 0,
21
+ trusted_signers: {
22
+ enabled: false,
23
+ quantity: 0,
24
+ },
25
+ viewer_protocol_policy: "allow-all",
26
+ },
27
+ enabled: true,
28
+ }
29
+
30
+ attribute :aws_access_key_id, type: ::String
31
+ attribute :aws_region, type: ::String
32
+ attribute :aws_secret_access_key, type: ::String
33
+ attribute :distribution_config, type: ::Hash
34
+
35
+ # @note Override
36
+ def apply
37
+ client.create_distribution(
38
+ distribution_config: DEFAULT_DISTRIBUTION_CONFIG.deep_merge(
39
+ distribution_config.deep_symbolize_keys,
40
+ )
41
+ )
42
+ rescue ::Aws::CloudFront::Errors::DistributionAlreadyExists
43
+ end
44
+
45
+ # @note Override
46
+ def check
47
+ false
48
+ end
49
+
50
+ # @note Override
51
+ def recheck
52
+ true
53
+ end
54
+
55
+ private
56
+
57
+ # @return [Aws::Cloudfront::Client]
58
+ def client
59
+ @client ||= ::Aws::CloudFront::Client.new(client_options)
60
+ end
61
+ end
62
+ end
63
+ end
@@ -1,9 +1,12 @@
1
1
  require "aws-sdk"
2
+ require "serverkit/aws/client_options_generatable"
2
3
  require "serverkit/resources/base"
3
4
 
4
5
  module Serverkit
5
6
  module Resources
6
7
  class S3Bucket < Base
8
+ include ::Serverkit::Aws::ClientOptionsGeneratable
9
+
7
10
  attribute :aws_access_key_id, type: String
8
11
  attribute :aws_region, type: String
9
12
  attribute :aws_secret_access_key, type: String
@@ -28,15 +31,6 @@ module Serverkit
28
31
  def client
29
32
  @client ||= ::Aws::S3::Client.new(client_options)
30
33
  end
31
-
32
- # @return [Hash]
33
- def client_options
34
- options = { region: aws_region }
35
- if aws_access_key_id || aws_secret_access_key
36
- options[:credentials] = ::Aws::Credentials.new(aws_access_key_id, aws_secret_access_key)
37
- end
38
- options
39
- end
40
34
  end
41
35
  end
42
36
  end
@@ -14,6 +14,7 @@ Gem::Specification.new do |spec|
14
14
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
15
15
  spec.require_paths = ["lib"]
16
16
 
17
+ spec.add_runtime_dependency "activesupport", ">= 4.0.2"
17
18
  spec.add_runtime_dependency "aws-sdk", "~> 2"
18
19
  spec.add_runtime_dependency "serverkit", ">= 0.6.7"
19
20
  spec.add_development_dependency "bundler", "~> 1.9"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serverkit-aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-15 00:00:00.000000000 Z
11
+ date: 2016-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 4.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 4.0.2
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: aws-sdk
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +94,9 @@ files:
80
94
  - README.md
81
95
  - Rakefile
82
96
  - lib/serverkit/aws.rb
97
+ - lib/serverkit/aws/client_options_generatable.rb
83
98
  - lib/serverkit/aws/version.rb
99
+ - lib/serverkit/resources/cloud_front_web_distribution.rb
84
100
  - lib/serverkit/resources/s3_bucket.rb
85
101
  - serverkit-aws.gemspec
86
102
  homepage: https://github.com/serverkit/serverkit-s3