NestedStackProps
- class aws_cdk.core.NestedStackProps(*, notification_arns=None, parameters=None, removal_policy=None, timeout=None)
Bases:
object
Initialization props for the
NestedStack
construct.- Parameters:
notification_arns (
Optional
[Sequence
[str
]]) – The Simple Notification Service (SNS) topics to publish stack related events. Default: - notifications are not sent for this stack.parameters (
Optional
[Mapping
[str
,str
]]) – The set value pairs that represent the parameters passed to CloudFormation when this nested stack is created. Each parameter has a name corresponding to a parameter defined in the embedded template and a value representing the value that you want to set for the parameter. The nested stack construct will automatically synthesize parameters in order to bind references from the parent stack(s) into the nested stack. Default: - no user-defined parameters are passed to the nested stackremoval_policy (
Optional
[RemovalPolicy
]) – Policy to apply when the nested stack is removed. The default isDestroy
, because all Removal Policies of resources inside the Nested Stack should already have been set correctly. You normally should not need to set this value. Default: RemovalPolicy.DESTROYtimeout (
Optional
[Duration
]) – The length of time that CloudFormation waits for the nested stack to reach the CREATE_COMPLETE state. When CloudFormation detects that the nested stack has reached the CREATE_COMPLETE state, it marks the nested stack resource as CREATE_COMPLETE in the parent stack and resumes creating the parent stack. If the timeout period expires before the nested stack reaches CREATE_COMPLETE, CloudFormation marks the nested stack as failed and rolls back both the nested stack and parent stack. Default: - no timeout
- ExampleMetadata:
lit=test/integ.restapi-import.lit.ts infused
Example:
from aws_cdk.aws_apigateway import IntegrationResponse, MethodResponse, IntegrationResponse, MethodResponse from aws_cdk.core import App, CfnOutput, NestedStack, NestedStackProps, Stack from constructs import Construct from aws_cdk.aws_apigateway import Deployment, Method, MockIntegration, PassthroughBehavior, RestApi, Stage # # This file showcases how to split up a RestApi's Resources and Methods across nested stacks. # # The root stack 'RootStack' first defines a RestApi. # Two nested stacks BooksStack and PetsStack, create corresponding Resources '/books' and '/pets'. # They are then deployed to a 'prod' Stage via a third nested stack - DeployStack. # # To verify this worked, go to the APIGateway # class RootStack(Stack): def __init__(self, scope): super().__init__(scope, "integ-restapi-import-RootStack") rest_api = RestApi(self, "RestApi", deploy=False ) rest_api.root.add_method("ANY") pets_stack = PetsStack(self, rest_api_id=rest_api.rest_api_id, root_resource_id=rest_api.rest_api_root_resource_id ) books_stack = BooksStack(self, rest_api_id=rest_api.rest_api_id, root_resource_id=rest_api.rest_api_root_resource_id ) DeployStack(self, rest_api_id=rest_api.rest_api_id, methods=pets_stack.methods.concat(books_stack.methods) ) CfnOutput(self, "PetsURL", value=f"https://{restApi.restApiId}.execute-api.{this.region}.amazonaws.com/prod/pets" ) CfnOutput(self, "BooksURL", value=f"https://{restApi.restApiId}.execute-api.{this.region}.amazonaws.com/prod/books" ) class PetsStack(NestedStack): def __init__(self, scope, *, restApiId, rootResourceId, parameters=None, timeout=None, notificationArns=None, removalPolicy=None): super().__init__(scope, "integ-restapi-import-PetsStack", restApiId=restApiId, rootResourceId=rootResourceId, parameters=parameters, timeout=timeout, notificationArns=notificationArns, removalPolicy=removalPolicy) api = RestApi.from_rest_api_attributes(self, "RestApi", rest_api_id=rest_api_id, root_resource_id=root_resource_id ) method = api.root.add_resource("pets").add_method("GET", MockIntegration( integration_responses=[IntegrationResponse( status_code="200" )], passthrough_behavior=PassthroughBehavior.NEVER, request_templates={ "application/json": "{ "statusCode": 200 }" } ), method_responses=[MethodResponse(status_code="200")] ) self.methods.push(method) class BooksStack(NestedStack): def __init__(self, scope, *, restApiId, rootResourceId, parameters=None, timeout=None, notificationArns=None, removalPolicy=None): super().__init__(scope, "integ-restapi-import-BooksStack", restApiId=restApiId, rootResourceId=rootResourceId, parameters=parameters, timeout=timeout, notificationArns=notificationArns, removalPolicy=removalPolicy) api = RestApi.from_rest_api_attributes(self, "RestApi", rest_api_id=rest_api_id, root_resource_id=root_resource_id ) method = api.root.add_resource("books").add_method("GET", MockIntegration( integration_responses=[IntegrationResponse( status_code="200" )], passthrough_behavior=PassthroughBehavior.NEVER, request_templates={ "application/json": "{ "statusCode": 200 }" } ), method_responses=[MethodResponse(status_code="200")] ) self.methods.push(method) class DeployStack(NestedStack): def __init__(self, scope, *, restApiId, methods=None, parameters=None, timeout=None, notificationArns=None, removalPolicy=None): super().__init__(scope, "integ-restapi-import-DeployStack", restApiId=restApiId, methods=methods, parameters=parameters, timeout=timeout, notificationArns=notificationArns, removalPolicy=removalPolicy) deployment = Deployment(self, "Deployment", api=RestApi.from_rest_api_id(self, "RestApi", rest_api_id) ) if methods: for method in methods: deployment.node.add_dependency(method) Stage(self, "Stage", deployment=deployment) RootStack(App())
Attributes
- notification_arns
The Simple Notification Service (SNS) topics to publish stack related events.
- Default:
notifications are not sent for this stack.
- parameters
The set value pairs that represent the parameters passed to CloudFormation when this nested stack is created.
Each parameter has a name corresponding to a parameter defined in the embedded template and a value representing the value that you want to set for the parameter.
The nested stack construct will automatically synthesize parameters in order to bind references from the parent stack(s) into the nested stack.
- Default:
no user-defined parameters are passed to the nested stack
- removal_policy
Policy to apply when the nested stack is removed.
The default is
Destroy
, because all Removal Policies of resources inside the Nested Stack should already have been set correctly. You normally should not need to set this value.- Default:
RemovalPolicy.DESTROY
- timeout
The length of time that CloudFormation waits for the nested stack to reach the CREATE_COMPLETE state.
When CloudFormation detects that the nested stack has reached the CREATE_COMPLETE state, it marks the nested stack resource as CREATE_COMPLETE in the parent stack and resumes creating the parent stack. If the timeout period expires before the nested stack reaches CREATE_COMPLETE, CloudFormation marks the nested stack as failed and rolls back both the nested stack and parent stack.
- Default:
no timeout