cloudformation-ruby-dsl 1.4.1 → 1.4.2

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: 689a6e23672cf1be2ca2acaad415484f9c79fab5
4
- data.tar.gz: 280c4250cb0a541faaac7c7ced39a67fcdac6474
3
+ metadata.gz: 5160b62e070108409db1f685692e0158efece837
4
+ data.tar.gz: 2b06be14903bd5f45f1e2fcb2be5a452ce24560a
5
5
  SHA512:
6
- metadata.gz: 85e1e94afbaf7fdcd320c748fc91de02b8cbaedf974dd66ee4f8d0d30d255c749892d1af1c188c3e73f8c9f54cc2c32ee3811d4f46590c4c8224f4dd74ce5fed
7
- data.tar.gz: 92ed9f50c46fbc82cd01aef262dc330fa6914bcd93df806bdfe5b927db4a3ea76cd09ae4c9b57d165ef8b0e359e9ea69dcd2845e499e7f8ab3b39ce9bd30e530
6
+ metadata.gz: 50eb7c54962bfc80b276941da6c58859ecc57a64ad5149d2be357e2591009f90ce334e19c2cbf2673365c3b48ff1a70afdcc1bf947fa0a665f5b8ababb38edff
7
+ data.tar.gz: 2da8a50dc1de0440c92505aae6a2bab993e0517568d5c5806fa89e392721b534f62a7e9161c0e0262c16fc9e67e7c3654d7d5bfbf99392e202dcccb8c373366d
data/README.md CHANGED
@@ -94,6 +94,8 @@ Invoke an intrinsic CloudFormation function.
94
94
  - `select(index, list)`
95
95
  - `ref(name)`
96
96
  - `import_value(value)`
97
+ - `sub(sub_string)`
98
+ - `sub(sub_string, var_map)`
97
99
 
98
100
  Intrinsic conditionals are also supported, with some syntactic sugar.
99
101
  - `fn_not(condition)`
@@ -23,7 +23,7 @@ require 'cloudformation-ruby-dsl/table'
23
23
 
24
24
  template do
25
25
 
26
- # Metadata may be embedded into the stack, as per http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
26
+ # Metadata may be embedded into the stack, as per http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
27
27
  # The below definition produces CloudFormation interface metadata.
28
28
  metadata 'AWS::CloudFormation::Interface', {
29
29
  :ParameterGroups => [
@@ -35,7 +35,7 @@ template do
35
35
  :Label => { :default => 'Other options' },
36
36
  :Parameters => [ 'Label', 'EmailAddress' ]
37
37
  }
38
- ],
38
+ ],
39
39
  :ParameterLabels => {
40
40
  :EmailAddress => {
41
41
  :default => "We value your privacy!"
@@ -79,6 +79,10 @@ template do
79
79
  :Type => 'String',
80
80
  :Description => 'Email address at which to send notification events.'
81
81
 
82
+ parameter 'BucketName',
83
+ :Type => 'String',
84
+ :Description => 'Name of the bucket to upload to.'
85
+
82
86
  mapping 'InlineExampleMap',
83
87
  :team1 => {
84
88
  :name => 'test1',
@@ -134,7 +138,7 @@ template do
134
138
  # These tags are excised from the template and used to generate a series of --tag arguments
135
139
  # which are passed to CloudFormation when a stack is created.
136
140
  # They do not ultimately appear in the expanded CloudFormation template.
137
- # The diff subcommand will compare tags with the running stack and identify any changes,
141
+ # The diff subcommand will compare tags with the running stack and identify any changes,
138
142
  # but a stack update will do the diff and throw an error on any immutable tags update attempt.
139
143
  # The tags are propagated to all resources created by the stack, including the stack itself.
140
144
  # If a resource has its own tag with the same name as CF's it's not overwritten.
@@ -238,6 +242,24 @@ template do
238
242
  :Path => '/',
239
243
  }
240
244
 
245
+ # Use sub to set bucket names for an S3 Policy.
246
+ resource 'ManagedPolicy', :Type => "AWS::IAM::ManagedPolicy", :Properties => {
247
+ :Description => 'Access policy for S3 Buckets',
248
+ :PolicyDocument => {
249
+ :Version => "2012-10-17",
250
+ :Statement => [
251
+ {
252
+ :Action => ["s3:ListBucket"],
253
+ :Effect => "Allow",
254
+ :Resource => [
255
+ sub("arn:aws:s3:::${BucketName}"),
256
+ sub("arn:aws:s3:::${BaseName}${Hash}", {:BaseName => 'Bucket', :Hash => '3bsd73w'}),
257
+ ]
258
+ }
259
+ ]
260
+ }
261
+ }
262
+
241
263
  # add conditions that can be used elsewhere in the template
242
264
  condition 'myCondition', fn_and(equal("one", "two"), not_equal("three", "four"))
243
265
 
@@ -94,7 +94,6 @@ def parse_args
94
94
  args[:parameters] = Hash[value.split(/;/).map { |pair| parts = pair.split(/=/, 2); [ parts[0], Parameter.new(parts[1]) ] }] #/# fix for syntax highlighting
95
95
  when '--interactive'
96
96
  args[:interactive] = true
97
- default and previous values of a parameter. Updated excise_parameter_attributes! to support multiple parameters.
98
97
  when '--region'
99
98
  args[:region] = value
100
99
  when '--profile'
@@ -265,6 +265,15 @@ def get_azs(region = '') { :'Fn::GetAZs' => region } end
265
265
 
266
266
  def import_value(value) { :'Fn::ImportValue' => value } end
267
267
 
268
+ # There are two valid forms of Fn::Sub, with a map and without.
269
+ def sub(sub_string, var_map = {})
270
+ if var_map.empty?
271
+ return { :'Fn::Sub' => sub_string }
272
+ else
273
+ return { :'Fn::Sub' => [sub_string, var_map] }
274
+ end
275
+ end
276
+
268
277
  def join(delim, *list)
269
278
  case list.length
270
279
  when 0 then ''
@@ -15,7 +15,7 @@
15
15
  module Cfn
16
16
  module Ruby
17
17
  module Dsl
18
- VERSION = "1.4.1"
18
+ VERSION = "1.4.2"
19
19
  end
20
20
  end
21
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudformation-ruby-dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shawn Smith