App

class aws_cdk.core.App(*, analytics_reporting=None, auto_synth=None, context=None, outdir=None, runtime_info=None, stack_traces=None, tree_metadata=None)

Bases: Stage

A construct which represents an entire CDK app. This construct is normally the root of the construct tree.

You would normally define an App instance in your program’s entrypoint, then define constructs where the app is used as the parent scope.

After all the child constructs are defined within the app, you should call app.synth() which will emit a “cloud assembly” from this app into the directory specified by outdir. Cloud assemblies includes artifacts such as CloudFormation templates and assets that are needed to deploy this app into the AWS cloud.

See:

https://docs.aws.amazon.com/cdk/latest/guide/apps.html

ExampleMetadata:

lit=test/authorizers/integ.token-authorizer.lit.ts infused

Example:

from aws_cdk.aws_apigateway import IntegrationResponse, MethodResponse
import path as path
import aws_cdk.aws_lambda as lambda_
from aws_cdk.core import App, Stack
from aws_cdk.aws_apigateway import MockIntegration, PassthroughBehavior, RestApi, TokenAuthorizer

#
# Stack verification steps:
# * `curl -s -o /dev/null -w "%{http_code}" <url>` should return 401
# * `curl -s -o /dev/null -w "%{http_code}" -H 'Authorization: deny' <url>` should return 403
# * `curl -s -o /dev/null -w "%{http_code}" -H 'Authorization: allow' <url>` should return 200
#

app = App()
stack = Stack(app, "TokenAuthorizerInteg")

authorizer_fn = lambda_.Function(stack, "MyAuthorizerFunction",
    runtime=lambda_.Runtime.NODEJS_14_X,
    handler="index.handler",
    code=lambda_.AssetCode.from_asset(path.join(__dirname, "integ.token-authorizer.handler"))
)

restapi = RestApi(stack, "MyRestApi")

authorizer = TokenAuthorizer(stack, "MyAuthorizer",
    handler=authorizer_fn
)

restapi.root.add_method("ANY", MockIntegration(
    integration_responses=[IntegrationResponse(status_code="200")
    ],
    passthrough_behavior=PassthroughBehavior.NEVER,
    request_templates={
        "application/json": "{ "statusCode": 200 }"
    }
),
    method_responses=[MethodResponse(status_code="200")
    ],
    authorizer=authorizer
)

Initializes a CDK application.

Parameters:
  • analytics_reporting (Optional[bool]) – Include runtime versioning information in the Stacks of this app. Default: Value of ‘aws:cdk:version-reporting’ context key

  • auto_synth (Optional[bool]) – Automatically call synth() before the program exits. If you set this, you don’t have to call synth() explicitly. Note that this feature is only available for certain programming languages, and calling synth() is still recommended. Default: true if running via CDK CLI (CDK_OUTDIR is set), false otherwise

  • context (Optional[Mapping[str, Any]]) – Additional context values for the application. Context set by the CLI or the context key in cdk.json has precedence. Context can be read from any construct using node.getContext(key). Default: - no additional context

  • outdir (Optional[str]) – The output directory into which to emit synthesized artifacts. You should never need to set this value. By default, the value you pass to the CLI’s --output flag will be used, and if you change it to a different directory the CLI will fail to pick up the generated Cloud Assembly. This property is intended for internal and testing use. Default: - If this value is not set, considers the environment variable CDK_OUTDIR. If CDK_OUTDIR is not defined, uses a temp directory.

  • runtime_info (Optional[bool]) – (deprecated) Include runtime versioning information in the Stacks of this app. Default: Value of ‘aws:cdk:version-reporting’ context key

  • stack_traces (Optional[bool]) – Include construct creation stack trace in the aws:cdk:trace metadata key of all constructs. Default: true stack traces are included unless aws:cdk:disable-stack-trace is set in the context.

  • tree_metadata (Optional[bool]) – Include construct tree metadata as part of the Cloud Assembly. Default: true

Methods

synth(*, force=None, skip_validation=None, validate_on_synthesis=None)

Synthesize this stage into a cloud assembly.

Once an assembly has been synthesized, it cannot be modified. Subsequent calls will return the same assembly.

Parameters:
  • force (Optional[bool]) – Force a re-synth, even if the stage has already been synthesized. This is used by tests to allow for incremental verification of the output. Do not use in production. Default: false

  • skip_validation (Optional[bool]) – Should we skip construct validation. Default: - false

  • validate_on_synthesis (Optional[bool]) – Whether the stack should be validated after synthesis to check for error metadata. Default: - false

Return type:

CloudAssembly

to_string()

Returns a string representation of this construct.

Return type:

str

Attributes

account

The default account for all resources defined within this stage.

artifact_id

Artifact ID of the assembly if it is a nested stage. The root stage (app) will return an empty string.

Derived from the construct path.

asset_outdir

The cloud assembly asset output directory.

node

The construct tree node associated with this construct.

outdir

The cloud assembly output directory.

parent_stage

The parent stage or undefined if this is the app.

region

The default region for all resources defined within this stage.

stage_name

The name of the stage.

Based on names of the parent stages separated by hypens.

Static Methods

classmethod is_app(obj)

Checks if an object is an instance of the App class.

Parameters:

obj (Any) – The object to evaluate.

Return type:

bool

Returns:

true if obj is an App.

classmethod is_construct(x)

Return whether the given object is a Construct.

Parameters:

x (Any) –

Return type:

bool

classmethod is_stage(x)

Test whether the given construct is a stage.

Parameters:

x (Any) –

Return type:

bool

classmethod of(construct)

Return the stage this construct is contained with, if available.

If called on a nested stage, returns its parent.

Parameters:

construct (IConstruct) –

Return type:

Optional[Stage]