Class: AWSCDK::BootstraplessSynthesizer

Inherits:
DefaultStackSynthesizer
  • Object
show all
Defined in:
bootstrapless_synthesizer.rb

Overview

Synthesizer that reuses bootstrap roles from a different region.

A special synthesizer that behaves similarly to DefaultStackSynthesizer, but doesn't require bootstrapping the environment it operates in. Instead, it will re-use the Roles that were created for a different region (which is possible because IAM is a global service).

However, it will not assume asset buckets or repositories have been created, and therefore does not support assets.

The name is poorly chosen -- it does still require bootstrapping, it just does not support assets.

Used by the CodePipeline construct for the support stacks needed for cross-region replication S3 buckets. App builders do not need to use this synthesizer directly.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(props = nil) ⇒ BootstraplessSynthesizer

Returns a new instance of BootstraplessSynthesizer.

Parameters:



24
25
26
27
28
# File 'bootstrapless_synthesizer.rb', line 24

def initialize(props = nil)
  props = props.is_a?(Hash) ? ::AWSCDK::BootstraplessSynthesizerProps.new(**props.transform_keys(&:to_sym)) : props
  Jsii::Type.check_type(props, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5Cb290c3RyYXBsZXNzU3ludGhlc2l6ZXJQcm9wcyJ9")), "props") unless props.nil?
  Jsii::Object.instance_method(:initialize).bind(self).call(props)
end

Class Method Details

.jsii_overridable_methodsObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'bootstrapless_synthesizer.rb', line 30

def self.jsii_overridable_methods
  {
    :bound_stack => { kind: :property, name: "boundStack", is_optional: false },
    :bootstrap_qualifier => { kind: :property, name: "bootstrapQualifier", is_optional: true },
    :cloud_formation_execution_role => { kind: :property, name: "cloudFormationExecutionRole", is_optional: true },
    :lookup_role => { kind: :property, name: "lookupRole", is_optional: true },
    :cloud_formation_execution_role_arn => { kind: :property, name: "cloudFormationExecutionRoleArn", is_optional: false },
    :deploy_role_arn => { kind: :property, name: "deployRoleArn", is_optional: false },
    :stack => { kind: :property, name: "stack", is_optional: true },
    :add_bootstrap_version_rule => { kind: :method, name: "addBootstrapVersionRule", is_optional: false },
    :add_docker_image_asset => { kind: :method, name: "addDockerImageAsset", is_optional: false },
    :add_file_asset => { kind: :method, name: "addFileAsset", is_optional: false },
    :bind => { kind: :method, name: "bind", is_optional: false },
    :cloud_formation_location_from_docker_image_asset => { kind: :method, name: "cloudFormationLocationFromDockerImageAsset", is_optional: false },
    :cloud_formation_location_from_file_asset => { kind: :method, name: "cloudFormationLocationFromFileAsset", is_optional: false },
    :emit_artifact => { kind: :method, name: "emitArtifact", is_optional: false },
    :emit_stack_artifact => { kind: :method, name: "emitStackArtifact", is_optional: false },
    :synthesize => { kind: :method, name: "synthesize", is_optional: false },
    :synthesize_stack_template => { kind: :method, name: "synthesizeStackTemplate", is_optional: false },
    :synthesize_template => { kind: :method, name: "synthesizeTemplate", is_optional: false },
    :reusable_bind => { kind: :method, name: "reusableBind", is_optional: false },
  }
end

Instance Method Details

#add_bootstrap_version_rule(required_version, bootstrap_stack_version_ssm_parameter) ⇒ void

This method returns an undefined value.

Add a CfnRule to the bound stack that checks whether an SSM parameter exceeds a given version.

This will modify the template, so must be called before the stack is synthesized.

Parameters:

  • required_version (Numeric)
  • bootstrap_stack_version_ssm_parameter (String)


113
114
115
116
117
# File 'bootstrapless_synthesizer.rb', line 113

def add_bootstrap_version_rule(required_version, bootstrap_stack_version_ssm_parameter)
  Jsii::Type.check_type(required_version, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "requiredVersion")
  Jsii::Type.check_type(bootstrap_stack_version_ssm_parameter, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "bootstrapStackVersionSsmParameter")
  jsii_call_method("addBootstrapVersionRule", [required_version, bootstrap_stack_version_ssm_parameter])
end

#add_docker_image_asset(_asset) ⇒ AWSCDK::DockerImageAssetLocation

Register a Docker Image Asset.

Returns the parameters that can be used to refer to the asset inside the template.

The synthesizer must rely on some out-of-band mechanism to make sure the given files are actually placed in the returned location before the deployment happens. This can be by writing the instructions to the asset manifest (for use by the cdk-assets tool), by relying on the CLI to upload files (legacy behavior), or some other operator controlled mechanism.



131
132
133
134
135
# File 'bootstrapless_synthesizer.rb', line 131

def add_docker_image_asset(_asset)
  _asset = _asset.is_a?(Hash) ? ::AWSCDK::DockerImageAssetSource.new(**_asset.transform_keys(&:to_sym)) : _asset
  Jsii::Type.check_type(_asset, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5Eb2NrZXJJbWFnZUFzc2V0U291cmNlIn0=")), "_asset")
  jsii_call_method("addDockerImageAsset", [_asset])
end

#add_file_asset(_asset) ⇒ AWSCDK::FileAssetLocation

Register a File Asset.

Returns the parameters that can be used to refer to the asset inside the template.

The synthesizer must rely on some out-of-band mechanism to make sure the given files are actually placed in the returned location before the deployment happens. This can be by writing the instructions to the asset manifest (for use by the cdk-assets tool), by relying on the CLI to upload files (legacy behavior), or some other operator controlled mechanism.

Parameters:

Returns:



149
150
151
152
153
# File 'bootstrapless_synthesizer.rb', line 149

def add_file_asset(_asset)
  _asset = _asset.is_a?(Hash) ? ::AWSCDK::FileAssetSource.new(**_asset.transform_keys(&:to_sym)) : _asset
  Jsii::Type.check_type(_asset, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5GaWxlQXNzZXRTb3VyY2UifQ==")), "_asset")
  jsii_call_method("addFileAsset", [_asset])
end

#bind(stack) ⇒ void

This method returns an undefined value.

Bind to the stack this environment is going to be used on.

Must be called before any of the other methods are called.

Parameters:



161
162
163
164
# File 'bootstrapless_synthesizer.rb', line 161

def bind(stack)
  Jsii::Type.check_type(stack, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5TdGFjayJ9")), "stack")
  jsii_call_method("bind", [stack])
end

#bootstrap_qualifierString?

The qualifier used to bootstrap this stack.

Returns:

  • (String, nil)


66
67
68
# File 'bootstrapless_synthesizer.rb', line 66

def bootstrap_qualifier()
  jsii_get_property("bootstrapQualifier")
end

#bound_stackAWSCDK::Stack

Retrieve the bound stack.

Fails if the stack hasn't been bound yet.

Returns:



59
60
61
# File 'bootstrapless_synthesizer.rb', line 59

def bound_stack()
  jsii_get_property("boundStack")
end

#cloud_formation_execution_roleString?

The role that is passed to CloudFormation to execute the change set.

Returns:

  • (String, nil)


73
74
75
# File 'bootstrapless_synthesizer.rb', line 73

def cloud_formation_execution_role()
  jsii_get_property("cloudFormationExecutionRole")
end

#cloud_formation_execution_role_arnString

Returns the ARN of the CFN execution Role.

Returns:

  • (String)


87
88
89
# File 'bootstrapless_synthesizer.rb', line 87

def cloud_formation_execution_role_arn()
  jsii_get_property("cloudFormationExecutionRoleArn")
end

#cloud_formation_location_from_docker_image_asset(dest) ⇒ AWSCDK::DockerImageAssetLocation

Turn a docker asset location into a CloudFormation representation of that location.

If any of the fields contain placeholders, the result will be wrapped in a Fn.sub.



172
173
174
175
176
# File 'bootstrapless_synthesizer.rb', line 172

def cloud_formation_location_from_docker_image_asset(dest)
  dest = dest.is_a?(Hash) ? ::AWSCDK::CloudAssemblySchema::DockerImageDestination.new(**dest.transform_keys(&:to_sym)) : dest
  Jsii::Type.check_type(dest, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5jbG91ZF9hc3NlbWJseV9zY2hlbWEuRG9ja2VySW1hZ2VEZXN0aW5hdGlvbiJ9")), "dest")
  jsii_call_method("cloudFormationLocationFromDockerImageAsset", [dest])
end

#cloud_formation_location_from_file_asset(location) ⇒ AWSCDK::FileAssetLocation

Turn a file asset location into a CloudFormation representation of that location.

If any of the fields contain placeholders, the result will be wrapped in a Fn.sub.



184
185
186
187
188
# File 'bootstrapless_synthesizer.rb', line 184

def cloud_formation_location_from_file_asset(location)
  location = location.is_a?(Hash) ? ::AWSCDK::CloudAssemblySchema::FileDestination.new(**location.transform_keys(&:to_sym)) : location
  Jsii::Type.check_type(location, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5jbG91ZF9hc3NlbWJseV9zY2hlbWEuRmlsZURlc3RpbmF0aW9uIn0=")), "location")
  jsii_call_method("cloudFormationLocationFromFileAsset", [location])
end

#deploy_role_arnString

Returns the ARN of the deploy Role.

Returns:

  • (String)


94
95
96
# File 'bootstrapless_synthesizer.rb', line 94

def deploy_role_arn()
  jsii_get_property("deployRoleArn")
end

#emit_artifact(session, options = nil) ⇒ void

This method returns an undefined value.

Write the CloudFormation stack artifact to the session.

Use default settings to add a CloudFormationStackArtifact artifact to the given synthesis session. The Stack artifact will control the settings for the CloudFormation deployment.

Parameters:



199
200
201
202
203
204
# File 'bootstrapless_synthesizer.rb', line 199

def emit_artifact(session, options = nil)
  Jsii::Type.check_type(session, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5JU3ludGhlc2lzU2Vzc2lvbiJ9")), "session")
  options = options.is_a?(Hash) ? ::AWSCDK::SynthesizeStackArtifactOptions.new(**options.transform_keys(&:to_sym)) : options
  Jsii::Type.check_type(options, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5TeW50aGVzaXplU3RhY2tBcnRpZmFjdE9wdGlvbnMifQ==")), "options") unless options.nil?
  jsii_call_method("emitArtifact", [session, options])
end

#emit_stack_artifact(stack, session, options = nil) ⇒ void

Deprecated.

Use emitArtifact instead

This method returns an undefined value.

Write the stack artifact to the session.

Use default settings to add a CloudFormationStackArtifact artifact to the given synthesis session.

Parameters:



216
217
218
219
220
221
222
# File 'bootstrapless_synthesizer.rb', line 216

def emit_stack_artifact(stack, session, options = nil)
  Jsii::Type.check_type(stack, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5TdGFjayJ9")), "stack")
  Jsii::Type.check_type(session, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5JU3ludGhlc2lzU2Vzc2lvbiJ9")), "session")
  options = options.is_a?(Hash) ? ::AWSCDK::SynthesizeStackArtifactOptions.new(**options.transform_keys(&:to_sym)) : options
  Jsii::Type.check_type(options, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5TeW50aGVzaXplU3RhY2tBcnRpZmFjdE9wdGlvbnMifQ==")), "options") unless options.nil?
  jsii_call_method("emitStackArtifact", [stack, session, options])
end

#lookup_roleString?

The role used to lookup for this stack.

Returns:

  • (String, nil)


80
81
82
# File 'bootstrapless_synthesizer.rb', line 80

def lookup_role()
  jsii_get_property("lookupRole")
end

#reusable_bind(stack) ⇒ AWSCDK::IBoundStackSynthesizer

Produce a bound Stack Synthesizer for the given stack.

This method may be called more than once on the same object.

Parameters:

Returns:



279
280
281
282
# File 'bootstrapless_synthesizer.rb', line 279

def reusable_bind(stack)
  Jsii::Type.check_type(stack, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5TdGFjayJ9")), "stack")
  jsii_call_method("reusableBind", [stack])
end

#stackAWSCDK::Stack?

Deprecated.

Use boundStack instead.

Return the currently bound stack.

Returns:



102
103
104
# File 'bootstrapless_synthesizer.rb', line 102

def stack()
  jsii_get_property("stack")
end

#synthesize(session) ⇒ void

This method returns an undefined value.

Synthesize the associated stack to the session.

Parameters:



228
229
230
231
# File 'bootstrapless_synthesizer.rb', line 228

def synthesize(session)
  Jsii::Type.check_type(session, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5JU3ludGhlc2lzU2Vzc2lvbiJ9")), "session")
  jsii_call_method("synthesize", [session])
end

#synthesize_stack_template(stack, session) ⇒ void

This method returns an undefined value.

Synthesize the stack template to the given session, passing the configured lookup role ARN.

Parameters:



238
239
240
241
242
# File 'bootstrapless_synthesizer.rb', line 238

def synthesize_stack_template(stack, session)
  Jsii::Type.check_type(stack, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5TdGFjayJ9")), "stack")
  Jsii::Type.check_type(session, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5JU3ludGhlc2lzU2Vzc2lvbiJ9")), "session")
  jsii_call_method("synthesizeStackTemplate", [stack, session])
end

#synthesize_template(session, lookup_role_arn = nil, lookup_role_external_id = nil, lookup_role_additional_options = nil) ⇒ AWSCDK::FileAssetSource

Write the stack template to the given session.

Return a descriptor that represents the stack template as a file asset source, for adding to an asset manifest (if desired). This can be used to have the asset manifest system (cdk-assets) upload the template to S3 using the appropriate role, so that afterwards only a CloudFormation deployment is necessary.

If the template is uploaded as an asset, the stack_template_asset_object_url property should be set when calling emitArtifact.

If the template is NOT uploaded as an asset first and the template turns out to be >50KB, it will need to be uploaded to S3 anyway. At that point the credentials will be the same identity that is doing the UpdateStack call, which may not have the right permissions to write to S3.

Parameters:

  • session (AWSCDK::ISynthesisSession)
  • lookup_role_arn (String, nil) (defaults to: nil)
  • lookup_role_external_id (String, nil) (defaults to: nil)
  • lookup_role_additional_options (Hash{String => Object}, nil) (defaults to: nil)

Returns:



265
266
267
268
269
270
271
# File 'bootstrapless_synthesizer.rb', line 265

def synthesize_template(session, lookup_role_arn = nil, lookup_role_external_id = nil, lookup_role_additional_options = nil)
  Jsii::Type.check_type(session, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5JU3ludGhlc2lzU2Vzc2lvbiJ9")), "session")
  Jsii::Type.check_type(lookup_role_arn, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "lookupRoleArn") unless lookup_role_arn.nil?
  Jsii::Type.check_type(lookup_role_external_id, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "lookupRoleExternalId") unless lookup_role_external_id.nil?
  Jsii::Type.check_type(lookup_role_additional_options, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7InByaW1pdGl2ZSI6ImFueSJ9LCJraW5kIjoibWFwIn19")), "lookupRoleAdditionalOptions") unless lookup_role_additional_options.nil?
  jsii_call_method("synthesizeTemplate", [session, lookup_role_arn, lookup_role_external_id, lookup_role_additional_options])
end