UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

205 lines (204 loc) 6.34 kB
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 {};