aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
205 lines (204 loc) • 6.34 kB
TypeScript
import * as cxapi from '@aws-cdk/cx-api';
import { ISDK, SdkProvider } from './aws-auth';
import { EnvironmentResources } from './environment-resources';
import { HotswapMode } from './hotswap/common';
import { ResourcesToImport } from './util/cloudformation';
import { StackActivityProgress } from './util/cloudformation/stack-activity-monitor';
import { Tag } from '../cdk-toolkit';
type TemplateBodyParameter = {
TemplateBody?: string;
TemplateURL?: string;
};
export interface DeployStackResult {
readonly noOp: boolean;
readonly outputs: {
[name: string]: string;
};
readonly stackArn: string;
}
export interface DeployStackOptions {
/**
* The stack to be deployed
*/
readonly stack: cxapi.CloudFormationStackArtifact;
/**
* The environment to deploy this stack in
*
* The environment on the stack artifact may be unresolved, this one
* must be resolved.
*/
readonly resolvedEnvironment: cxapi.Environment;
/**
* The SDK to use for deploying the stack
*
* Should have been initialized with the correct role with which
* stack operations should be performed.
*/
readonly sdk: ISDK;
/**
* SDK provider (seeded with default credentials)
*
* Will exclusively be used to assume publishing credentials (which must
* start out from current credentials regardless of whether we've assumed an
* action role to touch the stack or not).
*
* Used for the following purposes:
*
* - Publish legacy assets.
* - Upload large CloudFormation templates to the staging bucket.
*/
readonly sdkProvider: SdkProvider;
/**
* Information about the bootstrap stack found in the target environment
*/
readonly envResources: EnvironmentResources;
/**
* Role to pass to CloudFormation to execute the change set
*
* @default - Role specified on stack, otherwise current
*/
readonly roleArn?: string;
/**
* Notification ARNs to pass to CloudFormation to notify when the change set has completed
*
* @default - No notifications
*/
readonly notificationArns?: string[];
/**
* Name to deploy the stack under
*
* @default - Name from assembly
*/
readonly deployName?: string;
/**
* Quiet or verbose deployment
*
* @default false
*/
readonly quiet?: boolean;
/**
* List of asset IDs which shouldn't be built
*
* @default - Build all assets
*/
readonly reuseAssets?: string[];
/**
* Tags to pass to CloudFormation to add to stack
*
* @default - No tags
*/
readonly tags?: Tag[];
/**
* What deployment method to use
*
* @default - Change set with defaults
*/
readonly deploymentMethod?: DeploymentMethod;
/**
* The collection of extra parameters
* (in addition to those used for assets)
* to pass to the deployed template.
* Note that parameters with `undefined` or empty values will be ignored,
* and not passed to the template.
*
* @default - no additional parameters will be passed to the template
*/
readonly parameters?: {
[name: string]: string | undefined;
};
/**
* Use previous values for unspecified parameters
*
* If not set, all parameters must be specified for every deployment.
*
* @default false
*/
readonly usePreviousParameters?: boolean;
/**
* Display mode for stack deployment progress.
*
* @default StackActivityProgress.Bar stack events will be displayed for
* the resource currently being deployed.
*/
readonly progress?: StackActivityProgress;
/**
* Deploy even if the deployed template is identical to the one we are about to deploy.
* @default false
*/
readonly force?: boolean;
/**
* Whether we are on a CI system
*
* @default false
*/
readonly ci?: boolean;
/**
* Rollback failed deployments
*
* @default true
*/
readonly rollback?: boolean;
readonly hotswap?: HotswapMode;
/**
* The extra string to append to the User-Agent header when performing AWS SDK calls.
*
* @default - nothing extra is appended to the User-Agent header
*/
readonly extraUserAgent?: string;
/**
* If set, change set of type IMPORT will be created, and resourcesToImport
* passed to it.
*/
readonly resourcesToImport?: ResourcesToImport;
/**
* If present, use this given template instead of the stored one
*
* @default - Use the stored template
*/
readonly overrideTemplate?: any;
/**
* Whether to build/publish assets in parallel
*
* @default true To remain backward compatible.
*/
readonly assetParallelism?: boolean;
}
export type DeploymentMethod = DirectDeploymentMethod | ChangeSetDeploymentMethod;
export interface DirectDeploymentMethod {
readonly method: 'direct';
}
export interface ChangeSetDeploymentMethod {
readonly method: 'change-set';
/**
* Whether to execute the changeset or leave it in review.
*
* @default true
*/
readonly execute?: boolean;
/**
* Optional name to use for the CloudFormation change set.
* If not provided, a name will be generated automatically.
*/
readonly changeSetName?: string;
}
export declare function deployStack(options: DeployStackOptions): Promise<DeployStackResult>;
/**
* Prepare a body parameter for CFN, performing the upload
*
* Return it as-is if it is small enough to pass in the API call,
* upload to S3 and return the coordinates if it is not.
*/
export declare function makeBodyParameterAndUpload(stack: cxapi.CloudFormationStackArtifact, resolvedEnvironment: cxapi.Environment, resources: EnvironmentResources, sdkProvider: SdkProvider, sdk: ISDK, overrideTemplate?: any): Promise<TemplateBodyParameter>;
export interface DestroyStackOptions {
/**
* The stack to be destroyed
*/
stack: cxapi.CloudFormationStackArtifact;
sdk: ISDK;
roleArn?: string;
deployName?: string;
quiet?: boolean;
ci?: boolean;
}
export declare function destroyStack(options: DestroyStackOptions): Promise<void>;
export {};