Class: AWSCDK::BootstraplessSynthesizer
- Inherits:
-
DefaultStackSynthesizer
- Object
- DefaultStackSynthesizer
- AWSCDK::BootstraplessSynthesizer
- 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
-
#add_bootstrap_version_rule(required_version, bootstrap_stack_version_ssm_parameter) ⇒ void
Add a CfnRule to the bound stack that checks whether an SSM parameter exceeds a given version.
-
#add_docker_image_asset(_asset) ⇒ AWSCDK::DockerImageAssetLocation
Register a Docker Image Asset.
-
#add_file_asset(_asset) ⇒ AWSCDK::FileAssetLocation
Register a File Asset.
-
#bind(stack) ⇒ void
Bind to the stack this environment is going to be used on.
-
#bootstrap_qualifier ⇒ String?
The qualifier used to bootstrap this stack.
-
#bound_stack ⇒ AWSCDK::Stack
Retrieve the bound stack.
-
#cloud_formation_execution_role ⇒ String?
The role that is passed to CloudFormation to execute the change set.
-
#cloud_formation_execution_role_arn ⇒ String
Returns the ARN of the CFN execution Role.
-
#cloud_formation_location_from_docker_image_asset(dest) ⇒ AWSCDK::DockerImageAssetLocation
Turn a docker asset location into a CloudFormation representation of that location.
-
#cloud_formation_location_from_file_asset(location) ⇒ AWSCDK::FileAssetLocation
Turn a file asset location into a CloudFormation representation of that location.
-
#deploy_role_arn ⇒ String
Returns the ARN of the deploy Role.
-
#emit_artifact(session, options = nil) ⇒ void
Write the CloudFormation stack artifact to the session.
-
#emit_stack_artifact(stack, session, options = nil) ⇒ void
deprecated
Deprecated.
Use
emitArtifactinstead -
#initialize(props = nil) ⇒ BootstraplessSynthesizer
constructor
A new instance of BootstraplessSynthesizer.
-
#lookup_role ⇒ String?
The role used to lookup for this stack.
-
#reusable_bind(stack) ⇒ AWSCDK::IBoundStackSynthesizer
Produce a bound Stack Synthesizer for the given stack.
-
#stack ⇒ AWSCDK::Stack?
deprecated
Deprecated.
Use
boundStackinstead. -
#synthesize(session) ⇒ void
Synthesize the associated stack to the session.
-
#synthesize_stack_template(stack, session) ⇒ void
Synthesize the stack template to the given session, passing the configured lookup role ARN.
-
#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.
Constructor Details
#initialize(props = nil) ⇒ BootstraplessSynthesizer
Returns a new instance of BootstraplessSynthesizer.
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_methods ⇒ Object
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.
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.
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.
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_qualifier ⇒ String?
The qualifier used to bootstrap this stack.
66 67 68 |
# File 'bootstrapless_synthesizer.rb', line 66 def bootstrap_qualifier() jsii_get_property("bootstrapQualifier") end |
#bound_stack ⇒ AWSCDK::Stack
Retrieve the bound stack.
Fails if the stack hasn't been bound yet.
59 60 61 |
# File 'bootstrapless_synthesizer.rb', line 59 def bound_stack() jsii_get_property("boundStack") end |
#cloud_formation_execution_role ⇒ String?
The role that is passed to CloudFormation to execute the change set.
73 74 75 |
# File 'bootstrapless_synthesizer.rb', line 73 def cloud_formation_execution_role() jsii_get_property("cloudFormationExecutionRole") end |
#cloud_formation_execution_role_arn ⇒ String
Returns the ARN of the CFN execution Role.
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_arn ⇒ String
Returns the ARN of the deploy Role.
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.
199 200 201 202 203 204 |
# File 'bootstrapless_synthesizer.rb', line 199 def emit_artifact(session, = nil) Jsii::Type.check_type(session, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5JU3ludGhlc2lzU2Vzc2lvbiJ9")), "session") = .is_a?(Hash) ? ::AWSCDK::SynthesizeStackArtifactOptions.new(**.transform_keys(&:to_sym)) : Jsii::Type.check_type(, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5TeW50aGVzaXplU3RhY2tBcnRpZmFjdE9wdGlvbnMifQ==")), "options") unless .nil? jsii_call_method("emitArtifact", [session, ]) end |
#emit_stack_artifact(stack, session, options = nil) ⇒ void
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.
216 217 218 219 220 221 222 |
# File 'bootstrapless_synthesizer.rb', line 216 def emit_stack_artifact(stack, session, = 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") = .is_a?(Hash) ? ::AWSCDK::SynthesizeStackArtifactOptions.new(**.transform_keys(&:to_sym)) : Jsii::Type.check_type(, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5TeW50aGVzaXplU3RhY2tBcnRpZmFjdE9wdGlvbnMifQ==")), "options") unless .nil? jsii_call_method("emitStackArtifact", [stack, session, ]) end |
#lookup_role ⇒ String?
The role used to lookup for this stack.
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.
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 |
#stack ⇒ AWSCDK::Stack?
Use boundStack instead.
Return the currently bound stack.
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.
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.
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.
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, = 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(, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7InByaW1pdGl2ZSI6ImFueSJ9LCJraW5kIjoibWFwIn19")), "lookupRoleAdditionalOptions") unless .nil? jsii_call_method("synthesizeTemplate", [session, lookup_role_arn, lookup_role_external_id, ]) end |