import { Construct } from '../core/construct'; import { Token } from '../core/tokens'; import { Condition } from './condition'; import { CreationPolicy, DeletionPolicy, UpdatePolicy } from './resource-policy'; import { IDependable, Referenceable } from './stack'; export interface ResourceProps { /** * CloudFormation resource type. */ type: string; /** * CloudFormation properties. */ properties?: any; } /** * Represents a CloudFormation resource. */ export declare class Resource extends Referenceable { /** * A decoration used to create a CloudFormation attribute property. * @param customName Custom name for the attribute (default is the name of the property) * NOTE: we return "any" here to satistfy jsii, which doesn't support lambdas. */ static attribute(customName?: string): any; /** * Options for this resource, such as condition, update policy etc. */ readonly options: ResourceOptions; /** * AWS resource type. */ readonly resourceType: string; /** * AWS resource properties */ protected readonly properties: any; private dependsOn; /** * Creates a resource construct. * @param resourceType The CloudFormation type of this resource (e.g. AWS::DynamoDB::Table) */ constructor(parent: Construct, name: string, props: ResourceProps); /** * Returns a token for an runtime attribute of this resource. * Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility * in case there is no generated attribute. * @param attributeName The name of the attribute. */ getAtt(attributeName: string): Token; /** * Adds a dependency on another resource. * @param other The other resource. */ addDependency(...other: IDependable[]): void; /** * Emits CloudFormation for this resource. */ toCloudFormation(): object; protected renderProperties(): { [key: string]: any; }; private renderDependsOn; } export interface ResourceOptions { /** * A condition to associate with this resource. This means that only if the condition evaluates to 'true' when the stack * is deployed, the resource will be included. This is provided to allow CDK projects to produce legacy templates, but noramlly * there is no need to use it in CDK projects. */ condition?: Condition; /** * Associate the CreationPolicy attribute with a resource to prevent its status from reaching create complete until * AWS CloudFormation receives a specified number of success signals or the timeout period is exceeded. To signal a * resource, you can use the cfn-signal helper script or SignalResource API. AWS CloudFormation publishes valid signals * to the stack events so that you track the number of signals sent. */ creationPolicy?: CreationPolicy; /** * With the DeletionPolicy attribute you can preserve or (in some cases) backup a resource when its stack is deleted. * You specify a DeletionPolicy attribute for each resource that you want to control. If a resource has no DeletionPolicy * attribute, AWS CloudFormation deletes the resource by default. Note that this capability also applies to update operations * that lead to resources being removed. */ deletionPolicy?: DeletionPolicy; /** * Use the UpdatePolicy attribute to specify how AWS CloudFormation handles updates to the AWS::AutoScaling::AutoScalingGroup * resource. AWS CloudFormation invokes one of three update policies depending on the type of change you make or whether a * scheduled action is associated with the Auto Scaling group. */ updatePolicy?: UpdatePolicy; /** * Metadata associated with the CloudFormation resource. This is not the same as the construct metadata which can be added * using construct.addMetadata(), but would not appear in the CloudFormation template automatically. */ metadata?: { [key: string]: any; }; }