Class: AWSCDK::CliCredentialsStackSynthesizer
- Inherits:
-
StackSynthesizer
- Object
- StackSynthesizer
- AWSCDK::CliCredentialsStackSynthesizer
- Includes:
- IBoundStackSynthesizer, IReusableStackSynthesizer
- Defined in:
- cli_credentials_stack_synthesizer.rb
Overview
A synthesizer that uses conventional asset locations, but not conventional deployment roles.
Instead of assuming the bootstrapped deployment roles, all stack operations will be performed using the CLI's current credentials.
- This synthesizer does not support deploying to accounts to which the CLI does not have
credentials. It also does not support deploying using CDK Pipelines. For either of those
features, use
DefaultStackSynthesizer. - This synthesizer requires an S3 bucket and ECR repository with well-known names. To
not depend on those, use
LegacyStackSynthesizer.
Be aware that your CLI credentials must be valid for the duration of the entire deployment. If you are using session credentials, make sure the session lifetime is long enough.
By default, expects the environment to have been bootstrapped with just the staging resources of the Bootstrap Stack V2 (also known as "modern bootstrap stack"). You can override the default names using the synthesizer's construction properties.
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_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.
-
#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) ⇒ CliCredentialsStackSynthesizer
constructor
A new instance of CliCredentialsStackSynthesizer.
-
#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.
-
#synthesize(session) ⇒ void
Synthesize the associated stack to the session.
-
#synthesize_stack_template(stack, session) ⇒ void
deprecated
Deprecated.
Use
synthesizeTemplateinstead -
#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) ⇒ CliCredentialsStackSynthesizer
Returns a new instance of CliCredentialsStackSynthesizer.
28 29 30 31 32 |
# File 'cli_credentials_stack_synthesizer.rb', line 28 def initialize(props = nil) props = props.is_a?(Hash) ? ::AWSCDK::CliCredentialsStackSynthesizerProps.new(**props.transform_keys(&:to_sym)) : props Jsii::Type.check_type(props, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5DbGlDcmVkZW50aWFsc1N0YWNrU3ludGhlc2l6ZXJQcm9wcyJ9")), "props") unless props.nil? Jsii::Object.instance_method(:initialize).bind(self).call(props) end |
Class Method Details
.jsii_overridable_methods ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'cli_credentials_stack_synthesizer.rb', line 34 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 }, :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.
92 93 94 95 96 |
# File 'cli_credentials_stack_synthesizer.rb', line 92 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.
110 111 112 113 114 |
# File 'cli_credentials_stack_synthesizer.rb', line 110 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.
128 129 130 131 132 |
# File 'cli_credentials_stack_synthesizer.rb', line 128 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.
140 141 142 143 |
# File 'cli_credentials_stack_synthesizer.rb', line 140 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.
67 68 69 |
# File 'cli_credentials_stack_synthesizer.rb', line 67 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.
60 61 62 |
# File 'cli_credentials_stack_synthesizer.rb', line 60 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.
74 75 76 |
# File 'cli_credentials_stack_synthesizer.rb', line 74 def cloud_formation_execution_role() jsii_get_property("cloudFormationExecutionRole") 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.
151 152 153 154 155 |
# File 'cli_credentials_stack_synthesizer.rb', line 151 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.
163 164 165 166 167 |
# File 'cli_credentials_stack_synthesizer.rb', line 163 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 |
#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.
178 179 180 181 182 183 |
# File 'cli_credentials_stack_synthesizer.rb', line 178 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.
195 196 197 198 199 200 201 |
# File 'cli_credentials_stack_synthesizer.rb', line 195 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.
81 82 83 |
# File 'cli_credentials_stack_synthesizer.rb', line 81 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.
259 260 261 262 |
# File 'cli_credentials_stack_synthesizer.rb', line 259 def reusable_bind(stack) Jsii::Type.check_type(stack, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5TdGFjayJ9")), "stack") jsii_call_method("reusableBind", [stack]) end |
#synthesize(session) ⇒ void
This method returns an undefined value.
Synthesize the associated stack to the session.
207 208 209 210 |
# File 'cli_credentials_stack_synthesizer.rb', line 207 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
Use synthesizeTemplate instead
This method returns an undefined value.
Have the stack write out its template.
218 219 220 221 222 |
# File 'cli_credentials_stack_synthesizer.rb', line 218 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.
245 246 247 248 249 250 251 |
# File 'cli_credentials_stack_synthesizer.rb', line 245 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 |