diff --git a/packages/@aws-cdk/aws-amplify-alpha/lib/app.ts b/packages/@aws-cdk/aws-amplify-alpha/lib/app.ts index 404b8b8f44821..c5b5ac3de4231 100644 --- a/packages/@aws-cdk/aws-amplify-alpha/lib/app.ts +++ b/packages/@aws-cdk/aws-amplify-alpha/lib/app.ts @@ -7,7 +7,7 @@ import { BasicAuth } from './basic-auth'; import { Branch, BranchOptions } from './branch'; import { Domain, DomainOptions } from './domain'; import { renderEnvironmentVariables } from './utils'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * An Amplify Console application @@ -280,6 +280,7 @@ export class App extends Resource implements IApp, iam.IGrantable { /** * Adds a custom rewrite/redirect rule to this application */ + @MethodMetadata() public addCustomRule(rule: CustomRule) { this.customRules.push(rule); return this; @@ -291,6 +292,7 @@ export class App extends Resource implements IApp, iam.IGrantable { * All environment variables that you add are encrypted to prevent rogue * access so you can use them to store secret information. */ + @MethodMetadata() public addEnvironment(name: string, value: string) { this.environmentVariables[name] = value; return this; @@ -302,6 +304,7 @@ export class App extends Resource implements IApp, iam.IGrantable { * All environment variables that you add are encrypted to prevent rogue * access so you can use them to store secret information. */ + @MethodMetadata() public addAutoBranchEnvironment(name: string, value: string) { this.autoBranchEnvironmentVariables[name] = value; return this; @@ -310,6 +313,7 @@ export class App extends Resource implements IApp, iam.IGrantable { /** * Adds a branch to this application */ + @MethodMetadata() public addBranch(id: string, options: BranchOptions = {}): Branch { return new Branch(this, id, { ...options, @@ -320,6 +324,7 @@ export class App extends Resource implements IApp, iam.IGrantable { /** * Adds a domain to this application */ + @MethodMetadata() public addDomain(id: string, options: DomainOptions = {}): Domain { return new Domain(this, id, { ...options, diff --git a/packages/@aws-cdk/aws-amplify-alpha/lib/branch.ts b/packages/@aws-cdk/aws-amplify-alpha/lib/branch.ts index b4800770bdf27..c7000d3653231 100644 --- a/packages/@aws-cdk/aws-amplify-alpha/lib/branch.ts +++ b/packages/@aws-cdk/aws-amplify-alpha/lib/branch.ts @@ -17,7 +17,7 @@ import { IApp } from './app'; import { BasicAuth } from './basic-auth'; import { renderEnvironmentVariables } from './utils'; import { AssetDeploymentIsCompleteFunction, AssetDeploymentOnEventFunction } from '../custom-resource-handlers/dist/aws-amplify-alpha/asset-deployment-provider.generated'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A branch @@ -206,6 +206,7 @@ export class Branch extends Resource implements IBranch { * All environment variables that you add are encrypted to prevent rogue * access so you can use them to store secret information. */ + @MethodMetadata() public addEnvironment(name: string, value: string) { this.environmentVariables[name] = value; return this; diff --git a/packages/@aws-cdk/aws-amplify-alpha/lib/domain.ts b/packages/@aws-cdk/aws-amplify-alpha/lib/domain.ts index 0cdb0e079c8fd..4d4760dd5c623 100644 --- a/packages/@aws-cdk/aws-amplify-alpha/lib/domain.ts +++ b/packages/@aws-cdk/aws-amplify-alpha/lib/domain.ts @@ -5,7 +5,7 @@ import { Construct } from 'constructs'; import { CfnDomain } from 'aws-cdk-lib/aws-amplify'; import { IApp } from './app'; import { IBranch } from './branch'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Options to add a domain to an application @@ -171,6 +171,7 @@ export class Domain extends Resource { * @param branch The branch * @param prefix The prefix. Use '' to map to the root of the domain. Defaults to branch name. */ + @MethodMetadata() public mapSubDomain(branch: IBranch, prefix?: string) { this.subDomains.push({ branch, prefix }); return this; @@ -179,6 +180,7 @@ export class Domain extends Resource { /** * Maps a branch to the domain root */ + @MethodMetadata() public mapRoot(branch: IBranch) { return this.mapSubDomain(branch, ''); } diff --git a/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts b/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts index 12fac5d7cefe3..58aa615222693 100644 --- a/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts +++ b/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts @@ -11,7 +11,7 @@ import { CfnService } from 'aws-cdk-lib/aws-apprunner'; import { IVpcConnector } from './vpc-connector'; import { IAutoScalingConfiguration } from './auto-scaling-configuration'; import { IObservabilityConfiguration } from './observability-configuration'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The image repository types @@ -1373,6 +1373,7 @@ export class Service extends cdk.Resource implements IService, iam.IGrantable { /** * Adds a statement to the instance role. */ + @MethodMetadata() public addToRolePolicy(statement: iam.PolicyStatement) { this.instanceRole.addToPrincipalPolicy(statement); } @@ -1380,6 +1381,7 @@ export class Service extends cdk.Resource implements IService, iam.IGrantable { /** * This method adds an environment variable to the App Runner service. */ + @MethodMetadata() public addEnvironmentVariable(name: string, value: string) { if (name.startsWith('AWSAPPRUNNER')) { throw new Error(`Environment variable key ${name} with a prefix of AWSAPPRUNNER is not allowed`); @@ -1390,6 +1392,7 @@ export class Service extends cdk.Resource implements IService, iam.IGrantable { /** * This method adds a secret as environment variable to the App Runner service. */ + @MethodMetadata() public addSecret(name: string, secret: Secret) { if (name.startsWith('AWSAPPRUNNER')) { throw new Error(`Environment secret key ${name} with a prefix of AWSAPPRUNNER is not allowed`); diff --git a/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool.ts b/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool.ts index edd1dd3e270fc..21f4c524fd1ee 100644 --- a/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool.ts +++ b/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool.ts @@ -4,7 +4,7 @@ import { Resource, IResource, Stack, ArnFormat, Lazy, Token } from 'aws-cdk-lib/ import { Construct } from 'constructs'; import { IdentityPoolRoleAttachment, IdentityPoolRoleMapping } from './identitypool-role-attachment'; import { IUserPoolAuthenticationProvider } from './identitypool-user-pool-authentication-provider'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a Cognito Identity Pool @@ -418,6 +418,7 @@ export class IdentityPool extends Resource implements IIdentityPool { /** * Add a User Pool to the Identity Pool and configure the User Pool client to handle identities */ + @MethodMetadata() public addUserPoolAuthentication(userPool: IUserPoolAuthenticationProvider): void { const providers = userPool.bind(this, this); this.cognitoIdentityProviders = this.cognitoIdentityProviders.concat(providers); @@ -426,6 +427,7 @@ export class IdentityPool extends Resource implements IIdentityPool { /** * Add Role Mappings to the Identity Pool */ + @MethodMetadata() public addRoleMappings(...roleMappings: IdentityPoolRoleMapping[]): void { if (!roleMappings || !roleMappings.length) return; this.roleAttachmentCount++; diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/ipam.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/ipam.ts index 208d01a0b5ca2..4e27d67183c90 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/ipam.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/ipam.ts @@ -1,7 +1,7 @@ import { CfnIPAM, CfnIPAMPool, CfnIPAMPoolCidr, CfnIPAMScope } from 'aws-cdk-lib/aws-ec2'; import { Construct } from 'constructs'; import { Lazy, Names, Resource, Stack, Tags } from 'aws-cdk-lib'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents the address family for IP addresses in an IPAM pool. @@ -373,6 +373,7 @@ class IpamPool extends Resource implements IIpamPool { * @param options Either a CIDR or netmask length must be provided * @returns AWS::EC2::IPAMPoolCidr */ + @MethodMetadata() public provisionCidr(id: string, options: IpamPoolCidrProvisioningOptions): CfnIPAMPoolCidr { const cidr = new CfnIPAMPoolCidr(this, id, { ...options, @@ -549,6 +550,7 @@ export class Ipam extends Resource { * Function to add custom scope to an existing IPAM * Custom scopes can only be private */ + @MethodMetadata() public addScope(scope: Construct, id: string, options: IpamScopeOptions): IIpamScopeBase { const ipamScope = new IpamScope(scope, id, { ...options, diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/route.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/route.ts index ee56d6e812457..5271c20ab56b0 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/route.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/route.ts @@ -4,7 +4,7 @@ import { Annotations, Duration, IResource, Resource, Tags } from 'aws-cdk-lib/co import { IVpcV2, VPNGatewayV2Options } from './vpc-v2-base'; import { NetworkUtils, allRouteTableIds, CidrBlock } from './util'; import { ISubnetV2 } from './subnet-v2'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Indicates whether the NAT gateway supports public or private connectivity. @@ -819,6 +819,7 @@ export class RouteTable extends Resource implements IRouteTable { * @param target The gateway or endpoint targeted by the route. * @param routeName The resource name of the route. */ + @MethodMetadata() public addRoute(id: string, destination: string, target: RouteTargetType, routeName?: string) { new Route(this, id, { routeTable: this, diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/subnet-v2.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/subnet-v2.ts index fb409190b5920..2c4bab3319255 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/subnet-v2.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/subnet-v2.ts @@ -4,7 +4,7 @@ import { Construct, DependencyGroup, IDependable } from 'constructs'; import { IVpcV2 } from './vpc-v2-base'; import { CidrBlock, CidrBlockIpv6 } from './util'; import { RouteTable } from './route'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Interface to define subnet CIDR @@ -330,6 +330,7 @@ export class SubnetV2 extends Resource implements ISubnetV2 { * @param networkAcl The Network ACL to associate with this subnet. * This allows controlling inbound and outbound traffic for instances in this subnet. */ + @MethodMetadata() public associateNetworkAcl(id: string, networkAcl: INetworkAcl) { this._networkAcl = networkAcl; diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table-association.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table-association.ts index 6365907de4504..75c59501cd6e6 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table-association.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table-association.ts @@ -3,6 +3,7 @@ import { ITransitGatewayRouteTable } from './transit-gateway-route-table'; import { CfnTransitGatewayRouteTableAssociation } from 'aws-cdk-lib/aws-ec2'; import { Construct } from 'constructs'; import { ITransitGatewayAssociation, TransitGatewayAssociationBase } from './transit-gateway-association'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a Transit Gateway Route Table Association. @@ -44,6 +45,8 @@ export class TransitGatewayRouteTableAssociation extends TransitGatewayAssociati constructor(scope: Construct, id: string, props: TransitGatewayRouteTableAssociationProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnTransitGatewayRouteTableAssociation(this, id, { transitGatewayAttachmentId: props.transitGatewayVpcAttachment.transitGatewayAttachmentId, diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table-propagation.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table-propagation.ts index 1e795a408c81d..082c36db7002e 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table-propagation.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table-propagation.ts @@ -3,6 +3,7 @@ import { CfnTransitGatewayRouteTablePropagation } from 'aws-cdk-lib/aws-ec2'; import { Construct } from 'constructs'; import { ITransitGatewayAttachment } from './transit-gateway-attachment'; import { ITransitGatewayRouteTable } from './transit-gateway-route-table'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a Transit Gateway Route Table Propagation. @@ -50,6 +51,8 @@ export class TransitGatewayRouteTablePropagation extends Resource implements ITr constructor(scope: Construct, id: string, props: TransitGatewayRouteTablePropagationProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnTransitGatewayRouteTablePropagation(this, id, { transitGatewayAttachmentId: props.transitGatewayVpcAttachment.transitGatewayAttachmentId, diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table.ts index 5b2df56c14a85..c79da12e43618 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route-table.ts @@ -6,6 +6,7 @@ import { ITransitGatewayAttachment } from './transit-gateway-attachment'; import { TransitGatewayRoute, TransitGatewayBlackholeRoute, ITransitGatewayRoute } from './transit-gateway-route'; import { ITransitGatewayRouteTableAssociation, TransitGatewayRouteTableAssociation } from './transit-gateway-route-table-association'; import { ITransitGatewayRouteTablePropagation, TransitGatewayRouteTablePropagation } from './transit-gateway-route-table-propagation'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a Transit Gateway Route Table. @@ -109,6 +110,8 @@ export class TransitGatewayRouteTable extends TransitGatewayRouteTableBase { constructor(scope: Construct, id: string, props: TransitGatewayRouteTableProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnTransitGatewayRouteTable(this, id, { transitGatewayId: props.transitGateway.transitGatewayId, diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route.ts index 0178b99ac55e6..f051e302ff12c 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-route.ts @@ -3,6 +3,7 @@ import { Construct } from 'constructs'; import { CfnTransitGatewayRoute } from 'aws-cdk-lib/aws-ec2'; import { ITransitGatewayRouteTable } from './transit-gateway-route-table'; import { ITransitGatewayAttachment } from './transit-gateway-attachment'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a Transit Gateway Route. @@ -87,6 +88,8 @@ export class TransitGatewayRoute extends TransitGatewayRouteBase { constructor(scope: Construct, id: string, props: TransitGatewayRouteProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.resource = new CfnTransitGatewayRoute(this, 'TransitGatewayRoute', { blackhole: false, @@ -112,6 +115,8 @@ export class TransitGatewayBlackholeRoute extends TransitGatewayRouteBase { constructor(scope: Construct, id: string, props: TransitGatewayBlackholeRouteProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnTransitGatewayRoute(this, id, { blackhole: true, diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-vpc-attachment.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-vpc-attachment.ts index 95f4682a7efa1..05c8688b18614 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-vpc-attachment.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway-vpc-attachment.ts @@ -7,6 +7,7 @@ import { ITransitGatewayAttachment, TransitGatewayAttachmentBase } from './trans import { getFeatureStatus } from './util'; import { ITransitGatewayRouteTable } from './transit-gateway-route-table'; import { Annotations } from 'aws-cdk-lib'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Options for Transit Gateway VPC Attachment. @@ -131,6 +132,8 @@ export class TransitGatewayVpcAttachment extends TransitGatewayAttachmentBase im constructor(scope: Construct, id: string, props: TransitGatewayVpcAttachmentProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this._resource = new CfnTransitGatewayAttachment(this, id, { subnetIds: props.subnets.map((subnet) => subnet.subnetId), diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway.ts index b02c267681fa8..de82ef8a3d91e 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/transit-gateway.ts @@ -7,6 +7,7 @@ import { IRouteTarget } from './route'; import { TransitGatewayRouteTableAssociation } from './transit-gateway-route-table-association'; import { TransitGatewayRouteTablePropagation } from './transit-gateway-route-table-propagation'; import { getFeatureStatus, TransitGatewayFeatureStatus } from './util'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a Transit Gateway. @@ -222,6 +223,8 @@ export class TransitGateway extends TransitGatewayBase { constructor(scope: Construct, id: string, props: TransitGatewayProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnTransitGateway(this, id, { amazonSideAsn: props.amazonSideAsn ?? undefined, diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/lib/access-entry.ts b/packages/@aws-cdk/aws-eks-v2-alpha/lib/access-entry.ts index f146c9b82c7a6..ee1487e71547a 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/lib/access-entry.ts +++ b/packages/@aws-cdk/aws-eks-v2-alpha/lib/access-entry.ts @@ -4,6 +4,7 @@ import { CfnAccessEntry } from 'aws-cdk-lib/aws-eks'; import { Resource, IResource, Aws, Lazy, } from 'aws-cdk-lib/core'; +import { MethodMetadata, addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents an access entry in an Amazon EKS cluster. @@ -325,6 +326,8 @@ export class AccessEntry extends Resource implements IAccessEntry { constructor(scope: Construct, id: string, props: AccessEntryProps ) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.cluster = props.cluster; this.principal = props.principal; @@ -356,6 +359,7 @@ export class AccessEntry extends Resource implements IAccessEntry { * Add the access policies for this entry. * @param newAccessPolicies - The new access policies to add. */ + @MethodMetadata() public addAccessPolicies(newAccessPolicies: IAccessPolicy[]): void { // add newAccessPolicies to this.accessPolicies this.accessPolicies.push(...newAccessPolicies); diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/lib/addon.ts b/packages/@aws-cdk/aws-eks-v2-alpha/lib/addon.ts index 0d0087b7c04b8..29cfd06626e95 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/lib/addon.ts +++ b/packages/@aws-cdk/aws-eks-v2-alpha/lib/addon.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { ICluster } from './cluster'; import { CfnAddon } from 'aws-cdk-lib/aws-eks'; import { ArnFormat, IResource, Resource, Stack, Fn } from 'aws-cdk-lib/core'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents an Amazon EKS Add-On. @@ -127,6 +128,8 @@ export class Addon extends Resource implements IAddon { super(scope, id, { physicalName: props.addonName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.clusterName = props.cluster.clusterName; this.addonName = props.addonName; diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/lib/cluster.ts b/packages/@aws-cdk/aws-eks-v2-alpha/lib/cluster.ts index ce963ae8c3a99..41e2fee094ca0 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/lib/cluster.ts +++ b/packages/@aws-cdk/aws-eks-v2-alpha/lib/cluster.ts @@ -24,6 +24,7 @@ import * as kms from 'aws-cdk-lib/aws-kms'; import * as ssm from 'aws-cdk-lib/aws-ssm'; import { Annotations, CfnOutput, CfnResource, IResource, Resource, Tags, Token, Duration, ArnComponents } from 'aws-cdk-lib/core'; import { CfnCluster } from 'aws-cdk-lib/aws-eks'; +import { MethodMetadata, addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; // defaults are based on https://eksctl.io const DEFAULT_CAPACITY_COUNT = 2; @@ -1026,6 +1027,8 @@ export class Cluster extends ClusterBase { super(scope, id, { physicalName: props.clusterName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.prune = props.prune ?? true; this.vpc = props.vpc || new ec2.Vpc(this, 'DefaultVpc'); @@ -1223,6 +1226,7 @@ export class Cluster extends ClusterBase { * @param principal - The IAM principal (role or user) to be granted access to the EKS cluster. * @param accessPolicies - An array of `IAccessPolicy` objects that define the access permissions to be granted to the IAM principal. */ + @MethodMetadata() public grantAccess(id: string, principal: string, accessPolicies: IAccessPolicy[]) { this.addToAccessEntry(id, principal, accessPolicies); } @@ -1233,6 +1237,7 @@ export class Cluster extends ClusterBase { * @param serviceName The name of the service. * @param options Additional operation options. */ + @MethodMetadata() public getServiceLoadBalancerAddress(serviceName: string, options: ServiceLoadBalancerAddressOptions = {}): string { const loadBalancerAddress = new KubernetesObjectValue(this, `${serviceName}LoadBalancerAddress`, { cluster: this, @@ -1252,6 +1257,7 @@ export class Cluster extends ClusterBase { * @param ingressName The name of the ingress. * @param options Additional operation options. */ + @MethodMetadata() public getIngressLoadBalancerAddress(ingressName: string, options: IngressLoadBalancerAddressOptions = {}): string { const loadBalancerAddress = new KubernetesObjectValue(this, `${ingressName}LoadBalancerAddress`, { cluster: this, @@ -1280,6 +1286,7 @@ export class Cluster extends ClusterBase { * daemon will be installed on all spot instances to handle * [EC2 Spot Instance Termination Notices](https://aws.amazon.com/blogs/aws/new-ec2-spot-instance-termination-notices/). */ + @MethodMetadata() public addAutoScalingGroupCapacity(id: string, options: AutoScalingGroupCapacityOptions): autoscaling.AutoScalingGroup { if (options.machineImageType === MachineImageType.BOTTLEROCKET && options.bootstrapOptions !== undefined) { throw new Error('bootstrapOptions is not supported for Bottlerocket'); @@ -1305,7 +1312,7 @@ export class Cluster extends ClusterBase { }); if (nodeTypeForInstanceType(options.instanceType) === NodeType.INFERENTIA || - nodeTypeForInstanceType(options.instanceType) === NodeType.TRAINIUM ) { + nodeTypeForInstanceType(options.instanceType) === NodeType.TRAINIUM) { this.addNeuronDevicePlugin(); } @@ -1321,12 +1328,13 @@ export class Cluster extends ClusterBase { * @param id The ID of the nodegroup * @param options options for creating a new nodegroup */ + @MethodMetadata() public addNodegroupCapacity(id: string, options?: NodegroupOptions): Nodegroup { const hasInferentiaOrTrainiumInstanceType = [ options?.instanceType, ...options?.instanceTypes ?? [], ].some(i => i && (nodeTypeForInstanceType(i) === NodeType.INFERENTIA || - nodeTypeForInstanceType(i) === NodeType.TRAINIUM)); + nodeTypeForInstanceType(i) === NodeType.TRAINIUM)); if (hasInferentiaOrTrainiumInstanceType) { this.addNeuronDevicePlugin(); @@ -1394,6 +1402,7 @@ export class Cluster extends ClusterBase { * @param id the id of this profile * @param options profile options */ + @MethodMetadata() public addFargateProfile(id: string, options: FargateProfileOptions) { return new FargateProfile(this, `fargate-profile-${id}`, { ...options, @@ -1706,6 +1715,8 @@ class ImportedCluster extends ClusterBase { constructor(scope: Construct, id: string, private readonly props: ClusterAttributes) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.clusterName = props.clusterName; this.clusterArn = this.stack.formatArn(clusterArnComponents(props.clusterName)); diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/lib/fargate-cluster.ts b/packages/@aws-cdk/aws-eks-v2-alpha/lib/fargate-cluster.ts index cc7e6a93a7350..ed6856cd8813f 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/lib/fargate-cluster.ts +++ b/packages/@aws-cdk/aws-eks-v2-alpha/lib/fargate-cluster.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { Cluster, ClusterCommonOptions, CoreDnsComputeType } from './cluster'; import { FargateProfile, FargateProfileOptions } from './fargate-profile'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Configuration props for EKS Fargate. @@ -35,6 +36,8 @@ export class FargateCluster extends Cluster { coreDnsComputeType: props.coreDnsComputeType ?? CoreDnsComputeType.FARGATE, version: props.version, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.defaultProfile = this.addFargateProfile( props.defaultProfile?.fargateProfileName ?? (props.defaultProfile ? 'custom' : 'default'), diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/lib/managed-nodegroup.ts b/packages/@aws-cdk/aws-eks-v2-alpha/lib/managed-nodegroup.ts index 4da546bba4009..9da3b7ee6b252 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/lib/managed-nodegroup.ts +++ b/packages/@aws-cdk/aws-eks-v2-alpha/lib/managed-nodegroup.ts @@ -6,6 +6,7 @@ import { IRole, ManagedPolicy, PolicyStatement, Role, ServicePrincipal } from 'a import { IResource, Resource, Annotations, withResolved, FeatureFlags } from 'aws-cdk-lib/core'; import * as cxapi from 'aws-cdk-lib/cx-api'; import { isGpuInstanceType } from './private/nodegroup'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * NodeGroup interface @@ -391,6 +392,8 @@ export class Nodegroup extends Resource implements INodegroup { super(scope, id, { physicalName: props.nodegroupName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.cluster = props.cluster; diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/lib/oidc-provider.ts b/packages/@aws-cdk/aws-eks-v2-alpha/lib/oidc-provider.ts index 9d6b1f7445b02..86222eebc7b4e 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/lib/oidc-provider.ts +++ b/packages/@aws-cdk/aws-eks-v2-alpha/lib/oidc-provider.ts @@ -1,5 +1,6 @@ import { Construct } from 'constructs'; import * as iam from 'aws-cdk-lib/aws-iam'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Initialization properties for `OpenIdConnectProvider`. @@ -47,5 +48,7 @@ export class OpenIdConnectProvider extends iam.OpenIdConnectProvider { url: props.url, clientIds, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/build-fleet.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/build-fleet.ts index 6f38d5cc67420..95d059d7a1ad9 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/build-fleet.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/build-fleet.ts @@ -5,7 +5,7 @@ import { IBuild } from './build'; import { FleetBase, FleetProps, IFleet } from './fleet-base'; import { CfnFleet } from 'aws-cdk-lib/aws-gamelift'; import { Port, IPeer, IngressRule } from './ingress-rule'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a GameLift Fleet used to run a custom game build. @@ -174,6 +174,7 @@ export class BuildFleet extends FleetBase implements IBuildFleet { * @param source A range of allowed IP addresses * @param port The port range used for ingress traffic */ + @MethodMetadata() public addIngressRule(source: IPeer, port: Port) { this.addInternalIngressRule({ source: source, diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/game-session-queue.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/game-session-queue.ts index 3d36a57308233..1f6735fa1f5c0 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/game-session-queue.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/game-session-queue.ts @@ -3,7 +3,7 @@ import * as sns from 'aws-cdk-lib/aws-sns'; import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnGameSessionQueue } from 'aws-cdk-lib/aws-gamelift'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a game session queue destination @@ -413,6 +413,7 @@ export class GameSessionQueue extends GameSessionQueueBase { * * @param destination A destination to add */ + @MethodMetadata() public addDestination(destination: IGameSessionQueueDestination) { this.destinations.push(destination); } diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/queued-matchmaking-configuration.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/queued-matchmaking-configuration.ts index f4acd61b1d492..7674ef91ee368 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/queued-matchmaking-configuration.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/queued-matchmaking-configuration.ts @@ -5,7 +5,7 @@ import { Construct } from 'constructs'; import { IGameSessionQueue } from './game-session-queue'; import * as gamelift from 'aws-cdk-lib/aws-gamelift'; import { MatchmakingConfigurationProps, GameProperty, MatchmakingConfigurationBase, IMatchmakingConfiguration } from './matchmaking-configuration'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties for a new queued matchmaking configuration @@ -194,6 +194,7 @@ export class QueuedMatchmakingConfiguration extends MatchmakingConfigurationBase * * @param gameSessionQueue A game session queue */ + @MethodMetadata() public addGameSessionQueue(gameSessionQueue: IGameSessionQueue) { this.gameSessionQueues.push(gameSessionQueue); } diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts index 93e47eccb2eda..4b3a158626532 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts @@ -2,7 +2,7 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2'; import * as cdk from 'aws-cdk-lib/core'; import * as constructs from 'constructs'; import { CfnConnection } from 'aws-cdk-lib/aws-glue'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The type of the glue connection @@ -335,6 +335,7 @@ export class Connection extends cdk.Resource implements IConnection { * @param key parameter key * @param value parameter value */ + @MethodMetadata() public addProperty(key: string, value: string): void { this.properties[key] = value; } diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/external-table.ts b/packages/@aws-cdk/aws-glue-alpha/lib/external-table.ts index f564fba804d50..293ab9edf875d 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/external-table.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/external-table.ts @@ -4,7 +4,7 @@ import { Construct } from 'constructs'; import { IConnection } from './connection'; import { Column } from './schema'; import { PartitionIndex, TableBase, TableBaseProps } from './table-base'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; export interface ExternalTableProps extends TableBaseProps { /** @@ -118,6 +118,7 @@ export class ExternalTable extends TableBase { * * @param grantee the principal */ + @MethodMetadata() public grantRead(grantee: iam.IGrantable): iam.Grant { const ret = this.grant(grantee, readPermissions); return ret; @@ -128,6 +129,7 @@ export class ExternalTable extends TableBase { * * @param grantee the principal */ + @MethodMetadata() public grantWrite(grantee: iam.IGrantable): iam.Grant { const ret = this.grant(grantee, writePermissions); return ret; @@ -138,6 +140,7 @@ export class ExternalTable extends TableBase { * * @param grantee the principal */ + @MethodMetadata() public grantReadWrite(grantee: iam.IGrantable): iam.Grant { const ret = this.grant(grantee, [...readPermissions, ...writePermissions]); return ret; diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/s3-table.ts b/packages/@aws-cdk/aws-glue-alpha/lib/s3-table.ts index f71e757545bf8..a064f842fe1d2 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/s3-table.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/s3-table.ts @@ -5,7 +5,7 @@ import * as s3 from 'aws-cdk-lib/aws-s3'; import { Construct } from 'constructs'; import { Column } from './schema'; import { PartitionIndex, TableBase, TableBaseProps } from './table-base'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Encryption options for a Table. @@ -190,6 +190,7 @@ export class S3Table extends TableBase { * * @param grantee the principal */ + @MethodMetadata() public grantRead(grantee: iam.IGrantable): iam.Grant { const ret = this.grant(grantee, readPermissions); if (this.encryptionKey && this.encryption === TableEncryption.CLIENT_SIDE_KMS) { this.encryptionKey.grantDecrypt(grantee); } @@ -202,6 +203,7 @@ export class S3Table extends TableBase { * * @param grantee the principal */ + @MethodMetadata() public grantWrite(grantee: iam.IGrantable): iam.Grant { const ret = this.grant(grantee, writePermissions); if (this.encryptionKey && this.encryption === TableEncryption.CLIENT_SIDE_KMS) { this.encryptionKey.grantEncrypt(grantee); } @@ -214,6 +216,7 @@ export class S3Table extends TableBase { * * @param grantee the principal */ + @MethodMetadata() public grantReadWrite(grantee: iam.IGrantable): iam.Grant { const ret = this.grant(grantee, [...readPermissions, ...writePermissions]); if (this.encryptionKey && this.encryption === TableEncryption.CLIENT_SIDE_KMS) { this.encryptionKey.grantEncryptDecrypt(grantee); } diff --git a/packages/@aws-cdk/aws-iot-alpha/lib/topic-rule.ts b/packages/@aws-cdk/aws-iot-alpha/lib/topic-rule.ts index 780127eb8b32c..ac6eecb46caca 100644 --- a/packages/@aws-cdk/aws-iot-alpha/lib/topic-rule.ts +++ b/packages/@aws-cdk/aws-iot-alpha/lib/topic-rule.ts @@ -3,7 +3,7 @@ import { Construct } from 'constructs'; import { IAction } from './action'; import { IotSql } from './iot-sql'; import { CfnTopicRule } from 'aws-cdk-lib/aws-iot'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents an AWS IoT Rule @@ -150,6 +150,7 @@ export class TopicRule extends Resource implements ITopicRule { * * @param action the action to associate with the topic rule. */ + @MethodMetadata() public addAction(action: IAction): void { const { configuration } = action._bind(this); diff --git a/packages/@aws-cdk/aws-location-alpha/lib/geofence-collection.ts b/packages/@aws-cdk/aws-location-alpha/lib/geofence-collection.ts index 1f3895ddfd319..8c929c79df8ee 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/geofence-collection.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/geofence-collection.ts @@ -4,7 +4,7 @@ import { ArnFormat, IResource, Lazy, Resource, Stack, Token } from 'aws-cdk-lib/ import { Construct } from 'constructs'; import { CfnGeofenceCollection } from 'aws-cdk-lib/aws-location'; import { generateUniqueId } from './util'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Geofence Collection @@ -149,6 +149,7 @@ export class GeofenceCollection extends Resource implements IGeofenceCollection /** * Grant the given principal identity permissions to perform the actions on this geofence collection. */ + @MethodMetadata() public grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant { return iam.Grant.addToPrincipal({ grantee: grantee, @@ -162,6 +163,7 @@ export class GeofenceCollection extends Resource implements IGeofenceCollection * * @see https://docs.aws.amazon.com/location/latest/developerguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-read-only-geofences */ + @MethodMetadata() public grantRead(grantee: iam.IGrantable): iam.Grant { return this.grant(grantee, 'geo:ListGeofences', diff --git a/packages/@aws-cdk/aws-location-alpha/lib/map.ts b/packages/@aws-cdk/aws-location-alpha/lib/map.ts index 9d3a42ac91781..43b89ba66f06f 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/map.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/map.ts @@ -3,7 +3,7 @@ import { ArnFormat, IResource, Lazy, Resource, Stack, Token } from 'aws-cdk-lib/ import { Construct } from 'constructs'; import { CfnMap } from 'aws-cdk-lib/aws-location'; import { generateUniqueId } from './util'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents the Amazon Location Service Map @@ -313,6 +313,7 @@ export class Map extends Resource implements IMap { /** * Grant the given principal identity permissions to perform the actions on this map. */ + @MethodMetadata() public grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant { return iam.Grant.addToPrincipal({ grantee: grantee, @@ -325,6 +326,7 @@ export class Map extends Resource implements IMap { * Grant the given identity permissions to rendering a map resource * @See https://docs.aws.amazon.com/location/latest/developerguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-get-map-tiles */ + @MethodMetadata() public grantRendering(grantee: iam.IGrantable): iam.Grant { return this.grant(grantee, 'geo:GetMapTile', diff --git a/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts b/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts index 41a4e66301a24..ba8098bff431f 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts @@ -3,7 +3,7 @@ import { ArnFormat, IResource, Lazy, Resource, Stack, Token } from 'aws-cdk-lib/ import { Construct } from 'constructs'; import { CfnPlaceIndex } from 'aws-cdk-lib/aws-location'; import { DataSource, generateUniqueId } from './util'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Place Index @@ -172,6 +172,7 @@ export class PlaceIndex extends Resource implements IPlaceIndex { /** * Grant the given principal identity permissions to perform the actions on this place index. */ + @MethodMetadata() public grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant { return iam.Grant.addToPrincipal({ grantee: grantee, @@ -183,6 +184,7 @@ export class PlaceIndex extends Resource implements IPlaceIndex { /** * Grant the given identity permissions to search using this index */ + @MethodMetadata() public grantSearch(grantee: iam.IGrantable): iam.Grant { return this.grant(grantee, 'geo:SearchPlaceIndexForPosition', diff --git a/packages/@aws-cdk/aws-location-alpha/lib/route-calculator.ts b/packages/@aws-cdk/aws-location-alpha/lib/route-calculator.ts index 1279dfb0e1fdf..556805c9579e2 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/route-calculator.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/route-calculator.ts @@ -3,7 +3,7 @@ import { ArnFormat, IResource, Lazy, Resource, Stack, Token } from 'aws-cdk-lib/ import { Construct } from 'constructs'; import { CfnRouteCalculator } from 'aws-cdk-lib/aws-location'; import { generateUniqueId, DataSource } from './util'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Route Calculator @@ -145,6 +145,7 @@ export class RouteCalculator extends Resource implements IRouteCalculator { /** * Grant the given principal identity permissions to perform the actions on this route calculator. */ + @MethodMetadata() public grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant { return iam.Grant.addToPrincipal({ grantee: grantee, @@ -158,6 +159,7 @@ export class RouteCalculator extends Resource implements IRouteCalculator { * * @see https://docs.aws.amazon.com/location/latest/developerguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-calculate-route */ + @MethodMetadata() public grantRead(grantee: iam.IGrantable): iam.Grant { return this.grant(grantee, 'geo:CalculateRoute', diff --git a/packages/@aws-cdk/aws-location-alpha/lib/tracker.ts b/packages/@aws-cdk/aws-location-alpha/lib/tracker.ts index 187ec76a9b6a5..b0399822b26b7 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/tracker.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/tracker.ts @@ -5,7 +5,7 @@ import { Construct } from 'constructs'; import { CfnTracker, CfnTrackerConsumer } from 'aws-cdk-lib/aws-location'; import { generateUniqueId } from './util'; import { IGeofenceCollection } from './geofence-collection'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Tracker @@ -225,6 +225,7 @@ export class Tracker extends Resource implements ITracker { /** * Add Geofence Collections which are associated to the tracker resource. */ + @MethodMetadata() public addGeofenceCollections(...geofenceCollections: IGeofenceCollection[]) { geofenceCollections.forEach((collection) => { new CfnTrackerConsumer(this, `TrackerConsumer${collection.node.id}`, { @@ -237,6 +238,7 @@ export class Tracker extends Resource implements ITracker { /** * Grant the given principal identity permissions to perform the actions on this tracker. */ + @MethodMetadata() public grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant { return iam.Grant.addToPrincipal({ grantee: grantee, @@ -250,6 +252,7 @@ export class Tracker extends Resource implements ITracker { * * @see https://docs.aws.amazon.com/location/latest/developerguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-read-only-trackers */ + @MethodMetadata() public grantUpdateDevicePositions(grantee: iam.IGrantable): iam.Grant { return this.grant(grantee, 'geo:BatchUpdateDevicePosition', @@ -261,6 +264,7 @@ export class Tracker extends Resource implements ITracker { * * @see https://docs.aws.amazon.com/location/latest/developerguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-read-only-trackers */ + @MethodMetadata() public grantRead(grantee: iam.IGrantable): iam.Grant { return iam.Grant.addToPrincipal({ grantee, diff --git a/packages/@aws-cdk/aws-msk-alpha/lib/cluster.ts b/packages/@aws-cdk/aws-msk-alpha/lib/cluster.ts index 29d712d3dc45b..14e5cfb3b3ff5 100644 --- a/packages/@aws-cdk/aws-msk-alpha/lib/cluster.ts +++ b/packages/@aws-cdk/aws-msk-alpha/lib/cluster.ts @@ -13,7 +13,7 @@ import * as constructs from 'constructs'; import { addressOf } from 'constructs/lib/private/uniqueid'; import { KafkaVersion } from './'; import { CfnCluster } from 'aws-cdk-lib/aws-msk'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a MSK Cluster @@ -893,6 +893,7 @@ export class Cluster extends ClusterBase { * * @param usernames - username(s) to register with the cluster */ + @MethodMetadata() public addUser(...usernames: string[]): void { if (this.saslScramAuthenticationKey) { const MSK_SECRET_PREFIX = 'AmazonMSK_'; // Required diff --git a/packages/@aws-cdk/aws-msk-alpha/lib/serverless-cluster.ts b/packages/@aws-cdk/aws-msk-alpha/lib/serverless-cluster.ts index 66a98e0a200bf..883d24b9c0948 100644 --- a/packages/@aws-cdk/aws-msk-alpha/lib/serverless-cluster.ts +++ b/packages/@aws-cdk/aws-msk-alpha/lib/serverless-cluster.ts @@ -3,6 +3,7 @@ import { Fn, Lazy, Names } from 'aws-cdk-lib'; import * as constructs from 'constructs'; import { ClusterBase, ICluster } from '.'; import { CfnServerlessCluster } from 'aws-cdk-lib/aws-msk'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties for a MSK Serverless Cluster @@ -82,6 +83,8 @@ export class ServerlessCluster extends ClusterBase { produce: () => Names.uniqueResourceName(this, { maxLength: 64 }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.vpcConfigs.length < 1 || props.vpcConfigs.length > 5) { throw Error(`\`vpcConfigs\` must contain between 1 and 5 configurations, got ${props.vpcConfigs.length} configurations.`); diff --git a/packages/@aws-cdk/aws-redshift-alpha/lib/cluster.ts b/packages/@aws-cdk/aws-redshift-alpha/lib/cluster.ts index aaac9da8fd784..8bf75f7d53a32 100644 --- a/packages/@aws-cdk/aws-redshift-alpha/lib/cluster.ts +++ b/packages/@aws-cdk/aws-redshift-alpha/lib/cluster.ts @@ -13,7 +13,7 @@ import { Endpoint } from './endpoint'; import { ClusterParameterGroup, IClusterParameterGroup } from './parameter-group'; import { CfnCluster } from 'aws-cdk-lib/aws-redshift'; import { ClusterSubnetGroup, IClusterSubnetGroup } from './subnet-group'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Possible Node Types to use in the cluster @@ -705,6 +705,7 @@ export class Cluster extends ClusterBase { * @param [automaticallyAfter=Duration.days(30)] Specifies the number of days after the previous rotation * before Secrets Manager triggers the next automatic rotation. */ + @MethodMetadata() public addRotationSingleUser(automaticallyAfter?: Duration): secretsmanager.SecretRotation { if (!this.secret) { throw new Error('Cannot add single user rotation for a cluster without secret.'); @@ -729,6 +730,7 @@ export class Cluster extends ClusterBase { /** * Adds the multi user rotation to this cluster. */ + @MethodMetadata() public addRotationMultiUser(id: string, options: RotationMultiUserOptions): secretsmanager.SecretRotation { if (!this.secret) { throw new Error('Cannot add multi user rotation for a cluster without secret.'); @@ -769,6 +771,7 @@ export class Cluster extends ClusterBase { * @param name the parameter name * @param value the parameter name */ + @MethodMetadata() public addToParameterGroup(name: string, value: string): void { if (!this.parameterGroup) { const param: { [name: string]: string } = {}; @@ -788,6 +791,7 @@ export class Cluster extends ClusterBase { /** * Enables automatic cluster rebooting when changes to the cluster's parameter group require a restart to apply. */ + @MethodMetadata() public enableRebootForParameterChanges(): void { if (this.node.tryFindChild('RedshiftClusterRebooterCustomResource')) { return; @@ -855,6 +859,7 @@ export class Cluster extends ClusterBase { * * @param defaultIamRole the IAM role to be set as the default role */ + @MethodMetadata() public addDefaultIamRole(defaultIamRole: iam.IRole): void { // Get list of IAM roles attached to cluster const clusterRoleList = this.roles ?? []; @@ -909,6 +914,7 @@ export class Cluster extends ClusterBase { * * @param role the role to add */ + @MethodMetadata() public addIamRole(role: iam.IRole): void { const clusterRoleList = this.roles; diff --git a/packages/@aws-cdk/aws-redshift-alpha/lib/parameter-group.ts b/packages/@aws-cdk/aws-redshift-alpha/lib/parameter-group.ts index 3599135fa1695..deaaab2abe2ac 100644 --- a/packages/@aws-cdk/aws-redshift-alpha/lib/parameter-group.ts +++ b/packages/@aws-cdk/aws-redshift-alpha/lib/parameter-group.ts @@ -1,7 +1,7 @@ import { IResource, Resource } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnClusterParameterGroup } from 'aws-cdk-lib/aws-redshift'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A parameter group @@ -98,6 +98,7 @@ export class ClusterParameterGroup extends ClusterParameterGroupBase { * @param name the parameter name * @param value the parameter name */ + @MethodMetadata() public addParameter(name: string, value: string): void { const existingValue = Object.entries(this.parameters).find(([key, _]) => key === name)?.[1]; if (existingValue === undefined) { diff --git a/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group.ts b/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group.ts index 90f5df083bcc4..33645260fb6d4 100644 --- a/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group.ts +++ b/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group.ts @@ -3,7 +3,7 @@ import { Construct } from 'constructs'; import { IFirewallDomainList } from './firewall-domain-list'; import { FirewallRuleGroupAssociation, FirewallRuleGroupAssociationOptions } from './firewall-rule-group-association'; import { CfnFirewallRuleGroup } from 'aws-cdk-lib/aws-route53resolver'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Firewall Rule Group @@ -251,6 +251,7 @@ export class FirewallRuleGroup extends Resource implements IFirewallRuleGroup { /** * Adds a rule to this group */ + @MethodMetadata() public addRule(rule: FirewallRule): FirewallRuleGroup { this.rules.push(rule); return this; @@ -259,6 +260,7 @@ export class FirewallRuleGroup extends Resource implements IFirewallRuleGroup { /** * Associates this Firewall Rule Group with a VPC */ + @MethodMetadata() public associate(id: string, props: FirewallRuleGroupAssociationOptions): FirewallRuleGroupAssociation { return new FirewallRuleGroupAssociation(this, id, { ...props, diff --git a/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint-config.ts b/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint-config.ts index 207e2fddb67b6..52be27d2cabf6 100644 --- a/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint-config.ts +++ b/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint-config.ts @@ -7,7 +7,7 @@ import { InstanceType } from './instance-type'; import { IModel } from './model'; import { sameEnv } from './private/util'; import { CfnEndpointConfig } from 'aws-cdk-lib/aws-sagemaker'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The interface for a SageMaker EndpointConfig resource. @@ -231,6 +231,7 @@ export class EndpointConfig extends cdk.Resource implements IEndpointConfig { * * @param props The properties of a production variant to add. */ + @MethodMetadata() public addInstanceProductionVariant(props: InstanceProductionVariantProps): void { if (props.variantName in this.instanceProductionVariantsByName) { throw new Error(`There is already a Production Variant with name '${props.variantName}'`); diff --git a/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint.ts b/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint.ts index 0437d35801499..e273b51e3838d 100644 --- a/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint.ts +++ b/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint.ts @@ -11,7 +11,7 @@ import { InstanceType } from './instance-type'; import { sameEnv } from './private/util'; import { CfnEndpoint } from 'aws-cdk-lib/aws-sagemaker'; import { ScalableInstanceCount } from './scalable-instance-count'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /* * Amazon SageMaker automatic scaling doesn't support automatic scaling for burstable instances such @@ -451,6 +451,7 @@ export class Endpoint extends EndpointBase { * Find instance production variant based on variant name * @param name Variant name from production variant */ + @MethodMetadata() public findInstanceProductionVariant(name: string): IEndpointInstanceProductionVariant { if (this.endpointConfig instanceof EndpointConfig) { const variant = this.endpointConfig._findInstanceProductionVariant(name); diff --git a/packages/@aws-cdk/aws-sagemaker-alpha/lib/model.ts b/packages/@aws-cdk/aws-sagemaker-alpha/lib/model.ts index d0f3e7c3cd961..adcc83a9a6e4b 100644 --- a/packages/@aws-cdk/aws-sagemaker-alpha/lib/model.ts +++ b/packages/@aws-cdk/aws-sagemaker-alpha/lib/model.ts @@ -5,7 +5,7 @@ import { Construct } from 'constructs'; import { ContainerImage } from './container-image'; import { ModelData } from './model-data'; import { CfnModel } from 'aws-cdk-lib/aws-sagemaker'; -import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Interface that defines a Model resource. @@ -349,6 +349,7 @@ export class Model extends ModelBase { * * @param container The container definition to add. */ + @MethodMetadata() public addContainer(container: ContainerDefinition): void { this.containers.push(this.renderContainer(container)); } diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/deployment.ts b/packages/aws-cdk-lib/aws-apigateway/lib/deployment.ts index a06b5cb279103..bca3ab845a54d 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/deployment.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/deployment.ts @@ -5,7 +5,7 @@ import { IRestApi, RestApi, SpecRestApi, RestApiBase } from './restapi'; import { Lazy, RemovalPolicy, Resource, CfnResource } from '../../core'; import { ValidationError } from '../../core/lib/errors'; import { md5hash } from '../../core/lib/helpers-internal'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; export interface DeploymentProps { /** @@ -111,6 +111,7 @@ export class Deployment extends Resource { * invalidate the deployment when their settings change. The component will * be resolved during synthesis so tokens are welcome. */ + @MethodMetadata() public addToLogicalId(data: any) { this.resource.addToLogicalId(data); } diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/domain-name.ts b/packages/aws-cdk-lib/aws-apigateway/lib/domain-name.ts index 4f4aa13d6a010..49ecc22aa0842 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/domain-name.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/domain-name.ts @@ -8,7 +8,7 @@ import * as acm from '../../aws-certificatemanager'; import { IBucket } from '../../aws-s3'; import { IResource, Names, Resource, Token } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Options for creating an api mapping @@ -209,7 +209,8 @@ export class DomainName extends Resource implements IDomainName { * @param targetApi That target API endpoint, requests will be mapped to the deployment stage. * @param options Options for mapping to base path with or without a stage */ - public addBasePathMapping(targetApi: IRestApi, options: BasePathMappingOptions = { }): BasePathMapping { + @MethodMetadata() + public addBasePathMapping(targetApi: IRestApi, options: BasePathMappingOptions = {}): BasePathMapping { if (this.basePaths.has(options.basePath)) { throw new ValidationError(`DomainName ${this.node.id} already has a mapping for path ${options.basePath}`, this); } @@ -238,6 +239,7 @@ export class DomainName extends Resource implements IDomainName { * @param targetStage the target API stage. * @param options Options for mapping to a stage */ + @MethodMetadata() public addApiMapping(targetStage: IStage, options: ApiMappingOptions = {}): void { if (this.basePaths.has(options.basePath)) { throw new ValidationError(`DomainName ${this.node.id} already has a mapping for path ${options.basePath}`, this); diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/method.ts b/packages/aws-cdk-lib/aws-apigateway/lib/method.ts index e16968929e87d..67d2dd5fd6bb7 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/method.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/method.ts @@ -15,7 +15,7 @@ import * as cloudwatch from '../../aws-cloudwatch'; import * as iam from '../../aws-iam'; import { Annotations, ArnFormat, FeatureFlags, Lazy, Names, Resource, Stack } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { APIGATEWAY_REQUEST_VALIDATOR_UNIQUE_ID } from '../../cx-api'; export interface MethodOptions { /** @@ -311,6 +311,7 @@ export class Method extends Resource { * for historical reasons, but will add a warning if this happens. If you do, your Method * will nondeterministically use one of the responses, and ignore the rest. */ + @MethodMetadata() public addMethodResponse(methodResponse: MethodResponse): void { const mr = this.methodResponses.find((x) => x.statusCode === methodResponse.statusCode); if (mr) { @@ -430,6 +431,7 @@ export class Method extends Resource { /** * Returns the given named metric for this API method */ + @MethodMetadata() public metric(metricName: string, stage: IStage, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return new cloudwatch.Metric({ namespace: 'AWS/ApiGateway', @@ -444,6 +446,7 @@ export class Method extends Resource { * * @default - sum over 5 minutes */ + @MethodMetadata() public metricClientError(stage: IStage, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ApiGatewayMetrics._4XxErrorSum, stage, props); } @@ -453,6 +456,7 @@ export class Method extends Resource { * * @default - sum over 5 minutes */ + @MethodMetadata() public metricServerError(stage: IStage, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ApiGatewayMetrics._5XxErrorSum, stage, props); } @@ -462,6 +466,7 @@ export class Method extends Resource { * * @default - sum over 5 minutes */ + @MethodMetadata() public metricCacheHitCount(stage: IStage, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ApiGatewayMetrics.cacheHitCountSum, stage, props); } @@ -472,6 +477,7 @@ export class Method extends Resource { * * @default - sum over 5 minutes */ + @MethodMetadata() public metricCacheMissCount(stage: IStage, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ApiGatewayMetrics.cacheMissCountSum, stage, props); } @@ -481,6 +487,7 @@ export class Method extends Resource { * * @default - sample count over 5 minutes */ + @MethodMetadata() public metricCount(stage: IStage, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ApiGatewayMetrics.countSum, stage, { statistic: 'SampleCount', @@ -494,6 +501,7 @@ export class Method extends Resource { * * @default - average over 5 minutes. */ + @MethodMetadata() public metricIntegrationLatency(stage: IStage, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ApiGatewayMetrics.integrationLatencyAverage, stage, props); } @@ -505,6 +513,7 @@ export class Method extends Resource { * * @default - average over 5 minutes. */ + @MethodMetadata() public metricLatency(stage: IStage, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ApiGatewayMetrics.latencyAverage, stage, props); } @@ -514,6 +523,7 @@ export class Method extends Resource { * * @param grantee the principal */ + @MethodMetadata() public grantExecute(grantee: iam.IGrantable): iam.Grant { return iam.Grant.addToPrincipal({ grantee, diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/resource.ts b/packages/aws-cdk-lib/aws-apigateway/lib/resource.ts index 196176e197824..8a47fddd8f28e 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/resource.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/resource.ts @@ -7,7 +7,7 @@ import { Method, MethodOptions, AuthorizationType } from './method'; import { IRestApi, RestApi } from './restapi'; import { IResource as IResourceBase, Resource as ResourceConstruct } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; export interface IResource extends IResourceBase { /** @@ -543,6 +543,7 @@ export class ProxyResource extends Resource { } } + @MethodMetadata() public addMethod(httpMethod: string, integration?: Integration, options?: MethodOptions): Method { // In case this proxy is mounted under the root, also add this method to // the root so that empty paths are proxied as well. diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/restapi.ts b/packages/aws-cdk-lib/aws-apigateway/lib/restapi.ts index 2ff911ce558e6..05fbd81ebc3d5 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/restapi.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/restapi.ts @@ -19,7 +19,7 @@ import { IVpcEndpoint } from '../../aws-ec2'; import * as iam from '../../aws-iam'; import { ArnFormat, CfnOutput, IResource as IResourceBase, Resource, Stack, Token, FeatureFlags, RemovalPolicy, Size } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { APIGATEWAY_DISABLE_CLOUDWATCH_ROLE } from '../../cx-api'; const RESTAPI_SYMBOL = Symbol.for('@aws-cdk/aws-apigateway.RestApiBase'); @@ -862,6 +862,7 @@ export class RestApi extends RestApiBase { /** * Adds a new model. */ + @MethodMetadata() public addModel(id: string, props: ModelOptions): Model { return new Model(this, id, { ...props, @@ -872,6 +873,7 @@ export class RestApi extends RestApiBase { /** * Adds a new request validator. */ + @MethodMetadata() public addRequestValidator(id: string, props: RequestValidatorOptions): RequestValidator { return new RequestValidator(this, id, { ...props, diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/usage-plan.ts b/packages/aws-cdk-lib/aws-apigateway/lib/usage-plan.ts index 3aaff0afb8196..6ed5102f44b81 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/usage-plan.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/usage-plan.ts @@ -6,7 +6,7 @@ import { IRestApi } from './restapi'; import { Stage } from './stage'; import { validateDouble, validateInteger } from './util'; import { FeatureFlags, IResource, Lazy, Names, Resource, Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { APIGATEWAY_USAGEPLANKEY_ORDERINSENSITIVE_ID } from '../../cx-api'; /** @@ -265,6 +265,7 @@ export class UsagePlan extends UsagePlanBase { /** * Adds an apiStage. */ + @MethodMetadata() public addApiStage(apiStage: UsagePlanPerApiStage) { this.apiStages.push(apiStage); } diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/vpc-link.ts b/packages/aws-cdk-lib/aws-apigateway/lib/vpc-link.ts index d89f57bf36d45..cb4496e9a0f17 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/vpc-link.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/vpc-link.ts @@ -2,7 +2,7 @@ import { Construct } from 'constructs'; import { CfnVpcLink } from './apigateway.generated'; import * as elbv2 from '../../aws-elasticloadbalancingv2'; import { IResource, Lazy, Names, Resource } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Represents an API Gateway VpcLink @@ -87,6 +87,7 @@ export class VpcLink extends Resource implements IVpcLink { this.node.addValidation({ validate: () => this.validateVpcLink() }); } + @MethodMetadata() public addTargets(...targets: elbv2.INetworkLoadBalancer[]) { this._targets.push(...targets); } diff --git a/packages/aws-cdk-lib/aws-apigateway/test/restapi.test.ts b/packages/aws-cdk-lib/aws-apigateway/test/restapi.test.ts index 206454e5ce35b..9bdbac23bffa7 100644 --- a/packages/aws-cdk-lib/aws-apigateway/test/restapi.test.ts +++ b/packages/aws-cdk-lib/aws-apigateway/test/restapi.test.ts @@ -1506,7 +1506,7 @@ describe('telemetry metadata', () => { expect(api.node.metadata).toStrictEqual([{ data: { defaultMethodOptions: { - apiKeyRequired: '*', + apiKeyRequired: true, authorizer: '*', }, }, diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/domain-name.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/domain-name.ts index d1dc6185f6b4a..62dd867db30f8 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/domain-name.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/domain-name.ts @@ -4,7 +4,7 @@ import { ICertificate } from '../../../aws-certificatemanager'; import { IBucket } from '../../../aws-s3'; import { IResource, Lazy, Resource, Token } from '../../../core'; import { ValidationError } from '../../../core/lib/errors'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; /** * The minimum version of the SSL protocol that you want API Gateway to use for HTTPS connections. @@ -212,7 +212,8 @@ export class DomainName extends Resource implements IDomainName { * Adds an endpoint to a domain name. * @param options domain name endpoint properties to be set */ - public addEndpoint(options: EndpointOptions) : void { + @MethodMetadata() + public addEndpoint(options: EndpointOptions): void { const domainNameConfig: CfnDomainName.DomainNameConfigurationProperty = { certificateArn: options.certificate.certificateArn, certificateName: options.certificateName, diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/api.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/api.ts index 63dc0f243343b..ba0ecd1a8fd0a 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/api.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/api.ts @@ -8,7 +8,7 @@ import { CfnApi, CfnApiProps } from '.././index'; import { Metric, MetricOptions } from '../../../aws-cloudwatch'; import { ArnFormat, Duration, Stack, Token } from '../../../core'; import { ValidationError } from '../../../core/lib/errors'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { IApi } from '../common/api'; import { ApiBase } from '../common/base'; import { DomainMappingOptions } from '../common/stage'; @@ -504,6 +504,7 @@ export class HttpApi extends HttpApiBase { /** * Add a new stage. */ + @MethodMetadata() public addStage(id: string, options: HttpStageOptions): HttpStage { const stage = new HttpStage(this, id, { httpApi: this, @@ -516,6 +517,7 @@ export class HttpApi extends HttpApiBase { * Add multiple routes that uses the same configuration. The routes all go to the same path, but for different * methods. */ + @MethodMetadata() public addRoutes(options: AddRoutesOptions): HttpRoute[] { const methods = options.methods ?? [HttpMethod.ANY]; return methods.map((method) => { diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/route.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/route.ts index ddc56cf10cf7a..06f121c7d4f51 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/route.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/route.ts @@ -6,7 +6,7 @@ import { CfnRoute, CfnRouteProps } from '.././index'; import * as iam from '../../../aws-iam'; import { Aws, Resource } from '../../../core'; import { UnscopedValidationError, ValidationError } from '../../../core/lib/errors'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { IRoute } from '../common'; /** @@ -247,6 +247,7 @@ export class HttpRoute extends Resource implements IHttpRoute { return `arn:${Aws.PARTITION}:execute-api:${this.env.region}:${this.env.account}:${this.httpApi.apiId}/${stage}/${iamHttpMethod}${iamPath}`; } + @MethodMetadata() public grantInvoke(grantee: iam.IGrantable, options: GrantInvokeOptions = {}): iam.Grant { if (!this.authBindResult || this.authBindResult.authorizationType !== HttpRouteAuthorizationType.AWS_IAM) { throw new ValidationError('To use grantInvoke, you must use IAM authorization', this); diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/vpc-link.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/vpc-link.ts index 7361697dcf1f5..19b993f9d5122 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/vpc-link.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/vpc-link.ts @@ -2,7 +2,7 @@ import { Construct } from 'constructs'; import { CfnVpcLink } from '.././index'; import * as ec2 from '../../../aws-ec2'; import { IResource, Lazy, Names, Resource } from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; /** * Represents an API Gateway VpcLink @@ -112,6 +112,7 @@ export class VpcLink extends Resource implements IVpcLink { /** * Adds the provided subnets to the vpc link */ + @MethodMetadata() public addSubnets(...subnets: ec2.ISubnet[]) { this.subnets.push(...subnets); } @@ -119,6 +120,7 @@ export class VpcLink extends Resource implements IVpcLink { /** * Adds the provided security groups to the vpc link */ + @MethodMetadata() public addSecurityGroups(...groups: ec2.ISecurityGroup[]) { this.securityGroups.push(...groups); } diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/api.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/api.ts index 0099762d3b4f2..e96912701455f 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/api.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/api.ts @@ -4,7 +4,7 @@ import { CfnApi } from '.././index'; import { Grant, IGrantable } from '../../../aws-iam'; import { ArnFormat, Stack, Token } from '../../../core'; import { UnscopedValidationError, ValidationError } from '../../../core/lib/errors'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { IApi } from '../common/api'; import { ApiBase } from '../common/base'; @@ -165,6 +165,7 @@ export class WebSocketApi extends ApiBase implements IWebSocketApi { /** * Add a new route */ + @MethodMetadata() public addRoute(routeKey: string, options: WebSocketRouteOptions) { return new WebSocketRoute(this, `${routeKey}-Route`, { webSocketApi: this, @@ -179,6 +180,7 @@ export class WebSocketApi extends ApiBase implements IWebSocketApi { * * @param identity The principal */ + @MethodMetadata() public grantManageConnections(identity: IGrantable): Grant { const arn = Stack.of(this).formatArn({ service: 'execute-api', @@ -197,6 +199,7 @@ export class WebSocketApi extends ApiBase implements IWebSocketApi { * * @deprecated Use `arnForExecuteApiV2()` instead. */ + @MethodMetadata() public arnForExecuteApi(method?: string, path?: string, stage?: string): string { if (path && !Token.isUnresolved(path) && !path.startsWith('/')) { throw new UnscopedValidationError(`Path must start with '/': ${path}`); @@ -222,6 +225,7 @@ export class WebSocketApi extends ApiBase implements IWebSocketApi { * Specifically, if 'route' is not specified, it defaults to '*', representing all routes. * If 'stage' is not specified, it also defaults to '*', representing all stages. */ + @MethodMetadata() public arnForExecuteApiV2(route?: string, stage?: string): string { return Stack.of(this).formatArn({ service: 'execute-api', diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/stage.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/stage.ts index 070bab963928d..1db7bf126427f 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/stage.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/stage.ts @@ -4,7 +4,7 @@ import { CfnStage } from '.././index'; import { Grant, IGrantable } from '../../../aws-iam'; import { Stack } from '../../../core'; import { ValidationError } from '../../../core/lib/errors'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { StageOptions, IApi, IStage, StageAttributes } from '../common'; import { StageBase } from '../common/base'; @@ -131,6 +131,7 @@ export class WebSocketStage extends StageBase implements IWebSocketStage { * * @param identity The principal */ + @MethodMetadata() public grantManagementApiAccess(identity: IGrantable): Grant { const arn = Stack.of(this.api).formatArn({ service: 'execute-api', diff --git a/packages/aws-cdk-lib/aws-applicationautoscaling/lib/scalable-target.ts b/packages/aws-cdk-lib/aws-applicationautoscaling/lib/scalable-target.ts index bb5bd0e7cc07b..dba3dfa3ea10b 100644 --- a/packages/aws-cdk-lib/aws-applicationautoscaling/lib/scalable-target.ts +++ b/packages/aws-cdk-lib/aws-applicationautoscaling/lib/scalable-target.ts @@ -6,7 +6,7 @@ import { BasicTargetTrackingScalingPolicyProps, TargetTrackingScalingPolicy } fr import * as iam from '../../aws-iam'; import { IResource, Lazy, Resource, TimeZone, withResolved } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; export interface IScalableTarget extends IResource { /** @@ -140,6 +140,7 @@ export class ScalableTarget extends Resource implements IScalableTarget { /** * Add a policy statement to the role's policy */ + @MethodMetadata() public addToRolePolicy(statement: iam.PolicyStatement) { this.role.addToPrincipalPolicy(statement); } @@ -147,6 +148,7 @@ export class ScalableTarget extends Resource implements IScalableTarget { /** * Scale out or in based on time */ + @MethodMetadata() public scaleOnSchedule(id: string, action: ScalingSchedule) { if (action.minCapacity === undefined && action.maxCapacity === undefined) { throw new ValidationError(`You must supply at least one of minCapacity or maxCapacity, got ${JSON.stringify(action)}`, this); @@ -171,6 +173,7 @@ export class ScalableTarget extends Resource implements IScalableTarget { /** * Scale out or in, in response to a metric */ + @MethodMetadata() public scaleOnMetric(id: string, props: BasicStepScalingPolicyProps) { return new StepScalingPolicy(this, id, { ...props, scalingTarget: this }); } @@ -178,6 +181,7 @@ export class ScalableTarget extends Resource implements IScalableTarget { /** * Scale out or in in order to keep a metric around a target value */ + @MethodMetadata() public scaleToTrackMetric(id: string, props: BasicTargetTrackingScalingPolicyProps) { return new TargetTrackingScalingPolicy(this, id, { ...props, scalingTarget: this }); } diff --git a/packages/aws-cdk-lib/aws-appmesh/lib/virtual-node.ts b/packages/aws-cdk-lib/aws-appmesh/lib/virtual-node.ts index d2fad9f97a6e9..8be50d1c42beb 100644 --- a/packages/aws-cdk-lib/aws-appmesh/lib/virtual-node.ts +++ b/packages/aws-cdk-lib/aws-appmesh/lib/virtual-node.ts @@ -7,7 +7,7 @@ import { AccessLog, BackendDefaults, Backend } from './shared-interfaces'; import { VirtualNodeListener, VirtualNodeListenerConfig } from './virtual-node-listener'; import * as iam from '../../aws-iam'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Interface which all VirtualNode based classes must implement @@ -234,6 +234,7 @@ export class VirtualNode extends VirtualNodeBase { * * @see https://github.com/aws/aws-app-mesh-roadmap/issues/120 */ + @MethodMetadata() public addListener(listener: VirtualNodeListener) { if (!this.serviceDiscoveryConfig) { throw new cdk.ValidationError('Service discovery information is required for a VirtualNode with a listener.', this); @@ -244,6 +245,7 @@ export class VirtualNode extends VirtualNodeBase { /** * Add a Virtual Services that this node is expected to send outbound traffic to */ + @MethodMetadata() public addBackend(backend: Backend) { this.backends.push(backend.bind(this).virtualServiceBackend); } diff --git a/packages/aws-cdk-lib/aws-appsync/lib/channel-namespace.ts b/packages/aws-cdk-lib/aws-appsync/lib/channel-namespace.ts index f91f9a6ba1810..dd544fc5eb3cb 100644 --- a/packages/aws-cdk-lib/aws-appsync/lib/channel-namespace.ts +++ b/packages/aws-cdk-lib/aws-appsync/lib/channel-namespace.ts @@ -6,6 +6,7 @@ import { Code } from './code'; import { IEventApi } from './eventapi'; import { IGrantable } from '../../aws-iam'; import { IResource, Resource, Token, ValidationError } from '../../core'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * An AppSync channel namespace @@ -131,6 +132,8 @@ export class ChannelNamespace extends Resource implements IChannelNamespace { super(scope, id, { physicalName: props.channelNamespaceName ?? id, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const code = props.code?.bind(this); @@ -161,6 +164,7 @@ export class ChannelNamespace extends Resource implements IChannelNamespace { * * @param grantee The principal */ + @MethodMetadata() public grantSubscribe(grantee: IGrantable) { return this.api.grant(grantee, AppSyncEventResource.ofChannelNamespace(this.channelNamespace.name), 'appsync:EventSubscribe'); } @@ -171,6 +175,7 @@ export class ChannelNamespace extends Resource implements IChannelNamespace { * * @param grantee The principal */ + @MethodMetadata() public grantPublish(grantee: IGrantable) { return this.api.grant(grantee, AppSyncEventResource.ofChannelNamespace(this.channelNamespace.name), 'appsync:EventPublish'); } @@ -181,6 +186,7 @@ export class ChannelNamespace extends Resource implements IChannelNamespace { * * @param grantee The principal */ + @MethodMetadata() public grantPublishAndSubscribe(grantee: IGrantable) { return this.api.grant(grantee, AppSyncEventResource.ofChannelNamespace(this.channelNamespace.name), 'appsync:EventPublish', 'appsync:EventSubscribe'); } diff --git a/packages/aws-cdk-lib/aws-appsync/lib/eventapi.ts b/packages/aws-cdk-lib/aws-appsync/lib/eventapi.ts index a807fcdd9d532..3e82d97e108ee 100644 --- a/packages/aws-cdk-lib/aws-appsync/lib/eventapi.ts +++ b/packages/aws-cdk-lib/aws-appsync/lib/eventapi.ts @@ -20,6 +20,7 @@ import { ChannelNamespace, ChannelNamespaceOptions } from './channel-namespace'; import { Grant, IGrantable, ManagedPolicy, ServicePrincipal, Role } from '../../aws-iam'; import { ILogGroup, LogGroup, LogRetention, RetentionDays } from '../../aws-logs'; import { Lazy, Names, Stack, Token, ValidationError } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Authorization configuration for the Event API @@ -445,6 +446,8 @@ export class EventApi extends EventApiBase { }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const defaultAuthType: AppSyncAuthorizationType = AppSyncAuthorizationType.API_KEY; const defaultAuthProviders: AppSyncAuthProvider[] = [{ authorizationType: defaultAuthType }]; diff --git a/packages/aws-cdk-lib/aws-appsync/lib/graphqlapi.ts b/packages/aws-cdk-lib/aws-appsync/lib/graphqlapi.ts index 8f4f9a42682fb..5d885aa6002be 100644 --- a/packages/aws-cdk-lib/aws-appsync/lib/graphqlapi.ts +++ b/packages/aws-cdk-lib/aws-appsync/lib/graphqlapi.ts @@ -9,7 +9,7 @@ import { ManagedPolicy, Role, IRole, ServicePrincipal } from '../../aws-iam'; import { IFunction } from '../../aws-lambda'; import { ILogGroup, LogGroup, LogRetention, RetentionDays } from '../../aws-logs'; import { CfnResource, Duration, Expiration, FeatureFlags, IResolvable, Lazy, Stack, Token, ValidationError } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -814,6 +814,7 @@ export class GraphqlApi extends GraphqlApiBase { * * @param construct the dependee */ + @MethodMetadata() public addSchemaDependency(construct: CfnResource): boolean { if (this.schemaResource) { construct.addDependency(this.schemaResource); @@ -824,6 +825,7 @@ export class GraphqlApi extends GraphqlApiBase { /** * Add an environment variable to the construct. */ + @MethodMetadata() public addEnvironmentVariable(key: string, value: string) { if (this.definition.sourceApiOptions) { throw new ValidationError('Environment variables are not supported for merged APIs', this); diff --git a/packages/aws-cdk-lib/aws-autoscaling/lib/auto-scaling-group.ts b/packages/aws-cdk-lib/aws-autoscaling/lib/auto-scaling-group.ts index 910d1e6f185f0..7df4c566aedfd 100644 --- a/packages/aws-cdk-lib/aws-autoscaling/lib/auto-scaling-group.ts +++ b/packages/aws-cdk-lib/aws-autoscaling/lib/auto-scaling-group.ts @@ -25,7 +25,7 @@ import { Token, Tokenization, withResolved, } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { AUTOSCALING_GENERATE_LAUNCH_TEMPLATE } from '../../cx-api'; /** @@ -1607,6 +1607,7 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements * * @param securityGroup: The security group to add */ + @MethodMetadata() public addSecurityGroup(securityGroup: ec2.ISecurityGroup): void { if (FeatureFlags.of(this).isEnabled(AUTOSCALING_GENERATE_LAUNCH_TEMPLATE)) { this.launchTemplate?.addSecurityGroup(securityGroup); @@ -1621,6 +1622,7 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements /** * Attach to a classic load balancer */ + @MethodMetadata() public attachToClassicLB(loadBalancer: elb.LoadBalancer): void { this.loadBalancerNames.push(loadBalancer.loadBalancerName); } @@ -1628,6 +1630,7 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements /** * Attach to ELBv2 Application Target Group */ + @MethodMetadata() public attachToApplicationTargetGroup(targetGroup: elbv2.IApplicationTargetGroup): elbv2.LoadBalancerTargetProps { this.targetGroupArns.push(targetGroup.targetGroupArn); if (targetGroup instanceof elbv2.ApplicationTargetGroup) { @@ -1643,11 +1646,13 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements /** * Attach to ELBv2 Application Target Group */ + @MethodMetadata() public attachToNetworkTargetGroup(targetGroup: elbv2.INetworkTargetGroup): elbv2.LoadBalancerTargetProps { this.targetGroupArns.push(targetGroup.targetGroupArn); return { targetType: elbv2.TargetType.INSTANCE }; } + @MethodMetadata() public addUserData(...commands: string[]): void { this.userData.addCommands(...commands); } @@ -1655,6 +1660,7 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements /** * Adds a statement to the IAM role assumed by instances of this fleet. */ + @MethodMetadata() public addToRolePolicy(statement: iam.PolicyStatement) { this.role.addToPrincipalPolicy(statement); } @@ -1669,6 +1675,7 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements * - Update the instance's CreationPolicy to wait for `cfn-init` to finish * before reporting success. */ + @MethodMetadata() public applyCloudFormationInit(init: ec2.CloudFormationInit, options: ApplyCloudFormationInitOptions = {}) { if (!this.autoScalingGroup.cfnOptions.creationPolicy?.resourceSignal) { throw new Error('When applying CloudFormationInit, you must also configure signals by supplying \'signals\' at instantiation time.'); @@ -1690,6 +1697,7 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements /** * Ensures newly-launched instances are protected from scale-in. */ + @MethodMetadata() public protectNewInstancesFromScaleIn() { this.newInstancesProtectedFromScaleIn = true; } @@ -1697,6 +1705,7 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements /** * Returns `true` if newly-launched instances are protected from scale-in. */ + @MethodMetadata() public areNewInstancesProtectedFromScaleIn(): boolean { return this.newInstancesProtectedFromScaleIn === true; } diff --git a/packages/aws-cdk-lib/aws-backup/lib/plan.ts b/packages/aws-cdk-lib/aws-backup/lib/plan.ts index e469f3464cd7a..73be0cc19e523 100644 --- a/packages/aws-cdk-lib/aws-backup/lib/plan.ts +++ b/packages/aws-cdk-lib/aws-backup/lib/plan.ts @@ -4,7 +4,7 @@ import { BackupPlanCopyActionProps, BackupPlanRule } from './rule'; import { BackupSelection, BackupSelectionOptions } from './selection'; import { BackupVault, IBackupVault } from './vault'; import { IResource, Lazy, Resource } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * A backup plan @@ -172,6 +172,7 @@ export class BackupPlan extends Resource implements IBackupPlan { * * @param rule the rule to add */ + @MethodMetadata() public addRule(rule: BackupPlanRule) { let vault: IBackupVault; if (rule.props.backupVault) { @@ -225,6 +226,7 @@ export class BackupPlan extends Resource implements IBackupPlan { /** * Adds a selection to this plan */ + @MethodMetadata() public addSelection(id: string, options: BackupSelectionOptions): BackupSelection { return new BackupSelection(this, id, { backupPlan: this, diff --git a/packages/aws-cdk-lib/aws-backup/lib/vault.ts b/packages/aws-cdk-lib/aws-backup/lib/vault.ts index 9c69174fcbd75..86719e978582b 100644 --- a/packages/aws-cdk-lib/aws-backup/lib/vault.ts +++ b/packages/aws-cdk-lib/aws-backup/lib/vault.ts @@ -4,7 +4,7 @@ import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import * as sns from '../../aws-sns'; import { ArnFormat, Duration, IResource, Lazy, Names, RemovalPolicy, Resource, Stack, Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * A backup vault @@ -307,6 +307,7 @@ export class BackupVault extends BackupVaultBase { /** * Adds a statement to the vault access policy */ + @MethodMetadata() public addToAccessPolicy(statement: iam.PolicyStatement) { this.accessPolicy.addStatements(statement); } @@ -315,6 +316,7 @@ export class BackupVault extends BackupVaultBase { * Adds a statement to the vault access policy that prevents anyone * from deleting a recovery point. */ + @MethodMetadata() public blockRecoveryPointDeletion() { this.addToAccessPolicy(new iam.PolicyStatement({ effect: iam.Effect.DENY, diff --git a/packages/aws-cdk-lib/aws-batch/lib/ecs-job-definition.ts b/packages/aws-cdk-lib/aws-batch/lib/ecs-job-definition.ts index f7987279397e5..527a65387962d 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/ecs-job-definition.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/ecs-job-definition.ts @@ -5,7 +5,7 @@ import { baseJobDefinitionProperties, IJobDefinition, JobDefinitionBase, JobDefi import { IJobQueue } from './job-queue'; import * as iam from '../../aws-iam'; import { ArnFormat, Stack } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * A JobDefinition that uses ECS orchestration @@ -110,6 +110,7 @@ export class EcsJobDefinition extends JobDefinitionBase implements IEcsJobDefini /** * Grants the `batch:submitJob` permission to the identity on both this job definition and the `queue` */ + @MethodMetadata() public grantSubmitJob(identity: iam.IGrantable, queue: IJobQueue) { iam.Grant.addToPrincipal({ actions: ['batch:SubmitJob'], diff --git a/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts b/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts index 3a3bb988ab1b5..1e15c8f1cbb12 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts @@ -6,7 +6,7 @@ import * as eks from '../../aws-eks'; import * as iam from '../../aws-iam'; import { IRole } from '../../aws-iam'; import { ArnFormat, Duration, ITaggable, Lazy, Resource, Stack, TagManager, TagType, Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Represents a Managed ComputeEnvironment. Batch will provision EC2 Instances to @@ -718,10 +718,12 @@ export class ManagedEc2EcsComputeEnvironment extends ManagedComputeEnvironmentBa this.node.addValidation({ validate: () => validateInstances(this.instanceTypes, this.instanceClasses, props.useOptimalInstanceClasses) }); } + @MethodMetadata() public addInstanceType(instanceType: ec2.InstanceType): void { this.instanceTypes.push(instanceType); } + @MethodMetadata() public addInstanceClass(instanceClass: ec2.InstanceClass): void { this.instanceClasses.push(instanceClass); } @@ -1067,10 +1069,12 @@ export class ManagedEc2EksComputeEnvironment extends ManagedComputeEnvironmentBa this.node.addValidation({ validate: () => validateInstances(this.instanceTypes, this.instanceClasses, props.useOptimalInstanceClasses) }); } + @MethodMetadata() public addInstanceType(instanceType: ec2.InstanceType): void { this.instanceTypes.push(instanceType); } + @MethodMetadata() public addInstanceClass(instanceClass: ec2.InstanceClass): void { this.instanceClasses.push(instanceClass); } diff --git a/packages/aws-cdk-lib/aws-batch/lib/multinode-job-definition.ts b/packages/aws-cdk-lib/aws-batch/lib/multinode-job-definition.ts index d1a52df4a7fc9..212c2f8f392af 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/multinode-job-definition.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/multinode-job-definition.ts @@ -5,7 +5,7 @@ import { Compatibility } from './ecs-job-definition'; import { baseJobDefinitionProperties, IJobDefinition, JobDefinitionBase, JobDefinitionProps } from './job-definition-base'; import * as ec2 from '../../aws-ec2'; import { ArnFormat, Lazy, Stack } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Not a real instance type! Indicates that Batch will choose one it determines to be optimal @@ -203,6 +203,7 @@ export class MultiNodeJobDefinition extends JobDefinitionBase implements IMultiN return this._instanceType; } + @MethodMetadata() public addContainer(container: MultiNodeContainer) { this.containers.push(container); } diff --git a/packages/aws-cdk-lib/aws-batch/lib/scheduling-policy.ts b/packages/aws-cdk-lib/aws-batch/lib/scheduling-policy.ts index 2d34a7945acb8..852acf4755678 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/scheduling-policy.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/scheduling-policy.ts @@ -1,7 +1,7 @@ import { Construct } from 'constructs'; import { CfnSchedulingPolicy } from './batch.generated'; import { ArnFormat, Duration, IResource, Lazy, Resource, Stack } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Represents a Scheduling Policy. Scheduling Policies tell the Batch @@ -242,6 +242,7 @@ export class FairshareSchedulingPolicy extends SchedulingPolicyBase implements I /** * Add a share this to this Fairshare SchedulingPolicy */ + @MethodMetadata() public addShare(share: Share) { this.shares.push(share); } diff --git a/packages/aws-cdk-lib/aws-certificatemanager/lib/dns-validated-certificate.ts b/packages/aws-cdk-lib/aws-certificatemanager/lib/dns-validated-certificate.ts index 1090350b5e65e..9e8bf93a473c3 100644 --- a/packages/aws-cdk-lib/aws-certificatemanager/lib/dns-validated-certificate.ts +++ b/packages/aws-cdk-lib/aws-certificatemanager/lib/dns-validated-certificate.ts @@ -5,7 +5,7 @@ import * as iam from '../../aws-iam'; import * as route53 from '../../aws-route53'; import * as cdk from '../../core'; import { Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { CertificateRequestCertificateRequestFunction } from '../../custom-resource-handlers/dist/aws-certificatemanager/certificate-request-provider.generated'; /** @@ -164,6 +164,7 @@ export class DnsValidatedCertificate extends CertificateBase implements ICertifi this.node.addValidation({ validate: () => this.validateDnsValidatedCertificate() }); } + @MethodMetadata() public applyRemovalPolicy(policy: cdk.RemovalPolicy): void { this._removalPolicy = policy; } diff --git a/packages/aws-cdk-lib/aws-chatbot/lib/slack-channel-configuration.ts b/packages/aws-cdk-lib/aws-chatbot/lib/slack-channel-configuration.ts index 0c85ca2affd3d..921b99b084a78 100644 --- a/packages/aws-cdk-lib/aws-chatbot/lib/slack-channel-configuration.ts +++ b/packages/aws-cdk-lib/aws-chatbot/lib/slack-channel-configuration.ts @@ -6,7 +6,7 @@ import * as iam from '../../aws-iam'; import * as logs from '../../aws-logs'; import * as sns from '../../aws-sns'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a new Slack channel configuration @@ -329,6 +329,7 @@ export class SlackChannelConfiguration extends SlackChannelConfigurationBase { /** * Adds a SNS topic that deliver notifications to AWS Chatbot. */ + @MethodMetadata() public addNotificationTopic(notificationTopic: sns.ITopic): void { this.notificationTopics.push(notificationTopic); } diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/distribution.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/distribution.ts index 5fd02fe8dd3bf..dc5c7fb61f814 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/distribution.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/distribution.ts @@ -16,7 +16,7 @@ import * as iam from '../../aws-iam'; import * as lambda from '../../aws-lambda'; import * as s3 from '../../aws-s3'; import { ArnFormat, IResource, Lazy, Resource, Stack, Token, Duration, Names, FeatureFlags, Annotations } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { CLOUDFRONT_DEFAULT_SECURITY_POLICY_TLS_V1_2_2021 } from '../../cx-api'; /** @@ -408,6 +408,7 @@ export class Distribution extends Resource implements IDistribution { /** * Return the given named metric for this Distribution */ + @MethodMetadata() public metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return new cloudwatch.Metric({ namespace: 'AWS/CloudFront', @@ -422,6 +423,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - sum over 5 minutes */ + @MethodMetadata() public metricRequests(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.metric('Requests', { statistic: 'sum', ...props }); } @@ -431,6 +433,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - sum over 5 minutes */ + @MethodMetadata() public metricBytesUploaded(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.metric('BytesUploaded', { statistic: 'sum', ...props }); } @@ -440,6 +443,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - sum over 5 minutes */ + @MethodMetadata() public metricBytesDownloaded(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.metric('BytesDownloaded', { statistic: 'sum', ...props }); } @@ -449,6 +453,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metricTotalErrorRate(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.metric('TotalErrorRate', props); } @@ -458,6 +463,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metric4xxErrorRate(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.metric('4xxErrorRate', props); } @@ -467,6 +473,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metric5xxErrorRate(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.metric('5xxErrorRate', props); } @@ -481,6 +488,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metricOriginLatency(props?: cloudwatch.MetricOptions): cloudwatch.Metric { if (this.publishAdditionalMetrics !== true) { throw new Error('Origin latency metric is only available if \'publishAdditionalMetrics\' is set \'true\''); @@ -497,6 +505,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metricCacheHitRate(props?: cloudwatch.MetricOptions): cloudwatch.Metric { if (this.publishAdditionalMetrics !== true) { throw new Error('Cache hit rate metric is only available if \'publishAdditionalMetrics\' is set \'true\''); @@ -511,6 +520,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metric401ErrorRate(props?: cloudwatch.MetricOptions): cloudwatch.Metric { if (this.publishAdditionalMetrics !== true) { throw new Error('401 error rate metric is only available if \'publishAdditionalMetrics\' is set \'true\''); @@ -525,6 +535,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metric403ErrorRate(props?: cloudwatch.MetricOptions): cloudwatch.Metric { if (this.publishAdditionalMetrics !== true) { throw new Error('403 error rate metric is only available if \'publishAdditionalMetrics\' is set \'true\''); @@ -539,6 +550,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metric404ErrorRate(props?: cloudwatch.MetricOptions): cloudwatch.Metric { if (this.publishAdditionalMetrics !== true) { throw new Error('404 error rate metric is only available if \'publishAdditionalMetrics\' is set \'true\''); @@ -553,6 +565,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metric502ErrorRate(props?: cloudwatch.MetricOptions): cloudwatch.Metric { if (this.publishAdditionalMetrics !== true) { throw new Error('502 error rate metric is only available if \'publishAdditionalMetrics\' is set \'true\''); @@ -567,6 +580,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metric503ErrorRate(props?: cloudwatch.MetricOptions): cloudwatch.Metric { if (this.publishAdditionalMetrics !== true) { throw new Error('503 error rate metric is only available if \'publishAdditionalMetrics\' is set \'true\''); @@ -581,6 +595,7 @@ export class Distribution extends Resource implements IDistribution { * * @default - average over 5 minutes */ + @MethodMetadata() public metric504ErrorRate(props?: cloudwatch.MetricOptions): cloudwatch.Metric { if (this.publishAdditionalMetrics !== true) { throw new Error('504 error rate metric is only available if \'publishAdditionalMetrics\' is set \'true\''); @@ -595,6 +610,7 @@ export class Distribution extends Resource implements IDistribution { * @param origin the origin to use for this behavior * @param behaviorOptions the options for the behavior at this path. */ + @MethodMetadata() public addBehavior(pathPattern: string, origin: IOrigin, behaviorOptions: AddBehaviorOptions = {}) { if (pathPattern === '*') { throw new Error('Only the default behavior can have a path pattern of \'*\''); @@ -610,6 +626,7 @@ export class Distribution extends Resource implements IDistribution { * @param identity The principal * @param actions The set of actions to allow (i.e. "cloudfront:ListInvalidations") */ + @MethodMetadata() public grant(identity: iam.IGrantable, ...actions: string[]): iam.Grant { return iam.Grant.addToPrincipal({ grantee: identity, actions, resourceArns: [formatDistributionArn(this)] }); } @@ -619,6 +636,7 @@ export class Distribution extends Resource implements IDistribution { * * @param identity The principal */ + @MethodMetadata() public grantCreateInvalidation(identity: iam.IGrantable): iam.Grant { return this.grant(identity, 'cloudfront:CreateInvalidation'); } @@ -630,6 +648,7 @@ export class Distribution extends Resource implements IDistribution { * * @param webAclId The WAF WebACL to associate with this distribution */ + @MethodMetadata() public attachWebAclId(webAclId: string) { if (this.webAclId) { throw new Error('A WebACL has already been attached to this distribution'); diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/experimental/edge-function.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/experimental/edge-function.ts index 2e8a07defdf45..5ecaca0599720 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/experimental/edge-function.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/experimental/edge-function.ts @@ -13,7 +13,7 @@ import { Stage, Token, } from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { CrossRegionStringParamReaderProvider } from '../../../custom-resource-handlers/dist/aws-cloudfront/cross-region-string-param-reader-provider.generated'; /** @@ -91,6 +91,7 @@ export class EdgeFunction extends Resource implements lambda.IVersion { return this; } + @MethodMetadata() public addAlias(aliasName: string, options: lambda.AliasOptions = {}): lambda.Alias { return new lambda.Alias(this._edgeFunction, `Alias${aliasName}`, { aliasName, @@ -109,52 +110,68 @@ export class EdgeFunction extends Resource implements lambda.IVersion { throw new Error('$LATEST function version cannot be used for Lambda@Edge'); } + @MethodMetadata() public addEventSourceMapping(id: string, options: lambda.EventSourceMappingOptions): lambda.EventSourceMapping { return this.lambda.addEventSourceMapping(id, options); } + @MethodMetadata() public addPermission(id: string, permission: lambda.Permission): void { return this.lambda.addPermission(id, permission); } + @MethodMetadata() public addToRolePolicy(statement: iam.PolicyStatement): void { return this.lambda.addToRolePolicy(statement); } + @MethodMetadata() public grantInvoke(identity: iam.IGrantable): iam.Grant { return this.lambda.grantInvoke(identity); } + @MethodMetadata() public grantInvokeLatestVersion(identity: iam.IGrantable): iam.Grant { return this.lambda.grantInvokeLatestVersion(identity); } + @MethodMetadata() public grantInvokeVersion(identity: iam.IGrantable, version: lambda.IVersion): iam.Grant { return this.lambda.grantInvokeVersion(identity, version); } + @MethodMetadata() public grantInvokeUrl(identity: iam.IGrantable): iam.Grant { return this.lambda.grantInvokeUrl(identity); } + @MethodMetadata() public grantInvokeCompositePrincipal(compositePrincipal: iam.CompositePrincipal): iam.Grant[] { return this.lambda.grantInvokeCompositePrincipal(compositePrincipal); } + @MethodMetadata() public metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.lambda.metric(metricName, { ...props, region: EdgeFunction.EDGE_REGION }); } + @MethodMetadata() public metricDuration(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.lambda.metricDuration({ ...props, region: EdgeFunction.EDGE_REGION }); } + @MethodMetadata() public metricErrors(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.lambda.metricErrors({ ...props, region: EdgeFunction.EDGE_REGION }); } + @MethodMetadata() public metricInvocations(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.lambda.metricInvocations({ ...props, region: EdgeFunction.EDGE_REGION }); } + @MethodMetadata() public metricThrottles(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.lambda.metricThrottles({ ...props, region: EdgeFunction.EDGE_REGION }); } /** Adds an event source to this function. */ + @MethodMetadata() public addEventSource(source: lambda.IEventSource): void { return this.lambda.addEventSource(source); } + @MethodMetadata() public configureAsyncInvoke(options: lambda.EventInvokeConfigOptions): void { return this.lambda.configureAsyncInvoke(options); } + @MethodMetadata() public addFunctionUrl(options?: lambda.FunctionUrlOptions): lambda.FunctionUrl { return this.lambda.addFunctionUrl(options); } diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/web-distribution.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/web-distribution.ts index 7d783e9059849..afe63db0d9f90 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/web-distribution.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/web-distribution.ts @@ -11,7 +11,7 @@ import * as iam from '../../aws-iam'; import * as lambda from '../../aws-lambda'; import * as s3 from '../../aws-s3'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * HTTP status code to failover to second origin @@ -1008,6 +1008,7 @@ export class CloudFrontWebDistribution extends cdk.Resource implements IDistribu * @param identity The principal * @param actions The set of actions to allow (i.e. "cloudfront:ListInvalidations") */ + @MethodMetadata() public grant(identity: iam.IGrantable, ...actions: string[]): iam.Grant { return iam.Grant.addToPrincipal({ grantee: identity, actions, resourceArns: [formatDistributionArn(this)] }); } diff --git a/packages/aws-cdk-lib/aws-cloudtrail/lib/cloudtrail.ts b/packages/aws-cdk-lib/aws-cloudtrail/lib/cloudtrail.ts index f85daf6d4a12a..19994f4e4a294 100644 --- a/packages/aws-cdk-lib/aws-cloudtrail/lib/cloudtrail.ts +++ b/packages/aws-cdk-lib/aws-cloudtrail/lib/cloudtrail.ts @@ -8,7 +8,7 @@ import * as logs from '../../aws-logs'; import * as s3 from '../../aws-s3'; import * as sns from '../../aws-sns'; import { Resource, Stack } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Properties for an AWS CloudTrail trail @@ -381,6 +381,7 @@ export class Trail extends Resource { * @param dataResourceValues the list of data resource ARNs to include in logging (maximum 250 entries). * @param options the options to configure logging of management and data events. */ + @MethodMetadata() public addEventSelector(dataResourceType: DataResourceType, dataResourceValues: string[], options: AddEventSelectorOptions = {}) { if (dataResourceValues.length > 250) { throw new Error('A maximum of 250 data elements can be in one event selector'); @@ -418,6 +419,7 @@ export class Trail extends Resource { * @param handlers the list of lambda function handlers whose data events should be logged (maximum 250 entries). * @param options the options to configure logging of management and data events. */ + @MethodMetadata() public addLambdaEventSelector(handlers: lambda.IFunction[], options: AddEventSelectorOptions = {}) { if (handlers.length === 0) { return; } const dataResourceValues = handlers.map((h) => h.functionArn); @@ -429,6 +431,7 @@ export class Trail extends Resource { * @see https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html * @default false */ + @MethodMetadata() public logAllLambdaDataEvents(options: AddEventSelectorOptions = {}) { return this.addEventSelector(DataResourceType.LAMBDA_FUNCTION, [`arn:${this.stack.partition}:lambda`], options); } @@ -445,6 +448,7 @@ export class Trail extends Resource { * @param s3Selector the list of S3 bucket with optional prefix to include in logging (maximum 250 entries). * @param options the options to configure logging of management and data events. */ + @MethodMetadata() public addS3EventSelector(s3Selector: S3EventSelector[], options: AddEventSelectorOptions = {}) { if (s3Selector.length === 0) { return; } const dataResourceValues = s3Selector.map((sel) => `${sel.bucket.bucketArn}/${sel.objectPrefix ?? ''}`); @@ -456,6 +460,7 @@ export class Trail extends Resource { * @see https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html * @default false */ + @MethodMetadata() public logAllS3DataEvents(options: AddEventSelectorOptions = {}) { return this.addEventSelector(DataResourceType.S3_OBJECT, [`arn:${this.stack.partition}:s3:::`], options); } @@ -470,6 +475,7 @@ export class Trail extends Resource { * * @deprecated - use Trail.onEvent() */ + @MethodMetadata() public onCloudTrailEvent(id: string, options: events.OnEventOptions = {}): events.Rule { return Trail.onEvent(this, id, options); } diff --git a/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm.ts b/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm.ts index 47026b771fd58..3adeeaa058bf9 100644 --- a/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm.ts +++ b/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm.ts @@ -10,7 +10,7 @@ import { dropUndefined } from './private/object'; import { MetricSet } from './private/rendering'; import { normalizeStatistic, parseStatistic } from './private/statistic'; import { ArnFormat, Lazy, Stack, Token, Annotations } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Properties for Alarms @@ -245,6 +245,7 @@ export class Alarm extends AlarmBase { * * - You want to show an Alarm line in a graph with multiple metrics in it. */ + @MethodMetadata() public toAnnotation(): HorizontalAnnotation { return this.annotation; } @@ -254,6 +255,7 @@ export class Alarm extends AlarmBase { * * Typically SnsAction or AutoScalingAction. */ + @MethodMetadata() public addAlarmAction(...actions: IAlarmAction[]) { if (this.alarmActionArns === undefined) { this.alarmActionArns = []; diff --git a/packages/aws-cdk-lib/aws-cloudwatch/lib/dashboard.ts b/packages/aws-cdk-lib/aws-cloudwatch/lib/dashboard.ts index c309f189e36ba..729027ff89860 100644 --- a/packages/aws-cdk-lib/aws-cloudwatch/lib/dashboard.ts +++ b/packages/aws-cdk-lib/aws-cloudwatch/lib/dashboard.ts @@ -4,7 +4,7 @@ import { Column, Row } from './layout'; import { IVariable } from './variable'; import { IWidget } from './widget'; import { Lazy, Resource, Stack, Token, Annotations, Duration } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Specify the period for graphs when the CloudWatch dashboard loads @@ -184,6 +184,7 @@ export class Dashboard extends Resource { * Multiple widgets added in the same call to add() will be laid out next * to each other. */ + @MethodMetadata() public addWidgets(...widgets: IWidget[]) { if (widgets.length === 0) { return; @@ -208,6 +209,7 @@ export class Dashboard extends Resource { * * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_dashboard_variables.html */ + @MethodMetadata() public addVariable(variable: IVariable) { this.variables.push(variable); } diff --git a/packages/aws-cdk-lib/aws-codebuild/lib/project.ts b/packages/aws-cdk-lib/aws-codebuild/lib/project.ts index e48735f6ed173..5eac7941ef1f4 100644 --- a/packages/aws-cdk-lib/aws-codebuild/lib/project.ts +++ b/packages/aws-cdk-lib/aws-codebuild/lib/project.ts @@ -29,6 +29,7 @@ import * as kms from '../../aws-kms'; import * as s3 from '../../aws-s3'; import * as secretsmanager from '../../aws-secretsmanager'; import { ArnFormat, Aws, Duration, IResource, Lazy, Names, PhysicalName, Reference, Resource, SecretValue, Stack, Token, TokenComparison, Tokenization } from '../../core'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; const VPC_POLICY_SYM = Symbol.for('@aws-cdk/aws-codebuild.roleVpcPolicy'); @@ -1220,6 +1221,7 @@ export class Project extends ProjectBase { this.node.addValidation({ validate: () => this.validateProject() }); } + @MethodMetadata() public enableBatchBuilds(): BatchBuildConfig | undefined { if (!this._batchServiceRole) { this._batchServiceRole = new iam.Role(this, 'BatchServiceRole', { @@ -1247,6 +1249,7 @@ export class Project extends ProjectBase { * @param secondarySource the source to add as a secondary source * @see https://docs.aws.amazon.com/codebuild/latest/userguide/sample-multi-in-out.html */ + @MethodMetadata() public addSecondarySource(secondarySource: ISource): void { if (!secondarySource.identifier) { throw new Error('The identifier attribute is mandatory for secondary sources'); @@ -1266,6 +1269,7 @@ export class Project extends ProjectBase { * * @param fileSystemLocation the fileSystemLocation to add */ + @MethodMetadata() public addFileSystemLocation(fileSystemLocation: IFileSystemLocation): void { const fileSystemConfig = fileSystemLocation.bind(this, this); this._fileSystemLocations.push(fileSystemConfig.location); @@ -1277,6 +1281,7 @@ export class Project extends ProjectBase { * @param secondaryArtifact the artifact to add as a secondary artifact * @see https://docs.aws.amazon.com/codebuild/latest/userguide/sample-multi-in-out.html */ + @MethodMetadata() public addSecondaryArtifact(secondaryArtifact: IArtifacts): void { if (!secondaryArtifact.identifier) { throw new Error('The identifier attribute is mandatory for secondary artifacts'); @@ -1290,6 +1295,7 @@ export class Project extends ProjectBase { * @param _scope the construct the binding is taking place in * @param options additional options for the binding */ + @MethodMetadata() public bindToCodePipeline(_scope: Construct, options: BindToCodePipelineOptions): void { // work around a bug in CodeBuild: it ignores the KMS key set on the pipeline, // and always uses its own, project-level key @@ -1300,7 +1306,7 @@ export class Project extends ProjectBase { const keyStack = Stack.of(options.artifactBucket.encryptionKey); const projectStack = Stack.of(this); if (!(options.artifactBucket.encryptionKey instanceof kms.Key && - (keyStack.account !== projectStack.account || keyStack.region !== projectStack.region))) { + (keyStack.account !== projectStack.account || keyStack.region !== projectStack.region))) { this.encryptionKey = options.artifactBucket.encryptionKey; } } @@ -1793,7 +1799,6 @@ interface LinuxBuildImageProps { // Keep around to resolve a circular dependency until removing deprecated ARM image constants from LinuxBuildImage // eslint-disable-next-line import/order import { LinuxArmBuildImage } from './linux-arm-build-image'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A CodeBuild image running x86-64 Linux. diff --git a/packages/aws-cdk-lib/aws-codecommit/lib/repository.ts b/packages/aws-cdk-lib/aws-codecommit/lib/repository.ts index 389b04b369055..a15de16f35b9a 100644 --- a/packages/aws-cdk-lib/aws-codecommit/lib/repository.ts +++ b/packages/aws-cdk-lib/aws-codecommit/lib/repository.ts @@ -6,7 +6,7 @@ import * as events from '../../aws-events'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { ArnFormat, IResource, Lazy, Resource, Stack } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Additional options to pass to the notification rule. @@ -589,6 +589,7 @@ export class Repository extends RepositoryBase { * @param arn Arn of the resource that repository events will notify * @param options Trigger options to run actions */ + @MethodMetadata() public notify(arn: string, options?: RepositoryTriggerOptions): Repository { let evt = options && options.events; if (evt && evt.length > 1 && evt.indexOf(RepositoryEventTrigger.ALL) > -1) { diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-group.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-group.ts index 4e708f60ee0ae..2ff0ac1cee07a 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-group.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-group.ts @@ -6,7 +6,7 @@ import * as ecs from '../../../aws-ecs'; import * as elbv2 from '../../../aws-elasticloadbalancingv2'; import * as iam from '../../../aws-iam'; import * as cdk from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { CODEDEPLOY_REMOVE_ALARMS_FROM_DEPLOYMENT_GROUP } from '../../../cx-api'; import { CfnDeploymentGroup } from '../codedeploy.generated'; import { ImportedDeploymentGroupBase, DeploymentGroupBase } from '../private/base-deployment-group'; @@ -295,6 +295,7 @@ export class EcsDeploymentGroup extends DeploymentGroupBase implements IEcsDeplo * * @param alarm the alarm to associate with this Deployment Group */ + @MethodMetadata() public addAlarm(alarm: cloudwatch.IAlarm): void { this.alarms.push(alarm); } diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-group.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-group.ts index aa35d77247090..54870463a97c6 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-group.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-group.ts @@ -5,7 +5,7 @@ import * as cloudwatch from '../../../aws-cloudwatch'; import * as iam from '../../../aws-iam'; import * as lambda from '../../../aws-lambda'; import * as cdk from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { CODEDEPLOY_REMOVE_ALARMS_FROM_DEPLOYMENT_GROUP } from '../../../cx-api'; import { CfnDeploymentGroup } from '../codedeploy.generated'; import { ImportedDeploymentGroupBase, DeploymentGroupBase } from '../private/base-deployment-group'; @@ -227,6 +227,7 @@ export class LambdaDeploymentGroup extends DeploymentGroupBase implements ILambd * * @param alarm the alarm to associate with this Deployment Group */ + @MethodMetadata() public addAlarm(alarm: cloudwatch.IAlarm): void { this.alarms.push(alarm); } @@ -236,6 +237,7 @@ export class LambdaDeploymentGroup extends DeploymentGroupBase implements ILambd * @param preHook function to run before deployment beings * @throws an error if a pre-hook function is already configured */ + @MethodMetadata() public addPreHook(preHook: lambda.IFunction): void { if (this.preHook !== undefined) { throw new Error('A pre-hook function is already defined for this deployment group'); @@ -250,6 +252,7 @@ export class LambdaDeploymentGroup extends DeploymentGroupBase implements ILambd * @param postHook function to run after deployment completes * @throws an error if a post-hook function is already configured */ + @MethodMetadata() public addPostHook(postHook: lambda.IFunction): void { if (this.postHook !== undefined) { throw new Error('A post-hook function is already defined for this deployment group'); @@ -264,6 +267,7 @@ export class LambdaDeploymentGroup extends DeploymentGroupBase implements ILambd * on this deployment group resource. * @param grantee to grant permission to */ + @MethodMetadata() public grantPutLifecycleEventHookExecutionStatus(grantee: iam.IGrantable): iam.Grant { return iam.Grant.addToPrincipal({ grantee, diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-group.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-group.ts index 286b30251a9f5..7e44b76f38d32 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-group.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-group.ts @@ -8,7 +8,7 @@ import * as ec2 from '../../../aws-ec2'; import * as iam from '../../../aws-iam'; import * as s3 from '../../../aws-s3'; import * as cdk from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { CODEDEPLOY_REMOVE_ALARMS_FROM_DEPLOYMENT_GROUP } from '../../../cx-api'; import { CfnDeploymentGroup } from '../codedeploy.generated'; import { ImportedDeploymentGroupBase, DeploymentGroupBase } from '../private/base-deployment-group'; @@ -345,6 +345,7 @@ export class ServerDeploymentGroup extends DeploymentGroupBase implements IServe * [disable-awslint:ref-via-interface] is needed in order to install the code * deploy agent by updating the ASGs user data. */ + @MethodMetadata() public addAutoScalingGroup(asg: autoscaling.AutoScalingGroup): void { this._autoScalingGroups.push(asg); this.addCodeDeployAgentInstallUserData(asg); @@ -355,6 +356,7 @@ export class ServerDeploymentGroup extends DeploymentGroupBase implements IServe * * @param alarm the alarm to associate with this Deployment Group */ + @MethodMetadata() public addAlarm(alarm: cloudwatch.IAlarm): void { this.alarms.push(alarm); } diff --git a/packages/aws-cdk-lib/aws-codepipeline/lib/pipeline.ts b/packages/aws-cdk-lib/aws-codepipeline/lib/pipeline.ts index 424d3e53a4842..b95bc7321e49d 100644 --- a/packages/aws-cdk-lib/aws-codepipeline/lib/pipeline.ts +++ b/packages/aws-cdk-lib/aws-codepipeline/lib/pipeline.ts @@ -36,7 +36,7 @@ import { Stage as CdkStage, Token, } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -600,6 +600,7 @@ export class Pipeline extends PipelineBase { * @param props the creation properties of the new Stage * @returns the newly created Stage */ + @MethodMetadata() public addStage(props: StageOptions): IStage { // check for duplicate Stages and names if (this._stages.find(s => s.stageName === props.stageName)) { @@ -620,6 +621,7 @@ export class Pipeline extends PipelineBase { /** * Adds a statement to the pipeline role. */ + @MethodMetadata() public addToRolePolicy(statement: iam.PolicyStatement) { this.role.addToPrincipalPolicy(statement); } @@ -630,6 +632,7 @@ export class Pipeline extends PipelineBase { * @param variable Variable instance to add to this Pipeline * @returns the newly created variable */ + @MethodMetadata() public addVariable(variable: Variable): Variable { // check for duplicate variables and names if (this.variables.find(v => v.variableName === variable.variableName)) { @@ -646,6 +649,7 @@ export class Pipeline extends PipelineBase { * @param props Trigger property to add to this Pipeline * @returns the newly created trigger */ + @MethodMetadata() public addTrigger(props: TriggerProps): Trigger { const trigger = new Trigger(props); const actionName = props.gitConfiguration?.sourceAction.actionProperties.actionName; @@ -681,6 +685,7 @@ export class Pipeline extends PipelineBase { /** * Access one of the pipeline's stages by stage name */ + @MethodMetadata() public stage(stageName: string): IStage { for (const stage of this._stages) { if (stage.stageName === stageName) { diff --git a/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule.ts b/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule.ts index 47abc79be353f..3e6d550ab1712 100644 --- a/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule.ts +++ b/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule.ts @@ -3,7 +3,7 @@ import { CfnNotificationRule } from './codestarnotifications.generated'; import { INotificationRuleSource } from './notification-rule-source'; import { INotificationRuleTarget, NotificationRuleTargetConfig } from './notification-rule-target'; import { IResource, Resource, Names } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * The level of detail to include in the notifications for this resource. @@ -173,6 +173,7 @@ export class NotificationRule extends Resource implements INotificationRule { * Adds target to notification rule * @param target The SNS topic or AWS Chatbot Slack target */ + @MethodMetadata() public addTarget(target: INotificationRuleTarget): boolean { this.targets.push(target.bindAsNotificationRuleTarget(this)); return true; diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-domain.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-domain.ts index caf566285ffcc..51c015299012e 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-domain.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-domain.ts @@ -5,7 +5,7 @@ import { UserPoolClient } from './user-pool-client'; import { ICertificate } from '../../aws-certificatemanager'; import { IResource, Resource, Stack, Token } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { AwsCustomResource, AwsCustomResourcePolicy, AwsSdkCall, PhysicalResourceId } from '../../custom-resources'; /** @@ -197,6 +197,7 @@ export class UserPoolDomain extends Resource implements IUserPoolDomain { * * @param options options to customize baseUrl */ + @MethodMetadata() public baseUrl(options?: BaseUrlOptions): string { if (this.isCognitoDomain) { const authDomain = 'auth' + (options?.fips ? '-fips' : ''); @@ -210,6 +211,7 @@ export class UserPoolDomain extends Resource implements IUserPoolDomain { * @param client [disable-awslint:ref-via-interface] the user pool client that the UI will use to interact with the UserPool * @param options options to customize signInUrl. */ + @MethodMetadata() public signInUrl(client: UserPoolClient, options: SignInUrlOptions): string { let responseType: string; if (client.oAuthFlows.authorizationCodeGrant) { diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool.ts index 42e59418fe2c1..ba3a51018f8e1 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool.ts @@ -14,7 +14,7 @@ import { IKey } from '../../aws-kms'; import * as lambda from '../../aws-lambda'; import { ArnFormat, Duration, IResource, Lazy, Names, RemovalPolicy, Resource, Stack, Token } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * The different ways in which users of this pool can sign up or sign in. @@ -1103,6 +1103,7 @@ export class UserPool extends UserPoolBase { * Add a lambda trigger to a user pool operation * @see https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html */ + @MethodMetadata() public addTrigger(operation: UserPoolOperation, fn: lambda.IFunction, lambdaVersion?: LambdaVersion): void { if (operation.operationName in this.triggers) { throw new ValidationError(`A trigger for the operation ${operation.operationName} already exists.`, this); diff --git a/packages/aws-cdk-lib/aws-docdb/lib/cluster.ts b/packages/aws-cdk-lib/aws-docdb/lib/cluster.ts index f3dcd13fea2cb..145c99ded29de 100644 --- a/packages/aws-cdk-lib/aws-docdb/lib/cluster.ts +++ b/packages/aws-cdk-lib/aws-docdb/lib/cluster.ts @@ -12,7 +12,7 @@ import * as logs from '../../aws-logs'; import { CaCertificate } from '../../aws-rds'; import * as secretsmanager from '../../aws-secretsmanager'; import { CfnResource, Duration, RemovalPolicy, Resource, Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; const MIN_ENGINE_VERSION_FOR_IO_OPTIMIZED_STORAGE = 5; @@ -673,6 +673,7 @@ export class DatabaseCluster extends DatabaseClusterBase { * @param [automaticallyAfter=Duration.days(30)] Specifies the number of days after the previous rotation * before Secrets Manager triggers the next automatic rotation. */ + @MethodMetadata() public addRotationSingleUser(automaticallyAfter?: Duration): secretsmanager.SecretRotation { if (!this.secret) { throw new Error('Cannot add single user rotation for a cluster without secret.'); @@ -698,6 +699,7 @@ export class DatabaseCluster extends DatabaseClusterBase { /** * Adds the multi user rotation to this cluster. */ + @MethodMetadata() public addRotationMultiUser(id: string, options: RotationMultiUserOptions): secretsmanager.SecretRotation { if (!this.secret) { throw new Error('Cannot add multi user rotation for a cluster without secret.'); @@ -718,6 +720,7 @@ export class DatabaseCluster extends DatabaseClusterBase { * Adds security groups to this cluster. * @param securityGroups The security groups to add. */ + @MethodMetadata() public addSecurityGroups(...securityGroups: ec2.ISecurityGroup[]): void { if (this.cluster.vpcSecurityGroupIds === undefined) { this.cluster.vpcSecurityGroupIds = []; diff --git a/packages/aws-cdk-lib/aws-dynamodb/lib/table-v2.ts b/packages/aws-cdk-lib/aws-dynamodb/lib/table-v2.ts index 4b90113ef60d1..664667c64ec02 100644 --- a/packages/aws-cdk-lib/aws-dynamodb/lib/table-v2.ts +++ b/packages/aws-cdk-lib/aws-dynamodb/lib/table-v2.ts @@ -33,7 +33,7 @@ import { Token, } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; const HASH_KEY_TYPE = 'HASH'; @@ -635,6 +635,7 @@ export class TableV2 extends TableBaseV2 { * * @param props the properties of the replica table to add */ + @MethodMetadata() public addReplica(props: ReplicaTableProps) { this.validateReplica(props); @@ -659,6 +660,7 @@ export class TableV2 extends TableBaseV2 { * * @param props the properties of the global secondary index */ + @MethodMetadata() public addGlobalSecondaryIndex(props: GlobalSecondaryIndexPropsV2) { this.validateGlobalSecondaryIndex(props); const globalSecondaryIndex = this.configureGlobalSecondaryIndex(props); @@ -672,6 +674,7 @@ export class TableV2 extends TableBaseV2 { * * @param props the properties of the local secondary index */ + @MethodMetadata() public addLocalSecondaryIndex(props: LocalSecondaryIndexProps) { this.validateLocalSecondaryIndex(props); const localSecondaryIndex = this.configureLocalSecondaryIndex(props); @@ -685,6 +688,7 @@ export class TableV2 extends TableBaseV2 { * * @param region the region of the replica table */ + @MethodMetadata() public replica(region: string): ITableV2 { if (Token.isUnresolved(this.stack.region)) { throw new Error('Replica tables are not supported in a region agnostic stack'); diff --git a/packages/aws-cdk-lib/aws-dynamodb/lib/table.ts b/packages/aws-cdk-lib/aws-dynamodb/lib/table.ts index 3ee695c146316..eea8f49cda88c 100644 --- a/packages/aws-cdk-lib/aws-dynamodb/lib/table.ts +++ b/packages/aws-cdk-lib/aws-dynamodb/lib/table.ts @@ -22,7 +22,7 @@ import { Fn, Lazy, Names, RemovalPolicy, Stack, Token, CustomResource, } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; const HASH_KEY_TYPE = 'HASH'; const RANGE_KEY_TYPE = 'RANGE'; @@ -1283,6 +1283,7 @@ export class Table extends TableBase { * * @param props the property of global secondary index */ + @MethodMetadata() public addGlobalSecondaryIndex(props: GlobalSecondaryIndexProps) { this.validateProvisioning(props); this.validateIndexName(props.indexName); @@ -1323,6 +1324,7 @@ export class Table extends TableBase { * * @param props the property of local secondary index */ + @MethodMetadata() public addLocalSecondaryIndex(props: LocalSecondaryIndexProps) { // https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html#limits-secondary-indexes if (this.localSecondaryIndexes.length >= MAX_LOCAL_SECONDARY_INDEX_COUNT) { @@ -1352,6 +1354,7 @@ export class Table extends TableBase { * * @returns An object to configure additional AutoScaling settings */ + @MethodMetadata() public autoScaleReadCapacity(props: EnableScalingProps): IScalableTableAttribute { if (this.tableScaling.scalableReadAttribute) { throw new Error('Read AutoScaling already enabled for this table'); @@ -1374,6 +1377,7 @@ export class Table extends TableBase { * * @returns An object to configure additional AutoScaling settings for this attribute */ + @MethodMetadata() public autoScaleWriteCapacity(props: EnableScalingProps): IScalableTableAttribute { if (this.tableScaling.scalableWriteAttribute) { throw new Error('Write AutoScaling already enabled for this table'); @@ -1400,6 +1404,7 @@ export class Table extends TableBase { * * @returns An object to configure additional AutoScaling settings for this attribute */ + @MethodMetadata() public autoScaleGlobalSecondaryIndexReadCapacity(indexName: string, props: EnableScalingProps): IScalableTableAttribute { if (this.billingMode === BillingMode.PAY_PER_REQUEST) { throw new Error('AutoScaling is not available for tables with PAY_PER_REQUEST billing mode'); @@ -1426,6 +1431,7 @@ export class Table extends TableBase { * * @returns An object to configure additional AutoScaling settings for this attribute */ + @MethodMetadata() public autoScaleGlobalSecondaryIndexWriteCapacity(indexName: string, props: EnableScalingProps): IScalableTableAttribute { if (this.billingMode === BillingMode.PAY_PER_REQUEST) { throw new Error('AutoScaling is not available for tables with PAY_PER_REQUEST billing mode'); @@ -1452,6 +1458,7 @@ export class Table extends TableBase { * * @returns Schema of table or index. */ + @MethodMetadata() public schema(indexName?: string): SchemaOptions { if (!indexName) { return { diff --git a/packages/aws-cdk-lib/aws-ec2/lib/bastion-host.ts b/packages/aws-cdk-lib/aws-ec2/lib/bastion-host.ts index 10348927879a9..f62083d89503d 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/bastion-host.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/bastion-host.ts @@ -11,7 +11,7 @@ import { BlockDevice } from './volume'; import { IVpc, SubnetSelection } from './vpc'; import { IPrincipal, IRole, PolicyStatement } from '../../aws-iam'; import { CfnOutput, FeatureFlags, Resource, Stack } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { BASTION_HOST_USE_AMAZON_LINUX_2023_BY_DEFAULT } from '../../cx-api'; /** @@ -255,6 +255,7 @@ export class BastionHostLinux extends Resource implements IInstance { * Necessary if you want to connect to the instance using ssh. If not * called, you should use SSM Session Manager to connect to the instance. */ + @MethodMetadata() public allowSshAccessFrom(...peer: IPeer[]): void { peer.forEach(p => { this.connections.allowFrom(p, Port.tcp(22), 'SSH access'); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-endpoint.ts b/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-endpoint.ts index 023cbd55a18f5..48e8741c2e21c 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-endpoint.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-endpoint.ts @@ -10,7 +10,7 @@ import { IVpc, SubnetSelection } from './vpc'; import { ISamlProvider } from '../../aws-iam'; import * as logs from '../../aws-logs'; import { CfnOutput, Resource, Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Options for a client VPN endpoint @@ -400,6 +400,7 @@ export class ClientVpnEndpoint extends Resource implements IClientVpnEndpoint { /** * Adds an authorization rule to this endpoint */ + @MethodMetadata() public addAuthorizationRule(id: string, props: ClientVpnAuthorizationRuleOptions): ClientVpnAuthorizationRule { return new ClientVpnAuthorizationRule(this, id, { ...props, @@ -410,6 +411,7 @@ export class ClientVpnEndpoint extends Resource implements IClientVpnEndpoint { /** * Adds a route to this endpoint */ + @MethodMetadata() public addRoute(id: string, props: ClientVpnRouteOptions): ClientVpnRoute { return new ClientVpnRoute(this, id, { ...props, diff --git a/packages/aws-cdk-lib/aws-ec2/lib/instance.ts b/packages/aws-cdk-lib/aws-ec2/lib/instance.ts index 824ab8e9cbdff..874b2019fff39 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/instance.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/instance.ts @@ -17,7 +17,7 @@ import { IVpc, Subnet, SubnetSelection } from './vpc'; import * as iam from '../../aws-iam'; import { Annotations, AspectPriority, Aspects, Duration, FeatureFlags, Fn, IResource, Lazy, Resource, Stack, Tags, Token } from '../../core'; import { md5hash } from '../../core/lib/helpers-internal'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -680,6 +680,7 @@ export class Instance extends Resource implements IInstance { * * @param securityGroup: The security group to add */ + @MethodMetadata() public addSecurityGroup(securityGroup: ISecurityGroup): void { this.securityGroups.push(securityGroup); } @@ -688,6 +689,7 @@ export class Instance extends Resource implements IInstance { * Add command to the startup script of the instance. * The command must be in the scripting language supported by the instance's OS (i.e. Linux/Windows). */ + @MethodMetadata() public addUserData(...commands: string[]) { this.userData.addCommands(...commands); } @@ -695,6 +697,7 @@ export class Instance extends Resource implements IInstance { /** * Adds a statement to the IAM role assumed by the instance. */ + @MethodMetadata() public addToRolePolicy(statement: iam.PolicyStatement) { this.role.addToPrincipalPolicy(statement); } @@ -708,6 +711,7 @@ export class Instance extends Resource implements IInstance { * - Add commands to the instance UserData to run `cfn-init` and `cfn-signal`. * - Update the instance's CreationPolicy to wait for the `cfn-signal` commands. */ + @MethodMetadata() public applyCloudFormationInit(init: CloudFormationInit, options: ApplyCloudFormationInitOptions = {}) { init.attach(this.instance, { platform: this.osType, diff --git a/packages/aws-cdk-lib/aws-ec2/lib/launch-template.ts b/packages/aws-cdk-lib/aws-ec2/lib/launch-template.ts index c4bd48cd1e156..756cda646ce35 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/launch-template.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/launch-template.ts @@ -23,7 +23,7 @@ import { Token, FeatureFlags, } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -863,6 +863,7 @@ export class LaunchTemplate extends Resource implements ILaunchTemplate, iam.IGr * * @param securityGroup: The security group to add */ + @MethodMetadata() public addSecurityGroup(securityGroup: ISecurityGroup): void { if (!this._connections) { throw new Error('LaunchTemplate can only be added a securityGroup if another securityGroup is initialized in the constructor.'); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/network-acl.ts b/packages/aws-cdk-lib/aws-ec2/lib/network-acl.ts index f09e9055d83dd..d3f6ebad0377a 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/network-acl.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/network-acl.ts @@ -3,7 +3,7 @@ import { CfnNetworkAcl, CfnNetworkAclEntry, CfnSubnetNetworkAclAssociation } fro import { AclCidr, AclTraffic } from './network-acl-types'; import { ISubnet, IVpc, SubnetSelection } from './vpc'; import { IResource, Resource, Tags } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Name tag constant @@ -139,6 +139,7 @@ export class NetworkAcl extends NetworkAclBase { /** * Associate the ACL with a given set of subnets */ + @MethodMetadata() public associateWithSubnet(id: string, selection: SubnetSelection) { const subnets = this.vpc.selectSubnets(selection); for (const subnet of subnets.subnets) { diff --git a/packages/aws-cdk-lib/aws-ec2/lib/security-group.ts b/packages/aws-cdk-lib/aws-ec2/lib/security-group.ts index 2b71ccb104699..33892ffa47394 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/security-group.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/security-group.ts @@ -6,7 +6,7 @@ import { Port } from './port'; import { IVpc } from './vpc'; import * as cxschema from '../../cloud-assembly-schema'; import { Annotations, ContextProvider, IResource, Lazy, Names, Resource, ResourceProps, Stack, Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; const SECURITY_GROUP_SYMBOL = Symbol.for('@aws-cdk/iam.SecurityGroup'); @@ -530,6 +530,7 @@ export class SecurityGroup extends SecurityGroupBase { this.addDefaultIpv6EgressRule(); } + @MethodMetadata() public addIngressRule(peer: IPeer, connection: Port, description?: string, remoteRule?: boolean) { if (!peer.canInlineRule || !connection.canInlineRule || this.disableInlineRules) { super.addIngressRule(peer, connection, description, remoteRule); @@ -547,6 +548,7 @@ export class SecurityGroup extends SecurityGroupBase { }); } + @MethodMetadata() public addEgressRule(peer: IPeer, connection: Port, description?: string, remoteRule?: boolean) { const isIpv6 = peer.toEgressRuleConfig().hasOwnProperty('cidrIpv6'); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/vpc.ts b/packages/aws-cdk-lib/aws-ec2/lib/vpc.ts index 170c5cf758913..af8a039300870 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/vpc.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/vpc.ts @@ -18,7 +18,7 @@ import { Arn, Annotations, ContextProvider, IResource, Fn, Lazy, Resource, Stack, Token, Tags, Names, CustomResource, FeatureFlags, } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { RestrictDefaultSgProvider } from '../../custom-resource-handlers/dist/aws-ec2/restrict-default-sg-provider.generated'; import * as cxapi from '../../cx-api'; import { EC2_RESTRICT_DEFAULT_SECURITY_GROUP } from '../../cx-api'; @@ -1701,6 +1701,7 @@ export class Vpc extends VpcBase { * * @deprecated use `addGatewayEndpoint()` instead */ + @MethodMetadata() public addS3Endpoint(id: string, subnets?: SubnetSelection[]): GatewayVpcEndpoint { return new GatewayVpcEndpoint(this, id, { service: GatewayVpcEndpointAwsService.S3, @@ -1714,6 +1715,7 @@ export class Vpc extends VpcBase { * * @deprecated use `addGatewayEndpoint()` instead */ + @MethodMetadata() public addDynamoDbEndpoint(id: string, subnets?: SubnetSelection[]): GatewayVpcEndpoint { return new GatewayVpcEndpoint(this, id, { service: GatewayVpcEndpointAwsService.DYNAMODB, @@ -2129,6 +2131,7 @@ export class Subnet extends Resource implements ISubnet { * @param gatewayId the logical ID (ref) of the gateway attached to your VPC * @param gatewayAttachment the gateway attachment construct to be added as a dependency */ + @MethodMetadata() public addDefaultInternetRoute(gatewayId: string, gatewayAttachment: IDependable) { const route = new CfnRoute(this, 'DefaultRoute', { routeTableId: this.routeTable.routeTableId, @@ -2147,6 +2150,7 @@ export class Subnet extends Resource implements ISubnet { * * @param gatewayId the logical ID (ref) of the gateway attached to your VPC */ + @MethodMetadata() public addIpv6DefaultInternetRoute(gatewayId: string) { this.addRoute('DefaultRoute6', { routerType: RouterType.GATEWAY, @@ -2161,6 +2165,7 @@ export class Subnet extends Resource implements ISubnet { * * @param gatewayId the logical ID (ref) of the gateway attached to your VPC */ + @MethodMetadata() public addIpv6DefaultEgressOnlyInternetRoute(gatewayId: string) { this.addRoute('DefaultRoute6', { routerType: RouterType.EGRESS_ONLY_INTERNET_GATEWAY, @@ -2188,6 +2193,7 @@ export class Subnet extends Resource implements ISubnet { * Adds an entry to this subnets route table that points to the passed NATGatewayId * @param natGatewayId The ID of the NAT gateway */ + @MethodMetadata() public addDefaultNatRoute(natGatewayId: string) { this.addRoute('DefaultRoute', { routerType: RouterType.NAT_GATEWAY, @@ -2201,6 +2207,7 @@ export class Subnet extends Resource implements ISubnet { * Uses the known 64:ff9b::/96 prefix. * @param natGatewayId The ID of the NAT gateway */ + @MethodMetadata() public addIpv6Nat64Route(natGatewayId: string) { this.addRoute('Nat64', { routerType: RouterType.NAT_GATEWAY, @@ -2213,6 +2220,7 @@ export class Subnet extends Resource implements ISubnet { /** * Adds an entry to this subnets route table */ + @MethodMetadata() public addRoute(id: string, options: AddRouteOptions) { if (options.destinationCidrBlock && options.destinationIpv6CidrBlock) { throw new Error('Cannot specify both \'destinationCidrBlock\' and \'destinationIpv6CidrBlock\''); @@ -2230,6 +2238,7 @@ export class Subnet extends Resource implements ISubnet { } } + @MethodMetadata() public associateNetworkAcl(id: string, networkAcl: INetworkAcl) { this._networkAcl = networkAcl; @@ -2380,6 +2389,7 @@ export class PublicSubnet extends Subnet implements IPublicSubnet { * Also adds the EIP for the managed NAT. * @returns A ref to the the NAT Gateway ID */ + @MethodMetadata() public addNatGateway(eipAllocationId?: string) { // Create a NAT Gateway in this public subnet const ngw = new CfnNatGateway(this, 'NATGateway', { @@ -2644,6 +2654,7 @@ class ImportedSubnet extends Resource implements ISubnet, IPublicSubnet, IPrivat return this._ipv4CidrBlock; } + @MethodMetadata() public associateNetworkAcl(id: string, networkAcl: INetworkAcl): void { const scope = networkAcl instanceof Construct ? networkAcl : this; const other = networkAcl instanceof Construct ? this : networkAcl; diff --git a/packages/aws-cdk-lib/aws-ecr/lib/repository.ts b/packages/aws-cdk-lib/aws-ecr/lib/repository.ts index 7a1fa7cb3c85d..c1423f3e78634 100644 --- a/packages/aws-cdk-lib/aws-ecr/lib/repository.ts +++ b/packages/aws-cdk-lib/aws-ecr/lib/repository.ts @@ -19,7 +19,7 @@ import { CustomResource, Aws, } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { AutoDeleteImagesProvider } from '../../custom-resource-handlers/dist/aws-ecr/auto-delete-images-provider.generated'; const AUTO_DELETE_IMAGES_RESOURCE_TYPE = 'Custom::ECRAutoDeleteImages'; @@ -772,6 +772,7 @@ export class Repository extends RepositoryBase { * Cfn for ECR does not allow us to specify a resource policy. * It will fail if a resource section is present at all. */ + @MethodMetadata() public addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult { if (statement.resources.length) { Annotations.of(this).addWarningV2('@aws-cdk/aws-ecr:noResourceStatements', 'ECR resource policy does not allow resource statements.'); @@ -789,6 +790,7 @@ export class Repository extends RepositoryBase { * Life cycle rules automatically expire images from the repository that match * certain conditions. */ + @MethodMetadata() public addLifecycleRule(rule: LifecycleRule) { // Validate rule here so users get errors at the expected location if (rule.tagStatus === undefined) { diff --git a/packages/aws-cdk-lib/aws-ecs/lib/base/task-definition.ts b/packages/aws-cdk-lib/aws-ecs/lib/base/task-definition.ts index fd4688b545dde..4e12e90f9b83c 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/base/task-definition.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/base/task-definition.ts @@ -3,7 +3,7 @@ import { ImportedTaskDefinition } from './_imported-task-definition'; import * as ec2 from '../../../aws-ec2'; import * as iam from '../../../aws-iam'; import { IResource, Lazy, Names, PhysicalName, Resource } from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { ContainerDefinition, ContainerDefinitionOptions, PortMapping, Protocol } from '../container-definition'; import { CfnTaskDefinition } from '../ecs.generated'; import { FirelensLogRouter, FirelensLogRouterDefinitionOptions, FirelensLogRouterType, obtainDefaultFluentBitECRImage } from '../firelens-log-router'; @@ -635,6 +635,7 @@ export class TaskDefinition extends TaskDefinitionBase { /** * Adds a policy statement to the task IAM role. */ + @MethodMetadata() public addToTaskRolePolicy(statement: iam.PolicyStatement) { this.taskRole.addToPrincipalPolicy(statement); } @@ -642,6 +643,7 @@ export class TaskDefinition extends TaskDefinitionBase { /** * Adds a policy statement to the task execution IAM role. */ + @MethodMetadata() public addToExecutionRolePolicy(statement: iam.PolicyStatement) { this.obtainExecutionRole().addToPrincipalPolicy(statement); } @@ -649,6 +651,7 @@ export class TaskDefinition extends TaskDefinitionBase { /** * Adds a new container to the task definition. */ + @MethodMetadata() public addContainer(id: string, props: ContainerDefinitionOptions) { return new ContainerDefinition(this, id, { taskDefinition: this, ...props }); } @@ -656,6 +659,7 @@ export class TaskDefinition extends TaskDefinitionBase { /** * Adds a firelens log router to the task definition. */ + @MethodMetadata() public addFirelensLogRouter(id: string, props: FirelensLogRouterDefinitionOptions) { // only one firelens log router is allowed in each task. if (this.containers.find(x => x instanceof FirelensLogRouter)) { @@ -687,6 +691,7 @@ export class TaskDefinition extends TaskDefinitionBase { /** * Adds a volume to the task definition. */ + @MethodMetadata() public addVolume(volume: Volume) { this.validateVolume(volume); this.volumes.push(volume); @@ -706,6 +711,7 @@ export class TaskDefinition extends TaskDefinitionBase { /** * Adds the specified placement constraint to the task definition. */ + @MethodMetadata() public addPlacementConstraint(constraint: PlacementConstraint) { if (isFargateCompatible(this.compatibility)) { throw new Error('Cannot set placement constraints on tasks that run on Fargate'); @@ -719,6 +725,7 @@ export class TaskDefinition extends TaskDefinitionBase { * Extension can be used to apply a packaged modification to * a task definition. */ + @MethodMetadata() public addExtension(extension: ITaskDefinitionExtension) { extension.extend(this); } @@ -727,6 +734,7 @@ export class TaskDefinition extends TaskDefinitionBase { * Adds an inference accelerator to the task definition. * @deprecated ECS TaskDefinition's inferenceAccelerator is EOL since April 2024 */ + @MethodMetadata() public addInferenceAccelerator(inferenceAccelerator: InferenceAccelerator) { if (isFargateCompatible(this.compatibility)) { throw new Error('Cannot use inference accelerators on tasks that run on Fargate'); @@ -744,6 +752,7 @@ export class TaskDefinition extends TaskDefinitionBase { * * @param grantee Principal to grant consume rights to */ + @MethodMetadata() public grantRun(grantee: iam.IGrantable) { grantee.grantPrincipal.addToPrincipalPolicy(this.passRoleStatement); return iam.Grant.addToPrincipal({ @@ -756,6 +765,7 @@ export class TaskDefinition extends TaskDefinitionBase { /** * Creates the task execution IAM role if it doesn't already exist. */ + @MethodMetadata() public obtainExecutionRole(): iam.IRole { if (!this._executionRole) { this._executionRole = new iam.Role(this, 'ExecutionRole', { @@ -839,6 +849,7 @@ export class TaskDefinition extends TaskDefinitionBase { * @param name: port mapping name * @returns PortMapping for the provided name, if it exists. */ + @MethodMetadata() public findPortMappingByName(name: string): PortMapping | undefined { let portMapping; @@ -855,6 +866,7 @@ export class TaskDefinition extends TaskDefinitionBase { /** * Returns the container that match the provided containerName. */ + @MethodMetadata() public findContainer(containerName: string): ContainerDefinition | undefined { return this.containers.find(c => c.containerName === containerName); } diff --git a/packages/aws-cdk-lib/aws-ecs/lib/cluster.ts b/packages/aws-cdk-lib/aws-ecs/lib/cluster.ts index e4617f2329f76..c55a58ce67273 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/cluster.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/cluster.ts @@ -27,7 +27,7 @@ import { AspectPriority, FeatureFlags, Annotations, } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { Disable_ECS_IMDS_Blocking, Enable_IMDS_Blocking_Deprecated_Feature } from '../../cx-api'; const CLUSTER_SYMBOL = Symbol.for('@aws-cdk/aws-ecs/lib/cluster.Cluster'); @@ -373,6 +373,7 @@ export class Cluster extends Resource implements ICluster { /** * Enable the Fargate capacity providers for this cluster. */ + @MethodMetadata() public enableFargateCapacityProviders() { for (const provider of ['FARGATE', 'FARGATE_SPOT']) { if (!this._capacityProviderNames.includes(provider)) { @@ -395,6 +396,7 @@ export class Cluster extends Resource implements ICluster { * } * ] */ + @MethodMetadata() public addDefaultCapacityProviderStrategy(defaultCapacityProviderStrategy: CapacityProviderStrategy[]) { if (this._defaultCapacityProviderStrategy.length > 0) { throw new Error('Cluster default capacity provider strategy is already set.'); @@ -453,6 +455,7 @@ export class Cluster extends Resource implements ICluster { * NOTE: HttpNamespaces are supported only for use cases involving Service Connect. For use cases involving both Service- * Discovery and Service Connect, customers should manage the HttpNamespace outside of the Cluster.addDefaultCloudMapNamespace method. */ + @MethodMetadata() public addDefaultCloudMapNamespace(options: CloudMapNamespaceOptions): cloudmap.INamespace { if (this._defaultCloudMapNamespace !== undefined) { throw new Error('Can only add default namespace once.'); @@ -522,6 +525,7 @@ export class Cluster extends Resource implements ICluster { * * Returns the AutoScalingGroup so you can add autoscaling settings to it. */ + @MethodMetadata() public addCapacity(id: string, options: AddCapacityOptions): autoscaling.AutoScalingGroup { // Do 2-way defaulting here: if the machineImageType is BOTTLEROCKET, pick the right AMI. // Otherwise, determine the machineImageType from the given AMI. @@ -553,6 +557,7 @@ export class Cluster extends Resource implements ICluster { * * @param provider the capacity provider to add to this cluster. */ + @MethodMetadata() public addAsgCapacityProvider(provider: AsgCapacityProvider, options: AddAutoScalingGroupCapacityOptions = {}) { // Don't add the same capacity provider more than once. if (this._capacityProviderNames.includes(provider.capacityProviderName)) { @@ -580,6 +585,7 @@ export class Cluster extends Resource implements ICluster { * [disable-awslint:ref-via-interface] is needed in order to install the ECS * agent by updating the ASGs user data. */ + @MethodMetadata() public addAutoScalingGroup(autoScalingGroup: autoscaling.AutoScalingGroup, options: AddAutoScalingGroupCapacityOptions = {}) { this._hasEc2Capacity = true; this.connections.connections.addSecurityGroup(...autoScalingGroup.connections.securityGroups); @@ -743,6 +749,7 @@ export class Cluster extends Resource implements ICluster { * @deprecated Use `enableFargateCapacityProviders` instead. * @see `addAsgCapacityProvider` to add an Auto Scaling Group capacity provider to the cluster. */ + @MethodMetadata() public addCapacityProvider(provider: string) { if (!(provider === 'FARGATE' || provider === 'FARGATE_SPOT')) { throw new Error('CapacityProvider not supported'); @@ -759,6 +766,7 @@ export class Cluster extends Resource implements ICluster { * * @param keyPattern Task id pattern */ + @MethodMetadata() public arnForTasks(keyPattern: string): string { return Stack.of(this).formatArn({ service: 'ecs', @@ -775,6 +783,7 @@ export class Cluster extends Resource implements ICluster { * * @param grantee The entity (e.g., IAM role or user) to grant the permissions to. */ + @MethodMetadata() public grantTaskProtection(grantee: iam.IGrantable): iam.Grant { return iam.Grant.addToPrincipal({ grantee, @@ -847,6 +856,7 @@ export class Cluster extends Resource implements ICluster { * * @default average over 5 minutes */ + @MethodMetadata() public metricCpuReservation(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ECSMetrics.cpuReservationAverage, props); } @@ -856,6 +866,7 @@ export class Cluster extends Resource implements ICluster { * * @default average over 5 minutes */ + @MethodMetadata() public metricCpuUtilization(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ECSMetrics.cpuUtilizationAverage, props); } @@ -865,6 +876,7 @@ export class Cluster extends Resource implements ICluster { * * @default average over 5 minutes */ + @MethodMetadata() public metricMemoryReservation(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ECSMetrics.memoryReservationAverage, props); } @@ -874,6 +886,7 @@ export class Cluster extends Resource implements ICluster { * * @default average over 5 minutes */ + @MethodMetadata() public metricMemoryUtilization(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(ECSMetrics.memoryUtilizationAverage, props); } @@ -881,6 +894,7 @@ export class Cluster extends Resource implements ICluster { /** * This method returns the specified CloudWatch metric for this cluster. */ + @MethodMetadata() public metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return new cloudwatch.Metric({ namespace: 'AWS/ECS', diff --git a/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-service.ts b/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-service.ts index 7986d7911b33b..1d98f0a46bf6a 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-service.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-service.ts @@ -1,7 +1,7 @@ import { Construct } from 'constructs'; import * as ec2 from '../../../aws-ec2'; import { Lazy, Resource, Stack, Annotations } from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { BaseService, BaseServiceOptions, DeploymentControllerType, IBaseService, IService, LaunchType } from '../base/base-service'; import { fromServiceAttributes, extractServiceNameFromArn } from '../base/from-service-attributes'; import { NetworkMode, TaskDefinition } from '../base/task-definition'; @@ -232,6 +232,7 @@ export class Ec2Service extends BaseService implements IEc2Service { * Adds one or more placement strategies to use for tasks in the service. For more information, see * [Amazon ECS Task Placement Strategies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html). */ + @MethodMetadata() public addPlacementStrategies(...strategies: PlacementStrategy[]) { if (strategies.length > 0 && this.daemon) { throw new Error("Can't configure placement strategies when daemon=true"); @@ -246,6 +247,7 @@ export class Ec2Service extends BaseService implements IEc2Service { * Adds one or more placement constraints to use for tasks in the service. For more information, see * [Amazon ECS Task Placement Constraints](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html). */ + @MethodMetadata() public addPlacementConstraints(...constraints: PlacementConstraint[]) { this.constraints = []; for (const constraint of constraints) { diff --git a/packages/aws-cdk-lib/aws-ecs/lib/external/external-service.ts b/packages/aws-cdk-lib/aws-ecs/lib/external/external-service.ts index deecf359fbcb2..d81d7031dfcac 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/external/external-service.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/external/external-service.ts @@ -4,7 +4,7 @@ import * as ec2 from '../../../aws-ec2'; import * as elbv2 from '../../../aws-elasticloadbalancingv2'; import * as cloudmap from '../../../aws-servicediscovery'; import { ArnFormat, Resource, Stack, Annotations } from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { AssociateCloudMapServiceOptions, BaseService, BaseServiceOptions, CloudMapOptions, DeploymentControllerType, EcsTarget, IBaseService, IEcsLoadBalancerTarget, IService, LaunchType, PropagatedTagSource } from '../base/base-service'; import { fromServiceAttributes } from '../base/from-service-attributes'; import { ScalableTaskCount } from '../base/scalable-task-count'; @@ -144,22 +144,25 @@ export class ExternalService extends BaseService implements IExternalService { /** * Overriden method to throw error as `attachToApplicationTargetGroup` is not supported for external service */ + @MethodMetadata() public attachToApplicationTargetGroup(_targetGroup: elbv2.IApplicationTargetGroup): elbv2.LoadBalancerTargetProps { - throw new Error ('Application load balancer cannot be attached to an external service'); + throw new Error('Application load balancer cannot be attached to an external service'); } /** * Overriden method to throw error as `loadBalancerTarget` is not supported for external service */ + @MethodMetadata() public loadBalancerTarget(_options: LoadBalancerTargetOptions): IEcsLoadBalancerTarget { - throw new Error ('External service cannot be attached as load balancer targets'); + throw new Error('External service cannot be attached as load balancer targets'); } /** * Overriden method to throw error as `registerLoadBalancerTargets` is not supported for external service */ + @MethodMetadata() public registerLoadBalancerTargets(..._targets: EcsTarget[]) { - throw new Error ('External service cannot be registered as load balancer targets'); + throw new Error('External service cannot be registered as load balancer targets'); } /** @@ -173,21 +176,24 @@ export class ExternalService extends BaseService implements IExternalService { /** * Overriden method to throw error as `autoScaleTaskCount` is not supported for external service */ + @MethodMetadata() public autoScaleTaskCount(_props: appscaling.EnableScalingProps): ScalableTaskCount { - throw new Error ('Autoscaling not supported for external service'); + throw new Error('Autoscaling not supported for external service'); } /** * Overriden method to throw error as `enableCloudMap` is not supported for external service */ + @MethodMetadata() public enableCloudMap(_options: CloudMapOptions): cloudmap.Service { - throw new Error ('Cloud map integration not supported for an external service'); + throw new Error('Cloud map integration not supported for an external service'); } /** * Overriden method to throw error as `associateCloudMapService` is not supported for external service */ + @MethodMetadata() public associateCloudMapService(_options: AssociateCloudMapServiceOptions): void { - throw new Error ('Cloud map service association is not supported for an external service'); + throw new Error('Cloud map service association is not supported for an external service'); } } diff --git a/packages/aws-cdk-lib/aws-ecs/lib/external/external-task-definition.ts b/packages/aws-cdk-lib/aws-ecs/lib/external/external-task-definition.ts index 3ca2a8909315a..90e2cccce8357 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/external/external-task-definition.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/external/external-task-definition.ts @@ -1,5 +1,5 @@ import { Construct } from 'constructs'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { ImportedTaskDefinition } from '../../lib/base/_imported-task-definition'; import { CommonTaskDefinitionAttributes, @@ -87,6 +87,7 @@ export class ExternalTaskDefinition extends TaskDefinition implements IExternalT /** * Overriden method to throw error as interface accelerators are not supported for external tasks */ + @MethodMetadata() public addInferenceAccelerator(_inferenceAccelerator: InferenceAccelerator) { throw new Error('Cannot use inference accelerators on tasks that run on External service'); } diff --git a/packages/aws-cdk-lib/aws-efs/lib/efs-file-system.ts b/packages/aws-cdk-lib/aws-efs/lib/efs-file-system.ts index 848ef5d3181d1..57187586311c1 100644 --- a/packages/aws-cdk-lib/aws-efs/lib/efs-file-system.ts +++ b/packages/aws-cdk-lib/aws-efs/lib/efs-file-system.ts @@ -5,7 +5,7 @@ import * as ec2 from '../../aws-ec2'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { ArnFormat, FeatureFlags, Lazy, RemovalPolicy, Resource, Size, Stack, Tags, Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -914,6 +914,7 @@ export class FileSystem extends FileSystemBase { /** * create access point from this filesystem */ + @MethodMetadata() public addAccessPoint(id: string, accessPointOptions: AccessPointOptions = {}): AccessPoint { return new AccessPoint(this, id, { fileSystem: this, diff --git a/packages/aws-cdk-lib/aws-eks/lib/access-entry.ts b/packages/aws-cdk-lib/aws-eks/lib/access-entry.ts index 26bb36dd10c49..89c7328170003 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/access-entry.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/access-entry.ts @@ -4,7 +4,7 @@ import { CfnAccessEntry } from './eks.generated'; import { Resource, IResource, Aws, Lazy, } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Represents an access entry in an Amazon EKS cluster. @@ -358,6 +358,7 @@ export class AccessEntry extends Resource implements IAccessEntry { * Add the access policies for this entry. * @param newAccessPolicies - The new access policies to add. */ + @MethodMetadata() public addAccessPolicies(newAccessPolicies: IAccessPolicy[]): void { // add newAccessPolicies to this.accessPolicies this.accessPolicies.push(...newAccessPolicies); diff --git a/packages/aws-cdk-lib/aws-eks/lib/cluster.ts b/packages/aws-cdk-lib/aws-eks/lib/cluster.ts index 3ad35d0cf54d8..c79999c6360c4 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/cluster.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/cluster.ts @@ -26,7 +26,7 @@ import * as kms from '../../aws-kms'; import * as lambda from '../../aws-lambda'; import * as ssm from '../../aws-ssm'; import { Annotations, CfnOutput, CfnResource, IResource, Resource, Stack, Tags, Token, Duration, Size } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; // defaults are based on https://eksctl.io const DEFAULT_CAPACITY_COUNT = 2; @@ -1838,6 +1838,7 @@ export class Cluster extends ClusterBase { * @param principal - The IAM principal (role or user) to be granted access to the EKS cluster. * @param accessPolicies - An array of `IAccessPolicy` objects that define the access permissions to be granted to the IAM principal. */ + @MethodMetadata() public grantAccess(id: string, principal: string, accessPolicies: IAccessPolicy[]) { this.addToAccessEntry(id, principal, accessPolicies); } @@ -1848,6 +1849,7 @@ export class Cluster extends ClusterBase { * @param serviceName The name of the service. * @param options Additional operation options. */ + @MethodMetadata() public getServiceLoadBalancerAddress(serviceName: string, options: ServiceLoadBalancerAddressOptions = {}): string { const loadBalancerAddress = new KubernetesObjectValue(this, `${serviceName}LoadBalancerAddress`, { cluster: this, @@ -1867,6 +1869,7 @@ export class Cluster extends ClusterBase { * @param ingressName The name of the ingress. * @param options Additional operation options. */ + @MethodMetadata() public getIngressLoadBalancerAddress(ingressName: string, options: IngressLoadBalancerAddressOptions = {}): string { const loadBalancerAddress = new KubernetesObjectValue(this, `${ingressName}LoadBalancerAddress`, { cluster: this, @@ -1895,6 +1898,7 @@ export class Cluster extends ClusterBase { * daemon will be installed on all spot instances to handle * [EC2 Spot Instance Termination Notices](https://aws.amazon.com/blogs/aws/new-ec2-spot-instance-termination-notices/). */ + @MethodMetadata() public addAutoScalingGroupCapacity(id: string, options: AutoScalingGroupCapacityOptions): autoscaling.AutoScalingGroup { if (options.machineImageType === MachineImageType.BOTTLEROCKET && options.bootstrapOptions !== undefined) { throw new Error('bootstrapOptions is not supported for Bottlerocket'); @@ -1922,7 +1926,7 @@ export class Cluster extends ClusterBase { }); if (nodeTypeForInstanceType(options.instanceType) === NodeType.INFERENTIA || - nodeTypeForInstanceType(options.instanceType) === NodeType.TRAINIUM ) { + nodeTypeForInstanceType(options.instanceType) === NodeType.TRAINIUM) { this.addNeuronDevicePlugin(); } @@ -1938,12 +1942,13 @@ export class Cluster extends ClusterBase { * @param id The ID of the nodegroup * @param options options for creating a new nodegroup */ + @MethodMetadata() public addNodegroupCapacity(id: string, options?: NodegroupOptions): Nodegroup { const hasInferentiaOrTrainiumInstanceType = [ options?.instanceType, ...options?.instanceTypes ?? [], ].some(i => i && (nodeTypeForInstanceType(i) === NodeType.INFERENTIA || - nodeTypeForInstanceType(i) === NodeType.TRAINIUM)); + nodeTypeForInstanceType(i) === NodeType.TRAINIUM)); if (hasInferentiaOrTrainiumInstanceType) { this.addNeuronDevicePlugin(); @@ -2030,6 +2035,7 @@ export class Cluster extends ClusterBase { * @param id the id of this profile * @param options profile options */ + @MethodMetadata() public addFargateProfile(id: string, options: FargateProfileOptions) { return new FargateProfile(this, `fargate-profile-${id}`, { ...options, diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancing/lib/load-balancer.ts b/packages/aws-cdk-lib/aws-elasticloadbalancing/lib/load-balancer.ts index 65f58e8bcac7e..860f0392c0493 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancing/lib/load-balancer.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancing/lib/load-balancer.ts @@ -6,7 +6,7 @@ import { } from '../../aws-ec2'; import { Duration, Lazy, Resource } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Construction properties for a LoadBalancer @@ -291,6 +291,7 @@ export class LoadBalancer extends Resource implements IConnectable { * * @returns A ListenerPort object that controls connections to the listener port */ + @MethodMetadata() public addListener(listener: LoadBalancerListener): ListenerPort { if (listener.sslCertificateArn && listener.sslCertificateId) { throw new ValidationError('"sslCertificateId" is deprecated, please use "sslCertificateArn" only.', this); @@ -326,6 +327,7 @@ export class LoadBalancer extends Resource implements IConnectable { return port; } + @MethodMetadata() public addTarget(target: ILoadBalancerTarget) { target.attachToClassicLB(this); diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-listener.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-listener.ts index 2d005412db213..30a180d5a948d 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-listener.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-listener.ts @@ -10,7 +10,7 @@ import * as ec2 from '../../../aws-ec2'; import * as cxschema from '../../../cloud-assembly-schema'; import { Duration, FeatureFlags, Lazy, Resource, Token } from '../../../core'; import { ValidationError } from '../../../core/lib/errors'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import * as cxapi from '../../../cx-api'; import { BaseListener, BaseListenerLookupOptions, IListener } from '../shared/base-listener'; import { HealthCheck } from '../shared/base-target-group'; @@ -337,6 +337,7 @@ export class ApplicationListener extends BaseListener implements IApplicationLis * * @deprecated Use `addCertificates` instead. */ + @MethodMetadata() public addCertificateArns(id: string, arns: string[]): void { this.addCertificates(id, arns.map(ListenerCertificate.fromArn)); } @@ -348,6 +349,7 @@ export class ApplicationListener extends BaseListener implements IApplicationLis * resources since cloudformation requires the certificates array on the * listener resource to have a length of 1. */ + @MethodMetadata() public addCertificates(id: string, certificates: IListenerCertificate[]): void { const additionalCerts = [...certificates]; @@ -377,6 +379,7 @@ export class ApplicationListener extends BaseListener implements IApplicationLis * At least one Action must be added without conditions (which becomes the * default Action). */ + @MethodMetadata() public addAction(id: string, props: AddApplicationActionProps): void { checkAddRuleProps(this, props); @@ -405,6 +408,7 @@ export class ApplicationListener extends BaseListener implements IApplicationLis * way. At least one TargetGroup must be added without conditions (which will * become the default Action for this listener). */ + @MethodMetadata() public addTargetGroups(id: string, props: AddApplicationTargetGroupsProps): void { checkAddRuleProps(this, props); @@ -437,6 +441,7 @@ export class ApplicationListener extends BaseListener implements IApplicationLis * * @returns The newly created target group */ + @MethodMetadata() public addTargets(id: string, props: AddApplicationTargetsProps): ApplicationTargetGroup { if (!this.loadBalancer.vpc) { // eslint-disable-next-line max-len @@ -461,6 +466,7 @@ export class ApplicationListener extends BaseListener implements IApplicationLis * * @deprecated Use `addAction()` instead */ + @MethodMetadata() public addFixedResponse(id: string, props: AddFixedResponseProps) { checkAddRuleProps(this, props); @@ -503,6 +509,7 @@ export class ApplicationListener extends BaseListener implements IApplicationLis * * @deprecated Use `addAction()` instead */ + @MethodMetadata() public addRedirectResponse(id: string, props: AddRedirectResponseProps) { checkAddRuleProps(this, props); const redirectResponse = { @@ -551,6 +558,7 @@ export class ApplicationListener extends BaseListener implements IApplicationLis * * Don't call this directly. It is called by ApplicationTargetGroup. */ + @MethodMetadata() public registerConnectable(connectable: ec2.IConnectable, portRange: ec2.Port): void { connectable.connections.allowFrom(this.loadBalancer, portRange, 'Load balancer to target'); } diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts index e920f44ac2b5a..fd98c253db94b 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts @@ -9,7 +9,7 @@ import * as s3 from '../../../aws-s3'; import * as cxschema from '../../../cloud-assembly-schema'; import { CfnResource, Duration, Lazy, Names, Resource, Stack } from '../../../core'; import { ValidationError } from '../../../core/lib/errors'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import * as cxapi from '../../../cx-api'; import { ApplicationELBMetrics } from '../elasticloadbalancingv2-canned-metrics.generated'; import { BaseLoadBalancer, BaseLoadBalancerLookupOptions, BaseLoadBalancerProps, ILoadBalancerV2 } from '../shared/base-load-balancer'; @@ -233,6 +233,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic /** * Add a new listener to this load balancer */ + @MethodMetadata() public addListener(id: string, props: BaseApplicationListenerProps): ApplicationListener { const listener = new ApplicationListener(this, id, { loadBalancer: this, @@ -245,6 +246,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic /** * Add a redirection listener to this load balancer */ + @MethodMetadata() public addRedirect(props: ApplicationLoadBalancerRedirectConfig = {}): ApplicationListener { const sourcePort = props.sourcePort ?? 80; const targetPort = (props.targetPort ?? 443).toString(); @@ -266,6 +268,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * A region must be specified on the stack containing the load balancer; you cannot enable logging on * environment-agnostic stacks. See https://docs.aws.amazon.com/cdk/latest/guide/environments.html */ + @MethodMetadata() public logAccessLogs(bucket: s3.IBucket, prefix?: string) { /** * KMS key encryption is not supported on Access Log bucket for ALB, the bucket must use Amazon S3-managed keys (SSE-S3). @@ -327,6 +330,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * * @see https://docs.aws.amazon.com/cdk/latest/guide/environments.html */ + @MethodMetadata() public logConnectionLogs(bucket: s3.IBucket, prefix?: string) { /** * KMS key encryption is not supported on Connection Log bucket for ALB, the bucket must use Amazon S3-managed keys (SSE-S3). @@ -384,6 +388,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic /** * Add a security group to this load balancer */ + @MethodMetadata() public addSecurityGroup(securityGroup: ec2.ISecurityGroup) { this.connections.addSecurityGroup(securityGroup); } @@ -394,6 +399,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Average over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.custom`` instead */ + @MethodMetadata() public metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.metrics.custom(metricName, props); } @@ -405,6 +411,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.activeConnectionCount`` instead */ + @MethodMetadata() public metricActiveConnectionCount(props?: cloudwatch.MetricOptions) { return this.metrics.activeConnectionCount(props); } @@ -417,6 +424,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.clientTlsNegotiationErrorCount`` instead */ + @MethodMetadata() public metricClientTlsNegotiationErrorCount(props?: cloudwatch.MetricOptions) { return this.metrics.clientTlsNegotiationErrorCount(props); } @@ -427,6 +435,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.consumedLCUs`` instead */ + @MethodMetadata() public metricConsumedLCUs(props?: cloudwatch.MetricOptions) { return this.metrics.consumedLCUs(props); } @@ -437,6 +446,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.httpFixedResponseCount`` instead */ + @MethodMetadata() public metricHttpFixedResponseCount(props?: cloudwatch.MetricOptions) { return this.metrics.httpFixedResponseCount(props); } @@ -447,6 +457,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.httpRedirectCount`` instead */ + @MethodMetadata() public metricHttpRedirectCount(props?: cloudwatch.MetricOptions) { return this.metrics.httpRedirectCount(props); } @@ -458,6 +469,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.httpRedirectUrlLimitExceededCount`` instead */ + @MethodMetadata() public metricHttpRedirectUrlLimitExceededCount(props?: cloudwatch.MetricOptions) { return this.metrics.httpRedirectUrlLimitExceededCount(props); } @@ -470,6 +482,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.httpCodeElb`` instead */ + @MethodMetadata() public metricHttpCodeElb(code: HttpCodeElb, props?: cloudwatch.MetricOptions) { return this.metrics.httpCodeElb(code, props); } @@ -483,6 +496,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.httpCodeTarget`` instead */ + @MethodMetadata() public metricHttpCodeTarget(code: HttpCodeTarget, props?: cloudwatch.MetricOptions) { return this.metrics.httpCodeTarget(code, props); } @@ -493,6 +507,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.ipv6ProcessedBytes`` instead */ + @MethodMetadata() public metricIpv6ProcessedBytes(props?: cloudwatch.MetricOptions) { return this.metrics.ipv6ProcessedBytes(props); } @@ -503,6 +518,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.ipv6RequestCount`` instead */ + @MethodMetadata() public metricIpv6RequestCount(props?: cloudwatch.MetricOptions) { return this.metrics.ipv6RequestCount(props); } @@ -514,6 +530,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.newConnectionCount`` instead */ + @MethodMetadata() public metricNewConnectionCount(props?: cloudwatch.MetricOptions) { return this.metrics.newConnectionCount(props); } @@ -524,6 +541,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.processedBytes`` instead */ + @MethodMetadata() public metricProcessedBytes(props?: cloudwatch.MetricOptions) { return this.metrics.processedBytes(props); } @@ -535,6 +553,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.rejectedConnectionCount`` instead */ + @MethodMetadata() public metricRejectedConnectionCount(props?: cloudwatch.MetricOptions) { return this.metrics.rejectedConnectionCount(props); } @@ -547,6 +566,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.requestCount`` instead */ + @MethodMetadata() public metricRequestCount(props?: cloudwatch.MetricOptions) { return this.metrics.requestCount(props); } @@ -557,6 +577,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.ruleEvaluations`` instead */ + @MethodMetadata() public metricRuleEvaluations(props?: cloudwatch.MetricOptions) { return this.metrics.ruleEvaluations(props); } @@ -567,6 +588,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.targetConnectionErrorCount`` instead */ + @MethodMetadata() public metricTargetConnectionErrorCount(props?: cloudwatch.MetricOptions) { return this.metrics.targetConnectionErrorCount(props); } @@ -577,6 +599,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Average over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.targetResponseTime`` instead */ + @MethodMetadata() public metricTargetResponseTime(props?: cloudwatch.MetricOptions) { return this.metrics.targetResponseTime(props); } @@ -589,6 +612,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.targetTLSNegotiationErrorCount`` instead */ + @MethodMetadata() public metricTargetTLSNegotiationErrorCount(props?: cloudwatch.MetricOptions) { return this.metrics.targetTLSNegotiationErrorCount(props); } @@ -603,6 +627,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.elbAuthError`` instead */ + @MethodMetadata() public metricElbAuthError(props?: cloudwatch.MetricOptions) { return this.metrics.elbAuthError(props); } @@ -615,6 +640,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Sum over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.elbAuthFailure`` instead */ + @MethodMetadata() public metricElbAuthFailure(props?: cloudwatch.MetricOptions) { return this.metrics.elbAuthFailure(props); } @@ -627,6 +653,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @default Average over 5 minutes * @deprecated Use ``ApplicationLoadBalancer.metrics.elbAuthLatency`` instead */ + @MethodMetadata() public metricElbAuthLatency(props?: cloudwatch.MetricOptions) { return this.metrics.elbAuthLatency(props); } @@ -641,6 +668,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic * @deprecated Use ``ApplicationLoadBalancer.metrics.elbAuthSuccess`` instead * */ + @MethodMetadata() public metricElbAuthSuccess(props?: cloudwatch.MetricOptions) { return this.metrics.elbAuthSuccess(props); } @@ -1201,6 +1229,7 @@ class ImportedApplicationLoadBalancer extends Resource implements IApplicationLo this.metrics = new ApplicationLoadBalancerMetrics(this, parseLoadBalancerFullName(props.loadBalancerArn)); } + @MethodMetadata() public addListener(id: string, props: BaseApplicationListenerProps): ApplicationListener { return new ApplicationListener(this, id, { loadBalancer: this, @@ -1265,6 +1294,7 @@ class LookedUpApplicationLoadBalancer extends Resource implements IApplicationLo this.metrics = new ApplicationLoadBalancerMetrics(this, parseLoadBalancerFullName(this.loadBalancerArn)); } + @MethodMetadata() public addListener(id: string, props: BaseApplicationListenerProps): ApplicationListener { return new ApplicationListener(this, id, { ...props, diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-listener.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-listener.ts index 4cb6d7aca1e32..9cf00dc8f04af 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-listener.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-listener.ts @@ -6,7 +6,7 @@ import { INetworkLoadBalancerTarget, INetworkTargetGroup, NetworkTargetGroup } f import * as cxschema from '../../../cloud-assembly-schema'; import { Duration, Resource, Lazy, Token } from '../../../core'; import { ValidationError } from '../../../core/lib/errors'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { BaseListener, BaseListenerLookupOptions, IListener } from '../shared/base-listener'; import { HealthCheck } from '../shared/base-target-group'; import { AlpnPolicy, Protocol, SslPolicy } from '../shared/enums'; @@ -253,6 +253,7 @@ export class NetworkListener extends BaseListener implements INetworkListener { * resources since cloudformation requires the certificates array on the * listener resource to have a length of 1. */ + @MethodMetadata() public addCertificates(id: string, certificates: IListenerCertificate[]): void { const additionalCerts = [...certificates]; if (this.certificateArns.length === 0 && additionalCerts.length > 0) { @@ -275,6 +276,7 @@ export class NetworkListener extends BaseListener implements INetworkListener { * All target groups will be load balanced to with equal weight and without * stickiness. For a more complex configuration than that, use `addAction()`. */ + @MethodMetadata() public addTargetGroups(_id: string, ...targetGroups: INetworkTargetGroup[]): void { this.setDefaultAction(NetworkListenerAction.forward(targetGroups)); } @@ -286,6 +288,7 @@ export class NetworkListener extends BaseListener implements INetworkListener { * including weighted forwarding. See the `NetworkListenerAction` class for * all options. */ + @MethodMetadata() public addAction(_id: string, props: AddNetworkActionProps): void { this.setDefaultAction(props.action); } @@ -304,6 +307,7 @@ export class NetworkListener extends BaseListener implements INetworkListener { * * @returns The newly created target group */ + @MethodMetadata() public addTargets(id: string, props: AddNetworkTargetsProps): NetworkTargetGroup { if (!this.loadBalancer.vpc) { // eslint-disable-next-line max-len diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-load-balancer.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-load-balancer.ts index 02def079ebaf7..48a380ff6db5a 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-load-balancer.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-load-balancer.ts @@ -5,7 +5,7 @@ import * as ec2 from '../../../aws-ec2'; import * as cxschema from '../../../cloud-assembly-schema'; import { Lazy, Resource } from '../../../core'; import { ValidationError } from '../../../core/lib/errors'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import * as cxapi from '../../../cx-api'; import { NetworkELBMetrics } from '../elasticloadbalancingv2-canned-metrics.generated'; import { BaseLoadBalancer, BaseLoadBalancerLookupOptions, BaseLoadBalancerProps, ILoadBalancerV2 } from '../shared/base-load-balancer'; @@ -303,6 +303,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * * @returns The newly created listener */ + @MethodMetadata() public addListener(id: string, props: BaseNetworkListenerProps): NetworkListener { // UDP listener with dual stack NLB requires prefix IPv6 source NAT to be enabled if ( @@ -321,6 +322,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa /** * Add a security group to this load balancer */ + @MethodMetadata() public addSecurityGroup(securityGroup: ec2.ISecurityGroup) { this.connections.addSecurityGroup(securityGroup); } @@ -331,6 +333,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * @default Average over 5 minutes * @deprecated Use ``NetworkLoadBalancer.metrics.custom`` instead */ + @MethodMetadata() public metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return new cloudwatch.Metric({ namespace: 'AWS/NetworkELB', @@ -350,6 +353,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * @default Average over 5 minutes * @deprecated Use ``NetworkLoadBalancer.metrics.activeFlowCount`` instead */ + @MethodMetadata() public metricActiveFlowCount(props?: cloudwatch.MetricOptions) { return this.metrics.activeFlowCount(props); } @@ -360,6 +364,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * @default Sum over 5 minutes * @deprecated Use ``NetworkLoadBalancer.metrics.activeFlowCount`` instead */ + @MethodMetadata() public metricConsumedLCUs(props?: cloudwatch.MetricOptions) { return this.metrics.consumedLCUs(props); } @@ -370,6 +375,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * @default Average over 5 minutes * @deprecated use ``NetworkTargetGroup.metricHealthyHostCount`` instead */ + @MethodMetadata() public metricHealthyHostCount(props?: cloudwatch.MetricOptions) { return this.metric('HealthyHostCount', { statistic: 'Average', @@ -383,6 +389,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * @default Average over 5 minutes * @deprecated use ``NetworkTargetGroup.metricUnHealthyHostCount`` instead */ + @MethodMetadata() public metricUnHealthyHostCount(props?: cloudwatch.MetricOptions) { return this.metric('UnHealthyHostCount', { statistic: 'Average', @@ -396,6 +403,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * @default Sum over 5 minutes * @deprecated Use ``NetworkLoadBalancer.metrics.newFlowCount`` instead */ + @MethodMetadata() public metricNewFlowCount(props?: cloudwatch.MetricOptions) { return this.metrics.newFlowCount(props); } @@ -406,6 +414,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * @default Sum over 5 minutes * @deprecated Use ``NetworkLoadBalancer.metrics.processedBytes`` instead */ + @MethodMetadata() public metricProcessedBytes(props?: cloudwatch.MetricOptions) { return this.metrics.processedBytes(props); } @@ -418,6 +427,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * @default Sum over 5 minutes * @deprecated Use ``NetworkLoadBalancer.metrics.tcpClientResetCount`` instead */ + @MethodMetadata() public metricTcpClientResetCount(props?: cloudwatch.MetricOptions) { return this.metrics.tcpClientResetCount(props); } @@ -428,6 +438,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * @default Sum over 5 minutes * @deprecated Use ``NetworkLoadBalancer.metrics.tcpElbResetCount`` instead */ + @MethodMetadata() public metricTcpElbResetCount(props?: cloudwatch.MetricOptions) { return this.metrics.tcpElbResetCount(props); } @@ -440,6 +451,7 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa * @default Sum over 5 minutes * @deprecated Use ``NetworkLoadBalancer.metrics.tcpTargetResetCount`` instead */ + @MethodMetadata() public metricTcpTargetResetCount(props?: cloudwatch.MetricOptions) { return this.metrics.tcpTargetResetCount(props); } @@ -594,6 +606,7 @@ class LookedUpNetworkLoadBalancer extends Resource implements INetworkLoadBalanc }); } + @MethodMetadata() public addListener(lid: string, props: BaseNetworkListenerProps): NetworkListener { return new NetworkListener(this, lid, { loadBalancer: this, diff --git a/packages/aws-cdk-lib/aws-elasticsearch/lib/domain.ts b/packages/aws-cdk-lib/aws-elasticsearch/lib/domain.ts index 491bca9de5e8a..80dac1ecb6672 100644 --- a/packages/aws-cdk-lib/aws-elasticsearch/lib/domain.ts +++ b/packages/aws-cdk-lib/aws-elasticsearch/lib/domain.ts @@ -14,7 +14,7 @@ import * as logs from '../../aws-logs'; import * as route53 from '../../aws-route53'; import * as secretsmanager from '../../aws-secretsmanager'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Elasticsearch version @@ -1944,6 +1944,7 @@ export class Domain extends DomainBase implements IDomain, ec2.IConnectable { * * @deprecated use opensearchservice module instead */ + @MethodMetadata() public addAccessPolicies(...accessPolicyStatements: iam.PolicyStatement[]) { if (accessPolicyStatements.length > 0) { if (!this.accessPolicy) { diff --git a/packages/aws-cdk-lib/aws-events/lib/event-bus.ts b/packages/aws-cdk-lib/aws-events/lib/event-bus.ts index 38fdc16528042..05ba131708d8b 100644 --- a/packages/aws-cdk-lib/aws-events/lib/event-bus.ts +++ b/packages/aws-cdk-lib/aws-events/lib/event-bus.ts @@ -5,7 +5,7 @@ import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import * as sqs from '../../aws-sqs'; import { ArnFormat, IResource, Lazy, Names, Resource, Stack, Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Interface which all EventBus based classes MUST implement @@ -404,6 +404,7 @@ export class EventBus extends EventBusBase { /** * Adds a statement to the IAM resource policy associated with this event bus. */ + @MethodMetadata() public addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult { if (statement.sid == null) { throw new Error('Event Bus policy statements must have a sid'); diff --git a/packages/aws-cdk-lib/aws-events/lib/rule.ts b/packages/aws-cdk-lib/aws-events/lib/rule.ts index 6d3d1e6a5fcda..33e314ffdad39 100644 --- a/packages/aws-cdk-lib/aws-events/lib/rule.ts +++ b/packages/aws-cdk-lib/aws-events/lib/rule.ts @@ -9,7 +9,7 @@ import { IRuleTarget } from './target'; import { mergeEventPattern, renderEventPattern } from './util'; import { IRole, PolicyStatement, Role, ServicePrincipal } from '../../aws-iam'; import { App, IResource, Lazy, Names, Resource, Stack, Token, TokenComparison, PhysicalName, ArnFormat, Annotations } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Properties for defining an EventBridge Rule @@ -140,6 +140,7 @@ export class Rule extends Resource implements IRule { * * No-op if target is undefined. */ + @MethodMetadata() public addTarget(target?: IRuleTarget): void { if (!target) { return; } @@ -284,6 +285,7 @@ export class Rule extends Resource implements IRule { * } * */ + @MethodMetadata() public addEventPattern(eventPattern?: EventPattern) { if (!eventPattern) { return; diff --git a/packages/aws-cdk-lib/aws-globalaccelerator/lib/accelerator.ts b/packages/aws-cdk-lib/aws-globalaccelerator/lib/accelerator.ts index c8864b393623a..74d36cb18842d 100644 --- a/packages/aws-cdk-lib/aws-globalaccelerator/lib/accelerator.ts +++ b/packages/aws-cdk-lib/aws-globalaccelerator/lib/accelerator.ts @@ -2,7 +2,7 @@ import { Construct } from 'constructs'; import * as ga from './globalaccelerator.generated'; import { Listener, ListenerOptions } from './listener'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * The interface of the Accelerator @@ -215,6 +215,7 @@ export class Accelerator extends cdk.Resource implements IAccelerator { /** * Add a listener to the accelerator */ + @MethodMetadata() public addListener(id: string, options: ListenerOptions) { return new Listener(this, id, { accelerator: this, diff --git a/packages/aws-cdk-lib/aws-globalaccelerator/lib/endpoint-group.ts b/packages/aws-cdk-lib/aws-globalaccelerator/lib/endpoint-group.ts index b47f95c4d74f8..016a38db4c4e6 100644 --- a/packages/aws-cdk-lib/aws-globalaccelerator/lib/endpoint-group.ts +++ b/packages/aws-cdk-lib/aws-globalaccelerator/lib/endpoint-group.ts @@ -5,7 +5,7 @@ import * as ga from './globalaccelerator.generated'; import { IListener } from './listener'; import * as ec2 from '../../aws-ec2'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * The interface of the EndpointGroup @@ -209,6 +209,7 @@ export class EndpointGroup extends cdk.Resource implements IEndpointGroup { /** * Add an endpoint */ + @MethodMetadata() public addEndpoint(endpoint: IEndpoint) { this.endpoints.push(endpoint); } @@ -226,6 +227,7 @@ export class EndpointGroup extends cdk.Resource implements IEndpointGroup { * use this security group as a Peer in Connections rules on other * constructs. */ + @MethodMetadata() public connectionsPeer(id: string, vpc: ec2.IVpc): ec2.IPeer { return AcceleratorSecurityGroupPeer.fromVpc(this, id, vpc, this); } diff --git a/packages/aws-cdk-lib/aws-globalaccelerator/lib/listener.ts b/packages/aws-cdk-lib/aws-globalaccelerator/lib/listener.ts index 9b98e5a351ae5..90c16bfdae6a3 100644 --- a/packages/aws-cdk-lib/aws-globalaccelerator/lib/listener.ts +++ b/packages/aws-cdk-lib/aws-globalaccelerator/lib/listener.ts @@ -3,7 +3,7 @@ import { IAccelerator } from './accelerator'; import { EndpointGroup, EndpointGroupOptions } from './endpoint-group'; import * as ga from './globalaccelerator.generated'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Interface of the Listener @@ -159,6 +159,7 @@ export class Listener extends cdk.Resource implements IListener { /** * Add a new endpoint group to this listener */ + @MethodMetadata() public addEndpointGroup(id: string, options: EndpointGroupOptions = {}) { return new EndpointGroup(this, id, { listener: this, diff --git a/packages/aws-cdk-lib/aws-iam/lib/group.ts b/packages/aws-cdk-lib/aws-iam/lib/group.ts index 4d61aba8f8483..647c7c28c34f8 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/group.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/group.ts @@ -8,7 +8,7 @@ import { AddToPrincipalPolicyResult, ArnPrincipal, IPrincipal, PrincipalPolicyFr import { AttachedPolicies } from './private/util'; import { IUser } from './user'; import { Annotations, ArnFormat, Lazy, Resource, Stack } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Represents an IAM Group. @@ -213,6 +213,7 @@ export class Group extends GroupBase { * for quota of managed policies attached to an IAM group. * @param policy The managed policy to attach. */ + @MethodMetadata() public addManagedPolicy(policy: IManagedPolicy) { if (this.managedPolicies.find(mp => mp === policy)) { return; } this.managedPolicies.push(policy); diff --git a/packages/aws-cdk-lib/aws-iam/lib/lazy-role.ts b/packages/aws-cdk-lib/aws-iam/lib/lazy-role.ts index 4ddedf184b687..18faeeeeb03e1 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/lazy-role.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/lazy-role.ts @@ -6,7 +6,7 @@ import { PolicyStatement } from './policy-statement'; import { AddToPrincipalPolicyResult, IPrincipal, PrincipalPolicyFragment } from './principals'; import { IRole, Role, RoleProps } from './role'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Properties for defining a LazyRole @@ -47,6 +47,7 @@ export class LazyRole extends cdk.Resource implements IRole { * If there is no default policy attached to this role, it will be created. * @param statement The permission statement to add to the policy document */ + @MethodMetadata() public addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult { if (this.role) { return this.role.addToPrincipalPolicy(statement); @@ -56,6 +57,7 @@ export class LazyRole extends cdk.Resource implements IRole { } } + @MethodMetadata() public addToPolicy(statement: PolicyStatement): boolean { return this.addToPrincipalPolicy(statement).statementAdded; } @@ -64,6 +66,7 @@ export class LazyRole extends cdk.Resource implements IRole { * Attaches a policy to this role. * @param policy The policy to attach */ + @MethodMetadata() public attachInlinePolicy(policy: Policy): void { if (this.role) { this.role.attachInlinePolicy(policy); @@ -76,6 +79,7 @@ export class LazyRole extends cdk.Resource implements IRole { * Attaches a managed policy to this role. * @param policy The managed policy to attach. */ + @MethodMetadata() public addManagedPolicy(policy: IManagedPolicy): void { if (this.role) { this.role.addManagedPolicy(policy); @@ -111,6 +115,7 @@ export class LazyRole extends cdk.Resource implements IRole { /** * Grant the actions defined in actions to the identity Principal on this resource. */ + @MethodMetadata() public grant(identity: IPrincipal, ...actions: string[]): Grant { return this.instantiate().grant(identity, ...actions); } @@ -118,6 +123,7 @@ export class LazyRole extends cdk.Resource implements IRole { /** * Grant permissions to the given principal to pass this role. */ + @MethodMetadata() public grantPassRole(identity: IPrincipal): Grant { return this.instantiate().grantPassRole(identity); } @@ -125,6 +131,7 @@ export class LazyRole extends cdk.Resource implements IRole { /** * Grant permissions to the given principal to assume this role. */ + @MethodMetadata() public grantAssumeRole(identity: IPrincipal): Grant { return this.instantiate().grantAssumeRole(identity); } diff --git a/packages/aws-cdk-lib/aws-iam/lib/managed-policy.ts b/packages/aws-cdk-lib/aws-iam/lib/managed-policy.ts index ac7b2be848382..ed6dfc9a62894 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/managed-policy.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/managed-policy.ts @@ -9,7 +9,7 @@ import { IRole } from './role'; import { IUser } from './user'; import { ArnFormat, Resource, Stack, Arn, Aws } from '../../core'; import { getCustomizeRolesConfig, PolicySynthesizer } from '../../core/lib/helpers-internal'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * A managed policy @@ -277,6 +277,7 @@ export class ManagedPolicy extends Resource implements IManagedPolicy, IGrantabl /** * Adds a statement to the policy document. */ + @MethodMetadata() public addStatements(...statement: PolicyStatement[]) { this.document.addStatements(...statement); } @@ -284,6 +285,7 @@ export class ManagedPolicy extends Resource implements IManagedPolicy, IGrantabl /** * Attaches this policy to a user. */ + @MethodMetadata() public attachToUser(user: IUser) { if (this.users.find(u => u.userArn === user.userArn)) { return; } this.users.push(user); @@ -292,6 +294,7 @@ export class ManagedPolicy extends Resource implements IManagedPolicy, IGrantabl /** * Attaches this policy to a role. */ + @MethodMetadata() public attachToRole(role: IRole) { if (this.roles.find(r => r.roleArn === role.roleArn)) { return; } this.roles.push(role); @@ -300,6 +303,7 @@ export class ManagedPolicy extends Resource implements IManagedPolicy, IGrantabl /** * Attaches this policy to a group. */ + @MethodMetadata() public attachToGroup(group: IGroup) { if (this.groups.find(g => g.groupArn === group.groupArn)) { return; } this.groups.push(group); diff --git a/packages/aws-cdk-lib/aws-iam/lib/policy.ts b/packages/aws-cdk-lib/aws-iam/lib/policy.ts index c8ae5dd82f28a..416270098fc37 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/policy.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/policy.ts @@ -8,7 +8,7 @@ import { generatePolicyName, undefinedIfEmpty } from './private/util'; import { IRole } from './role'; import { IUser } from './user'; import { IResource, Lazy, Resource } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Represents an IAM Policy @@ -192,6 +192,7 @@ export class Policy extends Resource implements IPolicy, IGrantable { /** * Adds a statement to the policy document. */ + @MethodMetadata() public addStatements(...statement: PolicyStatement[]) { this.document.addStatements(...statement); } @@ -199,6 +200,7 @@ export class Policy extends Resource implements IPolicy, IGrantable { /** * Attaches this policy to a user. */ + @MethodMetadata() public attachToUser(user: IUser) { if (this.users.find(u => u.userArn === user.userArn)) { return; } this.users.push(user); @@ -208,6 +210,7 @@ export class Policy extends Resource implements IPolicy, IGrantable { /** * Attaches this policy to a role. */ + @MethodMetadata() public attachToRole(role: IRole) { if (this.roles.find(r => r.roleArn === role.roleArn)) { return; } this.roles.push(role); @@ -217,6 +220,7 @@ export class Policy extends Resource implements IPolicy, IGrantable { /** * Attaches this policy to a group. */ + @MethodMetadata() public attachToGroup(group: IGroup) { if (this.groups.find(g => g.groupArn === group.groupArn)) { return; } this.groups.push(group); diff --git a/packages/aws-cdk-lib/aws-iam/lib/private/immutable-role.ts b/packages/aws-cdk-lib/aws-iam/lib/private/immutable-role.ts index fe03bffb60577..1c13e02f68534 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/private/immutable-role.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/private/immutable-role.ts @@ -1,6 +1,6 @@ import { Construct, Dependable, DependencyGroup } from 'constructs'; import { Resource } from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { Grant } from '../grant'; import { IManagedPolicy } from '../managed-policy'; import { Policy } from '../policy'; @@ -45,18 +45,22 @@ export class ImmutableRole extends Resource implements IRole { this.node.defaultChild = role.node.defaultChild; } + @MethodMetadata() public attachInlinePolicy(_policy: Policy): void { // do nothing } + @MethodMetadata() public addManagedPolicy(_policy: IManagedPolicy): void { // do nothing } + @MethodMetadata() public addToPolicy(statement: PolicyStatement): boolean { return this.addToPrincipalPolicy(statement).statementAdded; } + @MethodMetadata() public addToPrincipalPolicy(_statement: PolicyStatement): AddToPrincipalPolicyResult { // If we return `false`, the grants will try to add the statement to the resource // (if possible). @@ -64,14 +68,17 @@ export class ImmutableRole extends Resource implements IRole { return { statementAdded: pretendSuccess, policyDependable: new DependencyGroup() }; } + @MethodMetadata() public grant(grantee: IPrincipal, ...actions: string[]): Grant { return this.role.grant(grantee, ...actions); } + @MethodMetadata() public grantPassRole(grantee: IPrincipal): Grant { return this.role.grantPassRole(grantee); } + @MethodMetadata() public grantAssumeRole(identity: IPrincipal): Grant { return this.role.grantAssumeRole(identity); } diff --git a/packages/aws-cdk-lib/aws-iam/lib/private/imported-role.ts b/packages/aws-cdk-lib/aws-iam/lib/private/imported-role.ts index b3f26f068d2e1..7445a2ac34352 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/private/imported-role.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/private/imported-role.ts @@ -1,7 +1,7 @@ import { Construct } from 'constructs'; import { MAX_POLICY_NAME_LEN } from './util'; import { FeatureFlags, Names, Resource, Token, TokenComparison, Annotations } from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { IAM_IMPORTED_ROLE_STACK_SAFE_DEFAULT_POLICY_NAME } from '../../../cx-api'; import { Grant } from '../grant'; import { IManagedPolicy, ManagedPolicy } from '../managed-policy'; @@ -42,10 +42,12 @@ export class ImportedRole extends Resource implements IRole, IComparablePrincipa this.principalAccount = props.account; } + @MethodMetadata() public addToPolicy(statement: PolicyStatement): boolean { return this.addToPrincipalPolicy(statement).statementAdded; } + @MethodMetadata() public addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult { if (!this.defaultPolicy) { const useUniqueName = FeatureFlags.of(this).isEnabled(IAM_IMPORTED_ROLE_STACK_SAFE_DEFAULT_POLICY_NAME); @@ -66,6 +68,7 @@ export class ImportedRole extends Resource implements IRole, IComparablePrincipa return { statementAdded: true, policyDependable: this.defaultPolicy }; } + @MethodMetadata() public attachInlinePolicy(policy: Policy): void { const thisAndPolicyAccountComparison = Token.compareStrings(this.env.account, policy.env.account); const equalOrAnyUnresolved = thisAndPolicyAccountComparison === TokenComparison.SAME || @@ -77,6 +80,7 @@ export class ImportedRole extends Resource implements IRole, IComparablePrincipa } } + @MethodMetadata() public addManagedPolicy(policy: IManagedPolicy): void { // Using "Type Predicate" to confirm x is ManagedPolicy, which allows to avoid // using try ... catch and throw error. @@ -94,14 +98,17 @@ export class ImportedRole extends Resource implements IRole, IComparablePrincipa } } + @MethodMetadata() public grantPassRole(identity: IPrincipal): Grant { return this.grant(identity, 'iam:PassRole'); } + @MethodMetadata() public grantAssumeRole(identity: IPrincipal): Grant { return this.grant(identity, 'sts:AssumeRole'); } + @MethodMetadata() public grant(grantee: IPrincipal, ...actions: string[]): Grant { return Grant.addToPrincipal({ grantee, @@ -111,6 +118,7 @@ export class ImportedRole extends Resource implements IRole, IComparablePrincipa }); } + @MethodMetadata() public dedupeString(): string | undefined { return `ImportedRole:${this.roleArn}`; } diff --git a/packages/aws-cdk-lib/aws-iam/lib/private/precreated-role.ts b/packages/aws-cdk-lib/aws-iam/lib/private/precreated-role.ts index 18bfbd7cd78cb..9423943045d98 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/private/precreated-role.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/private/precreated-role.ts @@ -1,7 +1,7 @@ import { Construct, Dependable, DependencyGroup } from 'constructs'; import { Resource, Stack } from '../../../core'; import { PolicySynthesizer } from '../../../core/lib/helpers-internal'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; import { Grant } from '../grant'; import { IManagedPolicy } from '../managed-policy'; import { Policy } from '../policy'; @@ -101,6 +101,7 @@ export class PrecreatedRole extends Resource implements IRole { }); } + @MethodMetadata() public attachInlinePolicy(policy: Policy): void { const statements = policy.document.toJSON()?.Statement; if (statements && Array.isArray(statements)) { @@ -110,15 +111,18 @@ export class PrecreatedRole extends Resource implements IRole { } } + @MethodMetadata() public addManagedPolicy(policy: IManagedPolicy): void { this.managedPolicies.push(policy); } + @MethodMetadata() public addToPolicy(statement: PolicyStatement): boolean { this.policyStatements.push(statement.toStatementJson()); return false; } + @MethodMetadata() public addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult { this.addToPolicy(statement); // If we return `false`, the grants will try to add the statement to the resource @@ -126,14 +130,17 @@ export class PrecreatedRole extends Resource implements IRole { return { statementAdded: true, policyDependable: new DependencyGroup() }; } + @MethodMetadata() public grant(grantee: IPrincipal, ...actions: string[]): Grant { return this.role.grant(grantee, ...actions); } + @MethodMetadata() public grantPassRole(grantee: IPrincipal): Grant { return this.role.grantPassRole(grantee); } + @MethodMetadata() public grantAssumeRole(identity: IPrincipal): Grant { return this.role.grantAssumeRole(identity); } diff --git a/packages/aws-cdk-lib/aws-iam/lib/role.ts b/packages/aws-cdk-lib/aws-iam/lib/role.ts index 9489201096e9c..e625145279436 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/role.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/role.ts @@ -15,7 +15,7 @@ import { PrecreatedRole } from './private/precreated-role'; import { AttachedPolicies, UniqueStringSet } from './private/util'; import { ArnFormat, Duration, Resource, Stack, Token, TokenComparison, Aspects, Annotations, RemovalPolicy, AspectPriority } from '../../core'; import { getCustomizeRolesConfig, getPrecreatedRoleConfig, CUSTOMIZE_ROLES_CONTEXT_KEY, CustomizeRoleConfig } from '../../core/lib/helpers-internal'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; const MAX_INLINE_SIZE = 10000; const MAX_MANAGEDPOL_SIZE = 6000; @@ -521,6 +521,7 @@ export class Role extends Resource implements IRole { * If there is no default policy attached to this role, it will be created. * @param statement The permission statement to add to the policy document */ + @MethodMetadata() public addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult { if (this._precreatedRole) { return this._precreatedRole.addToPrincipalPolicy(statement); @@ -540,6 +541,7 @@ export class Role extends Resource implements IRole { } } + @MethodMetadata() public addToPolicy(statement: PolicyStatement): boolean { if (this._precreatedRole) { return this._precreatedRole.addToPolicy(statement); @@ -552,6 +554,7 @@ export class Role extends Resource implements IRole { * Attaches a managed policy to this role. * @param policy The the managed policy to attach. */ + @MethodMetadata() public addManagedPolicy(policy: IManagedPolicy) { if (this._precreatedRole) { return this._precreatedRole.addManagedPolicy(policy); @@ -565,6 +568,7 @@ export class Role extends Resource implements IRole { * Attaches a policy to this role. * @param policy The policy to attach */ + @MethodMetadata() public attachInlinePolicy(policy: Policy) { if (this._precreatedRole) { this._precreatedRole.attachInlinePolicy(policy); @@ -577,6 +581,7 @@ export class Role extends Resource implements IRole { /** * Grant the actions defined in actions to the identity Principal on this resource. */ + @MethodMetadata() public grant(grantee: IPrincipal, ...actions: string[]) { return Grant.addToPrincipal({ grantee, @@ -589,6 +594,7 @@ export class Role extends Resource implements IRole { /** * Grant permissions to the given principal to pass this role. */ + @MethodMetadata() public grantPassRole(identity: IPrincipal) { return this.grant(identity, 'iam:PassRole'); } @@ -596,6 +602,7 @@ export class Role extends Resource implements IRole { /** * Grant permissions to the given principal to assume this role. */ + @MethodMetadata() public grantAssumeRole(identity: IPrincipal) { // Service and account principals must use assumeRolePolicy if (identity instanceof ServicePrincipal || identity instanceof AccountPrincipal) { @@ -626,6 +633,7 @@ export class Role extends Resource implements IRole { * If you do, you are responsible for adding the correct statements to the * Role's policies yourself. */ + @MethodMetadata() public withoutPolicyUpdates(options: WithoutPolicyUpdatesOptions = {}): IRole { if (!this.immutableRole) { this.immutableRole = new ImmutableRole(Node.of(this).scope as Construct, `ImmutableRole${this.node.id}`, this, options.addGrantsToResources ?? false); @@ -640,6 +648,7 @@ export class Role extends Resource implements IRole { * @override * @param policy RemovalPolicy */ + @MethodMetadata() public applyRemovalPolicy(policy: RemovalPolicy): void { const config = this.getPrecreatedRoleConfig(); if (!config.preventSynthesis) { diff --git a/packages/aws-cdk-lib/aws-iam/lib/user.ts b/packages/aws-cdk-lib/aws-iam/lib/user.ts index c0a8ad4ea5b23..3130fd5dc17ca 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/user.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/user.ts @@ -8,7 +8,7 @@ import { PolicyStatement } from './policy-statement'; import { AddToPrincipalPolicyResult, ArnPrincipal, IPrincipal, PrincipalPolicyFragment } from './principals'; import { AttachedPolicies, undefinedIfEmpty } from './private/util'; import { Arn, ArnFormat, Lazy, Resource, SecretValue, Stack } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Represents an IAM user @@ -293,6 +293,7 @@ export class User extends Resource implements IIdentity, IUser { /** * Adds this user to a group. */ + @MethodMetadata() public addToGroup(group: IGroup) { this.groups.push(group.groupName); } @@ -301,6 +302,7 @@ export class User extends Resource implements IIdentity, IUser { * Attaches a managed policy to the user. * @param policy The managed policy to attach. */ + @MethodMetadata() public addManagedPolicy(policy: IManagedPolicy) { if (this.managedPolicies.find(mp => mp === policy)) { return; } this.managedPolicies.push(policy); @@ -309,6 +311,7 @@ export class User extends Resource implements IIdentity, IUser { /** * Attaches a policy to this user. */ + @MethodMetadata() public attachInlinePolicy(policy: Policy) { this.attachedPolicies.attach(policy); policy.attachToUser(this); @@ -319,6 +322,7 @@ export class User extends Resource implements IIdentity, IUser { * * @returns true */ + @MethodMetadata() public addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult { if (!this.defaultPolicy) { this.defaultPolicy = new Policy(this, 'DefaultPolicy'); @@ -329,6 +333,7 @@ export class User extends Resource implements IIdentity, IUser { return { statementAdded: true, policyDependable: this.defaultPolicy }; } + @MethodMetadata() public addToPolicy(statement: PolicyStatement): boolean { return this.addToPrincipalPolicy(statement).statementAdded; } diff --git a/packages/aws-cdk-lib/aws-kms/lib/key.ts b/packages/aws-cdk-lib/aws-kms/lib/key.ts index 91821b6a48451..f8c9b59961ad0 100644 --- a/packages/aws-cdk-lib/aws-kms/lib/key.ts +++ b/packages/aws-cdk-lib/aws-kms/lib/key.ts @@ -19,7 +19,7 @@ import { Stack, Token, } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -899,6 +899,7 @@ export class Key extends KeyBase { * Key administrators have permissions to manage the key (e.g., change permissions, revoke), but do not have permissions * to use the key in cryptographic operations (e.g., encrypt, decrypt). */ + @MethodMetadata() public grantAdmin(grantee: iam.IGrantable): iam.Grant { return this.grant(grantee, ...perms.ADMIN_ACTIONS); } diff --git a/packages/aws-cdk-lib/aws-lambda/lib/alias.ts b/packages/aws-cdk-lib/aws-lambda/lib/alias.ts index ffc85660abbb5..b54f5704aa20c 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/alias.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/alias.ts @@ -11,7 +11,7 @@ import * as cloudwatch from '../../aws-cloudwatch'; import * as iam from '../../aws-iam'; import { ArnFormat } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; export interface IAlias extends IFunction { /** @@ -205,6 +205,7 @@ export class Alias extends QualifiedFunctionBase implements IAlias { return this.version.role; } + @MethodMetadata() public metric(metricName: string, props: cloudwatch.MetricOptions = {}): cloudwatch.Metric { // Metrics on Aliases need the "bare" function name, and the alias' ARN, this differs from the base behavior. return super.metric(metricName, { @@ -225,6 +226,7 @@ export class Alias extends QualifiedFunctionBase implements IAlias { * * @param options Autoscaling options */ + @MethodMetadata() public addAutoScaling(options: AutoScalingOptions): IScalableFunctionAttribute { if (this.scalableAlias) { throw new ValidationError('AutoScaling already enabled for this alias', this); diff --git a/packages/aws-cdk-lib/aws-lambda/lib/function-base.ts b/packages/aws-cdk-lib/aws-lambda/lib/function-base.ts index 8b15dcac97e31..9fedb747a6fb5 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/function-base.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/function-base.ts @@ -15,6 +15,7 @@ import * as ec2 from '../../aws-ec2'; import * as iam from '../../aws-iam'; import { Annotations, ArnFormat, IResource, Resource, Token, Stack } from '../../core'; import { ValidationError } from '../../core/lib/errors'; +import { MethodMetadata } from '../../core/lib/metadata-resource'; export interface IFunction extends IResource, ec2.IConnectable, iam.IGrantable { @@ -824,6 +825,7 @@ class LatestVersion extends FunctionBase implements IVersion { return [this.functionArn]; } + @MethodMetadata() public addAlias(aliasName: string, options: AliasOptions = {}) { return addAlias(this, this, aliasName, options); } diff --git a/packages/aws-cdk-lib/aws-lambda/lib/function-url.ts b/packages/aws-cdk-lib/aws-lambda/lib/function-url.ts index 603517a92463c..782fd1a87d4ce 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/function-url.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/function-url.ts @@ -6,7 +6,7 @@ import { CfnUrl } from './lambda.generated'; import * as iam from '../../aws-iam'; import { Duration, IResource, Resource } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * The auth types for a function url @@ -261,6 +261,7 @@ export class FunctionUrl extends Resource implements IFunctionUrl { } } + @MethodMetadata() public grantInvokeUrl(grantee: iam.IGrantable): iam.Grant { return this.function.grantInvokeUrl(grantee); } diff --git a/packages/aws-cdk-lib/aws-lambda/lib/function.ts b/packages/aws-cdk-lib/aws-lambda/lib/function.ts index 3d5266698811f..50c50e90e9481 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/function.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/function.ts @@ -31,7 +31,7 @@ import * as sns from '../../aws-sns'; import * as sqs from '../../aws-sqs'; import { Annotations, ArnFormat, CfnResource, Duration, FeatureFlags, Fn, IAspect, Lazy, Names, Size, Stack, Token } from '../../core'; import { UnscopedValidationError, ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { LAMBDA_RECOGNIZE_LAYER_VERSION } from '../../cx-api'; /** @@ -1180,6 +1180,7 @@ export class Function extends FunctionBase { * @param value The environment variable's value. * @param options Environment variable options. */ + @MethodMetadata() public addEnvironment(key: string, value: string, options?: EnvironmentOptions): this { // Reserved environment variables will fail during cloudformation deploy if they're set. // This check is just to allow CDK to fail faster when these are specified. @@ -1269,6 +1270,7 @@ export class Function extends FunctionBase { * * This method may be called more than once. */ + @MethodMetadata() public invalidateVersionBasedOn(x: string) { if (Token.isUnresolved(x)) { throw new ValidationError('invalidateVersionOn: input may not contain unresolved tokens', this); @@ -1283,6 +1285,7 @@ export class Function extends FunctionBase { * * @throws if there are already 5 layers on this function, or the layer is incompatible with this function's runtime. */ + @MethodMetadata() public addLayers(...layers: ILayerVersion[]): void { for (const layer of layers) { if (this._layers.length === 5) { @@ -1326,6 +1329,7 @@ export class Function extends FunctionBase { * `this.currentVersion` to obtain a reference to a version resource that gets * automatically recreated when the function configuration (or code) changes. */ + @MethodMetadata() public addVersion( name: string, codeSha256?: string, @@ -1363,6 +1367,7 @@ export class Function extends FunctionBase { * @param aliasName The name of the alias * @param options Alias options */ + @MethodMetadata() public addAlias(aliasName: string, options?: AliasOptions): Alias { return addAlias(this, this.currentVersion, aliasName, options); } diff --git a/packages/aws-cdk-lib/aws-lambda/lib/lambda-version.ts b/packages/aws-cdk-lib/aws-lambda/lib/lambda-version.ts index 4865aad781262..a9d4e73af6286 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/lambda-version.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/lambda-version.ts @@ -9,7 +9,7 @@ import { addAlias } from './util'; import * as cloudwatch from '../../aws-cloudwatch'; import { Fn, Lazy, RemovalPolicy, Token } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; export interface IVersion extends IFunction { /** @@ -232,6 +232,7 @@ export class Version extends QualifiedFunctionBase implements IVersion { return this.lambda.role; } + @MethodMetadata() public metric(metricName: string, props: cloudwatch.MetricOptions = {}): cloudwatch.Metric { // Metrics on Aliases need the "bare" function name, and the alias' ARN, this differs from the base behavior. return super.metric(metricName, { @@ -252,6 +253,7 @@ export class Version extends QualifiedFunctionBase implements IVersion { * @param options Alias options * @deprecated Calling `addAlias` on a `Version` object will cause the Alias to be replaced on every function update. Call `function.addAlias()` or `new Alias()` instead. */ + @MethodMetadata() public addAlias(aliasName: string, options: AliasOptions = {}): Alias { return addAlias(this, this, aliasName, options); } diff --git a/packages/aws-cdk-lib/aws-lambda/lib/singleton-lambda.ts b/packages/aws-cdk-lib/aws-lambda/lib/singleton-lambda.ts index f57f38d3ee454..7b716f0abb600 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/singleton-lambda.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/singleton-lambda.ts @@ -10,7 +10,7 @@ import * as ec2 from '../../aws-ec2'; import * as iam from '../../aws-iam'; import * as logs from '../../aws-logs'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a newly created singleton Lambda @@ -137,6 +137,7 @@ export class SingletonFunction extends FunctionBase { * @param value The environment variable's value. * @param options Environment variable options. */ + @MethodMetadata() public addEnvironment(key: string, value: string, options?: EnvironmentOptions) { return this.lambdaFunction.addEnvironment(key, value, options); } @@ -148,10 +149,12 @@ export class SingletonFunction extends FunctionBase { * * @throws if there are already 5 layers on this function, or the layer is incompatible with this function's runtime. */ + @MethodMetadata() public addLayers(...layers: ILayerVersion[]) { return this.lambdaFunction.addLayers(...layers); } + @MethodMetadata() public addPermission(name: string, permission: Permission) { return this.lambdaFunction.addPermission(name, permission); } @@ -160,6 +163,7 @@ export class SingletonFunction extends FunctionBase { * Using node.addDependency() does not work on this method as the underlying lambda function is modeled * as a singleton across the stack. Use this method instead to declare dependencies. */ + @MethodMetadata() public addDependency(...up: IDependable[]) { this.lambdaFunction.node.addDependency(...up); } @@ -168,6 +172,7 @@ export class SingletonFunction extends FunctionBase { * Use this method to write to the construct tree. * The metadata entries are written to the Cloud Assembly Manifest if the `treeMetadata` property is specified in the props of the App that contains this Construct. */ + @MethodMetadata() public addMetadata(type: string, data: any, options?: MetadataOptions) { this.lambdaFunction.node.addMetadata(type, data, options); } @@ -176,6 +181,7 @@ export class SingletonFunction extends FunctionBase { * The SingletonFunction construct cannot be added as a dependency of another construct using * node.addDependency(). Use this method instead to declare this as a dependency of another construct. */ + @MethodMetadata() public dependOn(down: IConstruct) { down.node.addDependency(this.lambdaFunction); } diff --git a/packages/aws-cdk-lib/aws-lambda/test/function.test.ts b/packages/aws-cdk-lib/aws-lambda/test/function.test.ts index b34ad40d31862..5cc8eaf173eb2 100644 --- a/packages/aws-cdk-lib/aws-lambda/test/function.test.ts +++ b/packages/aws-cdk-lib/aws-lambda/test/function.test.ts @@ -4764,11 +4764,22 @@ describe('telemetry metadata', () => { runtime: lambda.Runtime.NODEJS_18_X, }); - expect(fn.node.metadata).toStrictEqual([{ - data: { code: '*', handler: '*', runtime: '*' }, - trace: undefined, - type: 'aws:cdk:analytics:construct', - }]); + fn.addEnvironment('foo', '1234567890', { + removeInEdge: true, + }); + + expect(fn.node.metadata).toStrictEqual([ + { + data: { code: '*', handler: '*', runtime: '*' }, + trace: undefined, + type: 'aws:cdk:analytics:construct', + }, + { + data: { addEnvironment: ['*', '*', { removeInEdge: true }] }, + trace: undefined, + type: 'aws:cdk:analytics:method', + }, + ]); }); it('redaction happens when feature flag is disabled', () => { diff --git a/packages/aws-cdk-lib/aws-logs/lib/cross-account-destination.ts b/packages/aws-cdk-lib/aws-logs/lib/cross-account-destination.ts index e4084eddfbf38..43defcd67b440 100644 --- a/packages/aws-cdk-lib/aws-logs/lib/cross-account-destination.ts +++ b/packages/aws-cdk-lib/aws-logs/lib/cross-account-destination.ts @@ -5,7 +5,7 @@ import { ILogSubscriptionDestination, LogSubscriptionDestinationConfig } from '. import * as iam from '../../aws-iam'; import { ArnFormat } from '../../core'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a CrossAccountDestination @@ -93,10 +93,12 @@ export class CrossAccountDestination extends cdk.Resource implements ILogSubscri this.destinationName = this.getResourceNameAttribute(this.resource.ref); } + @MethodMetadata() public addToPolicy(statement: iam.PolicyStatement) { this.policyDocument.addStatements(statement); } + @MethodMetadata() public bind(_scope: Construct, _sourceLogGroup: ILogGroup): LogSubscriptionDestinationConfig { return { arn: this.destinationArn }; } diff --git a/packages/aws-cdk-lib/aws-logs/lib/metric-filter.ts b/packages/aws-cdk-lib/aws-logs/lib/metric-filter.ts index 0dbadbe509aca..c87f273e87bb8 100644 --- a/packages/aws-cdk-lib/aws-logs/lib/metric-filter.ts +++ b/packages/aws-cdk-lib/aws-logs/lib/metric-filter.ts @@ -3,7 +3,7 @@ import { ILogGroup, MetricFilterOptions } from './log-group'; import { CfnMetricFilter } from './logs.generated'; import { Metric, MetricOptions } from '../../aws-cloudwatch'; import { Resource } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a MetricFilter @@ -65,6 +65,7 @@ export class MetricFilter extends Resource { * * @default avg over 5 minutes */ + @MethodMetadata() public metric(props?: MetricOptions): Metric { return new Metric({ metricName: this.metricName, diff --git a/packages/aws-cdk-lib/aws-opensearchservice/lib/domain.ts b/packages/aws-cdk-lib/aws-opensearchservice/lib/domain.ts index 660cfc68a6d9c..349546bb11d2d 100644 --- a/packages/aws-cdk-lib/aws-opensearchservice/lib/domain.ts +++ b/packages/aws-cdk-lib/aws-opensearchservice/lib/domain.ts @@ -15,7 +15,7 @@ import * as logs from '../../aws-logs'; import * as route53 from '../../aws-route53'; import * as secretsmanager from '../../aws-secretsmanager'; import * as cdk from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -2095,6 +2095,7 @@ export class Domain extends DomainBase implements IDomain, ec2.IConnectable { /** * Add policy statements to the domain access policy */ + @MethodMetadata() public addAccessPolicies(...accessPolicyStatements: iam.PolicyStatement[]) { if (accessPolicyStatements.length > 0) { if (!this.accessPolicy) { diff --git a/packages/aws-cdk-lib/aws-rds/lib/option-group.ts b/packages/aws-cdk-lib/aws-rds/lib/option-group.ts index 2d6030c88c96a..5d07b0c9bc47a 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/option-group.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/option-group.ts @@ -4,7 +4,7 @@ import { CfnOptionGroup } from './rds.generated'; import * as ec2 from '../../aws-ec2'; import { IResource, Lazy, Resource } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * An option group @@ -145,6 +145,7 @@ export class OptionGroup extends Resource implements IOptionGroup { this.optionGroupName = optionGroup.ref; } + @MethodMetadata() public addConfiguration(configuration: OptionConfiguration) { this.configurations.push(configuration); diff --git a/packages/aws-cdk-lib/aws-rds/lib/parameter-group.ts b/packages/aws-cdk-lib/aws-rds/lib/parameter-group.ts index 0f6f3a1eafb16..fd70f199c49b8 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/parameter-group.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/parameter-group.ts @@ -3,7 +3,7 @@ import { IEngine } from './engine'; import { CfnDBClusterParameterGroup, CfnDBParameterGroup } from './rds.generated'; import { IResource, Lazy, RemovalPolicy, Resource } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Options for `IParameterGroup.bindToCluster`. @@ -156,6 +156,7 @@ export class ParameterGroup extends Resource implements IParameterGroup { this.removalPolicy = props.removalPolicy; } + @MethodMetadata() public bindToCluster(_options: ParameterGroupClusterBindOptions): ParameterGroupClusterConfig { if (!this.clusterCfnGroup) { const id = this.instanceCfnGroup ? 'ClusterParameterGroup' : 'Resource'; @@ -174,6 +175,7 @@ export class ParameterGroup extends Resource implements IParameterGroup { }; } + @MethodMetadata() public bindToInstance(_options: ParameterGroupInstanceBindOptions): ParameterGroupInstanceConfig { if (!this.instanceCfnGroup) { const id = this.clusterCfnGroup ? 'InstanceParameterGroup' : 'Resource'; @@ -198,6 +200,7 @@ export class ParameterGroup extends Resource implements IParameterGroup { * @param key The key of the parameter to be added * @param value The value of the parameter to be added */ + @MethodMetadata() public addParameter(key: string, value: string): boolean { this.parameters[key] = value; return true; diff --git a/packages/aws-cdk-lib/aws-rds/lib/proxy.ts b/packages/aws-cdk-lib/aws-rds/lib/proxy.ts index fb664ae44d0cb..904be096f7b57 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/proxy.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/proxy.ts @@ -9,7 +9,7 @@ import * as iam from '../../aws-iam'; import * as secretsmanager from '../../aws-secretsmanager'; import * as cdk from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -559,6 +559,7 @@ export class DatabaseProxy extends DatabaseProxyBase /** * Renders the secret attachment target specifications. */ + @MethodMetadata() public asSecretAttachmentTarget(): secretsmanager.SecretAttachmentTargetProps { return { targetId: this.dbProxyName, @@ -566,6 +567,7 @@ export class DatabaseProxy extends DatabaseProxyBase }; } + @MethodMetadata() public grantConnect(grantee: iam.IGrantable, dbUser?: string): iam.Grant { if (!dbUser) { if (this.secrets.length > 1) { diff --git a/packages/aws-cdk-lib/aws-rds/lib/serverless-cluster.ts b/packages/aws-cdk-lib/aws-rds/lib/serverless-cluster.ts index 7211977571ab2..a1e1747784208 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/serverless-cluster.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/serverless-cluster.ts @@ -14,7 +14,7 @@ import * as kms from '../../aws-kms'; import * as secretsmanager from '../../aws-secretsmanager'; import { Resource, Duration, Token, Annotations, RemovalPolicy, IResource, Stack, Lazy, FeatureFlags, ArnFormat } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -596,6 +596,7 @@ export class ServerlessCluster extends ServerlessClusterNew { /** * Adds the single user rotation of the master password to this cluster. */ + @MethodMetadata() public addRotationSingleUser(options: RotationSingleUserOptions = {}): secretsmanager.SecretRotation { if (!this.secret) { throw new ValidationError('Cannot add single user rotation for a cluster without secret.', this); @@ -623,6 +624,7 @@ export class ServerlessCluster extends ServerlessClusterNew { /** * Adds the multi user rotation to this cluster. */ + @MethodMetadata() public addRotationMultiUser(id: string, options: RotationMultiUserOptions): secretsmanager.SecretRotation { if (!this.secret) { throw new ValidationError('Cannot add multi user rotation for a cluster without secret.', this); diff --git a/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts b/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts index 85720de401928..e31b8f751be25 100644 --- a/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts +++ b/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts @@ -11,7 +11,7 @@ import * as kms from '../../aws-kms'; import * as cxschema from '../../cloud-assembly-schema'; import { ContextProvider, Duration, Lazy, Resource, Stack } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Common properties to create a Route 53 hosted zone @@ -230,10 +230,12 @@ export class HostedZone extends Resource implements IHostedZone { * * @param vpc the other VPC to add. */ + @MethodMetadata() public addVpc(vpc: ec2.IVpc) { this.vpcs.push({ vpcId: vpc.vpcId, vpcRegion: vpc.env.region ?? Stack.of(vpc).region }); } + @MethodMetadata() public grantDelegation(grantee: iam.IGrantable): iam.Grant { return makeGrantDelegation(grantee, this.hostedZoneArn); } @@ -244,6 +246,7 @@ export class HostedZone extends Resource implements IHostedZone { * This will create a key signing key with the given options and enable DNSSEC signing * for the hosted zone. */ + @MethodMetadata() public enableDnssec(options: ZoneSigningOptions): IKeySigningKey { if (this.keySigningKey) { throw new ValidationError('DNSSEC is already enabled for this hosted zone', this); @@ -409,6 +412,7 @@ export class PublicHostedZone extends HostedZone implements IPublicHostedZone { } } + @MethodMetadata() public addVpc(_vpc: ec2.IVpc) { throw new ValidationError('Cannot associate public hosted zones with a VPC', this); } @@ -419,6 +423,7 @@ export class PublicHostedZone extends HostedZone implements IPublicHostedZone { * @param delegate the zone being delegated to. * @param opts options for creating the DNS record, if any. */ + @MethodMetadata() public addDelegation(delegate: IPublicHostedZone, opts: ZoneDelegationOptions = {}): void { new ZoneDelegationRecord(this, `${this.zoneName} -> ${delegate.zoneName}`, { zone: this, diff --git a/packages/aws-cdk-lib/aws-s3/lib/bucket-policy.ts b/packages/aws-cdk-lib/aws-s3/lib/bucket-policy.ts index bfc23cde8ded2..e36b916a3057a 100644 --- a/packages/aws-cdk-lib/aws-s3/lib/bucket-policy.ts +++ b/packages/aws-cdk-lib/aws-s3/lib/bucket-policy.ts @@ -3,7 +3,7 @@ import { Bucket, IBucket } from './bucket'; import { CfnBucket, CfnBucketPolicy } from './s3.generated'; import { PolicyDocument } from '../../aws-iam'; import { RemovalPolicy, Resource, Token, Tokenization } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { CfnReference } from '../../core/lib/private/cfn-reference'; export interface BucketPolicyProps { @@ -121,6 +121,7 @@ export class BucketPolicy extends Resource { * Sets the removal policy for the BucketPolicy. * @param removalPolicy the RemovalPolicy to set. */ + @MethodMetadata() public applyRemovalPolicy(removalPolicy: RemovalPolicy) { this.resource.applyRemovalPolicy(removalPolicy); } diff --git a/packages/aws-cdk-lib/aws-s3/lib/bucket.ts b/packages/aws-cdk-lib/aws-s3/lib/bucket.ts index b381836d61e12..9889e36d289f2 100644 --- a/packages/aws-cdk-lib/aws-s3/lib/bucket.ts +++ b/packages/aws-cdk-lib/aws-s3/lib/bucket.ts @@ -27,7 +27,7 @@ import { Annotations, } from '../../core'; import { UnscopedValidationError, ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { CfnReference } from '../../core/lib/private/cfn-reference'; import { AutoDeleteObjectsProvider } from '../../custom-resource-handlers/dist/aws-s3/auto-delete-objects-provider.generated'; import * as cxapi from '../../cx-api'; @@ -2309,6 +2309,7 @@ export class Bucket extends BucketBase { * * @param rule The rule to add */ + @MethodMetadata() public addLifecycleRule(rule: LifecycleRule) { this.lifecycleRules.push(rule); } @@ -2318,6 +2319,7 @@ export class Bucket extends BucketBase { * * @param metric The metric configuration to add */ + @MethodMetadata() public addMetric(metric: BucketMetrics) { this.metrics.push(metric); } @@ -2327,6 +2329,7 @@ export class Bucket extends BucketBase { * * @param rule The CORS configuration rule to add */ + @MethodMetadata() public addCorsRule(rule: CorsRule) { this.cors.push(rule); } @@ -2336,6 +2339,7 @@ export class Bucket extends BucketBase { * * @param inventory configuration to add */ + @MethodMetadata() public addInventory(inventory: Inventory): void { this.inventories.push(inventory); } diff --git a/packages/aws-cdk-lib/aws-secretsmanager/lib/secret.ts b/packages/aws-cdk-lib/aws-secretsmanager/lib/secret.ts index be4b553b4bbbd..88b17a8a76e9d 100644 --- a/packages/aws-cdk-lib/aws-secretsmanager/lib/secret.ts +++ b/packages/aws-cdk-lib/aws-secretsmanager/lib/secret.ts @@ -5,7 +5,7 @@ import * as secretsmanager from './secretsmanager.generated'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { ArnFormat, FeatureFlags, Fn, IResolveContext, IResource, Lazy, RemovalPolicy, Resource, ResourceProps, SecretValue, Stack, Token, TokenComparison } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; const SECRET_SYMBOL = Symbol.for('@aws-cdk/secretsmanager.Secret'); @@ -698,6 +698,7 @@ export class Secret extends SecretBase { * * @deprecated use `attach()` instead */ + @MethodMetadata() public addTargetAttachment(id: string, options: AttachedSecretOptions): SecretTargetAttachment { return new SecretTargetAttachment(this, id, { secret: this, @@ -711,6 +712,7 @@ export class Secret extends SecretBase { * @param region The name of the region * @param encryptionKey The customer-managed encryption key to use for encrypting the secret value. */ + @MethodMetadata() public addReplicaRegion(region: string, encryptionKey?: kms.IKey): void { const stack = Stack.of(this); if (!Token.isUnresolved(stack.region) && !Token.isUnresolved(region) && region === stack.region) { @@ -882,6 +884,7 @@ export class SecretTargetAttachment extends SecretBase implements ISecretTargetA * If we do not forward policy additions, a new policy resource is created using the secret attachment ARN. * This ends up being rejected by CloudFormation. */ + @MethodMetadata() public addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult { if (FeatureFlags.of(this).isEnabled(cxapi.SECRETS_MANAGER_TARGET_ATTACHMENT_RESOURCE_POLICY)) { return this.attachedSecret.addToResourcePolicy(statement); diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/http-namespace.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/http-namespace.ts index aebe7239bd15c..98002f6111efe 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/http-namespace.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/http-namespace.ts @@ -3,7 +3,7 @@ import { BaseNamespaceProps, INamespace, NamespaceType } from './namespace'; import { BaseServiceProps, Service } from './service'; import { CfnHttpNamespace } from './servicediscovery.generated'; import { Resource } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; export interface HttpNamespaceProps extends BaseNamespaceProps {} export interface IHttpNamespace extends INamespace { } @@ -86,6 +86,7 @@ export class HttpNamespace extends Resource implements IHttpNamespace { /** * Creates a service within the namespace */ + @MethodMetadata() public createService(id: string, props?: BaseServiceProps): Service { return new Service(this, id, { namespace: this, diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/private-dns-namespace.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/private-dns-namespace.ts index 960bd3965fa9c..57b5102b01739 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/private-dns-namespace.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/private-dns-namespace.ts @@ -4,7 +4,7 @@ import { DnsServiceProps, Service } from './service'; import { CfnPrivateDnsNamespace } from './servicediscovery.generated'; import * as ec2 from '../../aws-ec2'; import { Resource } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; export interface PrivateDnsNamespaceProps extends BaseNamespaceProps { /** @@ -104,6 +104,7 @@ export class PrivateDnsNamespace extends Resource implements IPrivateDnsNamespac /** * Creates a service within the namespace */ + @MethodMetadata() public createService(id: string, props?: DnsServiceProps): Service { return new Service(this, id, { namespace: this, diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/public-dns-namespace.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/public-dns-namespace.ts index 56effadba57fb..451800defd040 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/public-dns-namespace.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/public-dns-namespace.ts @@ -3,7 +3,7 @@ import { BaseNamespaceProps, INamespace, NamespaceType } from './namespace'; import { DnsServiceProps, Service } from './service'; import { CfnPublicDnsNamespace } from './servicediscovery.generated'; import { Resource } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; export interface PublicDnsNamespaceProps extends BaseNamespaceProps {} export interface IPublicDnsNamespace extends INamespace { } @@ -92,6 +92,7 @@ export class PublicDnsNamespace extends Resource implements IPublicDnsNamespace /** * Creates a service within the namespace */ + @MethodMetadata() public createService(id: string, props?: DnsServiceProps): Service { return new Service(this, id, { namespace: this, diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/service.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/service.ts index ff626960fd0c8..ca26cf744d570 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/service.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/service.ts @@ -9,7 +9,7 @@ import { defaultDiscoveryType } from './private/utils'; import { CfnService } from './servicediscovery.generated'; import * as elbv2 from '../../aws-elasticloadbalancingv2'; import { Duration, IResource, Resource } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; export interface IService extends IResource { /** @@ -325,7 +325,8 @@ export class Service extends ServiceBase { /** * Registers an ELB as a new instance with unique name instanceId in this service. */ - public registerLoadBalancer(id: string, loadBalancer: elbv2.ILoadBalancerV2, customAttributes?: {[key: string]: string}): IInstance { + @MethodMetadata() + public registerLoadBalancer(id: string, loadBalancer: elbv2.ILoadBalancerV2, customAttributes?: { [key: string]: string }): IInstance { return new AliasTargetInstance(this, id, { service: this, dnsName: loadBalancer.loadBalancerDnsName, @@ -336,6 +337,7 @@ export class Service extends ServiceBase { /** * Registers a resource that is accessible using values other than an IP address or a domain name (CNAME). */ + @MethodMetadata() public registerNonIpInstance(id: string, props: NonIpInstanceBaseProps): IInstance { return new NonIpInstance(this, id, { service: this, @@ -346,6 +348,7 @@ export class Service extends ServiceBase { /** * Registers a resource that is accessible using an IP address. */ + @MethodMetadata() public registerIpInstance(id: string, props: IpInstanceBaseProps): IInstance { return new IpInstance(this, id, { service: this, @@ -356,6 +359,7 @@ export class Service extends ServiceBase { /** * Registers a resource that is accessible using a CNAME. */ + @MethodMetadata() public registerCnameInstance(id: string, props: CnameInstanceBaseProps): IInstance { return new CnameInstance(this, id, { service: this, diff --git a/packages/aws-cdk-lib/aws-ses/lib/configuration-set.ts b/packages/aws-cdk-lib/aws-ses/lib/configuration-set.ts index 47e6c90714c09..df4ea2f020e12 100644 --- a/packages/aws-cdk-lib/aws-ses/lib/configuration-set.ts +++ b/packages/aws-cdk-lib/aws-ses/lib/configuration-set.ts @@ -4,7 +4,7 @@ import { IDedicatedIpPool } from './dedicated-ip-pool'; import { undefinedIfNoKeys } from './private/utils'; import { CfnConfigurationSet } from './ses.generated'; import { Duration, IResource, Resource, Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * A configuration set @@ -225,6 +225,7 @@ export class ConfigurationSet extends Resource implements IConfigurationSet { /** * Adds an event destination to this configuration set */ + @MethodMetadata() public addEventDestination(id: string, options: ConfigurationSetEventDestinationOptions): ConfigurationSetEventDestination { return new ConfigurationSetEventDestination(this, id, { ...options, diff --git a/packages/aws-cdk-lib/aws-ses/lib/receipt-rule.ts b/packages/aws-cdk-lib/aws-ses/lib/receipt-rule.ts index fb8507749a0eb..f4178a57c5c0d 100644 --- a/packages/aws-cdk-lib/aws-ses/lib/receipt-rule.ts +++ b/packages/aws-cdk-lib/aws-ses/lib/receipt-rule.ts @@ -4,7 +4,7 @@ import { IReceiptRuleSet } from './receipt-rule-set'; import { CfnReceiptRule } from './ses.generated'; import * as iam from '../../aws-iam'; import { Aws, IResource, Lazy, Resource } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { DropSpamSingletonFunction } from '../../custom-resource-handlers/dist/aws-ses/drop-spam-provider.generated'; /** @@ -144,6 +144,7 @@ export class ReceiptRule extends Resource implements IReceiptRule { /** * Adds an action to this receipt rule. */ + @MethodMetadata() public addAction(action: IReceiptRuleAction) { this.actions.push(action.bind(this)); } diff --git a/packages/aws-cdk-lib/aws-sns/lib/topic.ts b/packages/aws-cdk-lib/aws-sns/lib/topic.ts index e331b6156de52..c3284b9c31aa5 100644 --- a/packages/aws-cdk-lib/aws-sns/lib/topic.ts +++ b/packages/aws-cdk-lib/aws-sns/lib/topic.ts @@ -5,7 +5,7 @@ import { IRole } from '../../aws-iam'; import { IKey } from '../../aws-kms'; import { ArnFormat, Lazy, Names, Stack, Token } from '../../core'; import { ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a new SNS topic @@ -387,6 +387,7 @@ export class Topic extends TopicBase { /** * Adds a delivery status logging configuration to the topic. */ + @MethodMetadata() public addLoggingConfig(config: LoggingConfig) { this.loggingConfigs.push(config); } diff --git a/packages/aws-cdk-lib/aws-stepfunctions/lib/activity.ts b/packages/aws-cdk-lib/aws-stepfunctions/lib/activity.ts index fecb6a4f8d3a1..b7f728e21a6c5 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/lib/activity.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/lib/activity.ts @@ -7,7 +7,7 @@ import { CfnActivity } from './stepfunctions.generated'; import * as cloudwatch from '../../aws-cloudwatch'; import * as iam from '../../aws-iam'; import { ArnFormat, IResource, Lazy, Names, Resource, Stack } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Properties for defining a new Step Functions Activity @@ -121,6 +121,7 @@ export class Activity extends Resource implements IActivity { * @param identity The principal * @param actions The list of desired actions */ + @MethodMetadata() public grant(identity: iam.IGrantable, ...actions: string[]) { return iam.Grant.addToPrincipal({ grantee: identity, @@ -134,6 +135,7 @@ export class Activity extends Resource implements IActivity { * * @default sum over 5 minutes */ + @MethodMetadata() public metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { return new cloudwatch.Metric({ namespace: 'AWS/States', @@ -149,6 +151,7 @@ export class Activity extends Resource implements IActivity { * * @default average over 5 minutes */ + @MethodMetadata() public metricRunTime(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(StatesMetrics.activityRunTimeAverage, props); } @@ -158,6 +161,7 @@ export class Activity extends Resource implements IActivity { * * @default average over 5 minutes */ + @MethodMetadata() public metricScheduleTime(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(StatesMetrics.activityScheduleTimeAverage, props); } @@ -167,6 +171,7 @@ export class Activity extends Resource implements IActivity { * * @default average over 5 minutes */ + @MethodMetadata() public metricTime(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(StatesMetrics.activityTimeAverage, props); } @@ -176,6 +181,7 @@ export class Activity extends Resource implements IActivity { * * @default sum over 5 minutes */ + @MethodMetadata() public metricScheduled(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(StatesMetrics.activitiesScheduledSum, props); } @@ -185,6 +191,7 @@ export class Activity extends Resource implements IActivity { * * @default sum over 5 minutes */ + @MethodMetadata() public metricTimedOut(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(StatesMetrics.activitiesTimedOutSum, props); } @@ -194,6 +201,7 @@ export class Activity extends Resource implements IActivity { * * @default sum over 5 minutes */ + @MethodMetadata() public metricStarted(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(StatesMetrics.activitiesStartedSum, props); } @@ -203,6 +211,7 @@ export class Activity extends Resource implements IActivity { * * @default sum over 5 minutes */ + @MethodMetadata() public metricSucceeded(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(StatesMetrics.activitiesSucceededSum, props); } @@ -212,6 +221,7 @@ export class Activity extends Resource implements IActivity { * * @default sum over 5 minutes */ + @MethodMetadata() public metricFailed(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(StatesMetrics.activitiesFailedSum, props); } @@ -221,6 +231,7 @@ export class Activity extends Resource implements IActivity { * * @default sum over 5 minutes */ + @MethodMetadata() public metricHeartbeatTimedOut(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return this.cannedMetric(StatesMetrics.activitiesHeartbeatTimedOutSum, props); } diff --git a/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts b/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts index 9e333e301aa35..a930f6adac0a0 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts @@ -11,7 +11,7 @@ import * as iam from '../../aws-iam'; import * as logs from '../../aws-logs'; import * as s3_assets from '../../aws-s3-assets'; import { Arn, ArnFormat, Duration, IResource, RemovalPolicy, Resource, Stack, Token } from '../../core'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Two types of state machines are available in AWS Step Functions: EXPRESS AND STANDARD. @@ -556,6 +556,7 @@ export class StateMachine extends StateMachineBase { /** * Add the given statement to the role's policy */ + @MethodMetadata() public addToRolePolicy(statement: iam.PolicyStatement) { this.role.addToPrincipalPolicy(statement); } diff --git a/packages/aws-cdk-lib/aws-synthetics/lib/canary.ts b/packages/aws-cdk-lib/aws-synthetics/lib/canary.ts index 0e506a7c8a7a4..187096cb5feae 100644 --- a/packages/aws-cdk-lib/aws-synthetics/lib/canary.ts +++ b/packages/aws-cdk-lib/aws-synthetics/lib/canary.ts @@ -12,7 +12,7 @@ import * as kms from '../../aws-kms'; import * as s3 from '../../aws-s3'; import * as cdk from '../../core'; import { UnscopedValidationError, ValidationError } from '../../core/lib/errors'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; import { AutoDeleteUnderlyingResourcesProvider } from '../../custom-resource-handlers/dist/aws-synthetics/auto-delete-underlying-resources-provider.generated'; const AUTO_DELETE_UNDERLYING_RESOURCES_RESOURCE_TYPE = 'Custom::SyntheticsAutoDeleteUnderlyingResources'; @@ -461,6 +461,7 @@ export class Canary extends cdk.Resource implements ec2.IConnectable { * * @default avg over 5 minutes */ + @MethodMetadata() public metricDuration(options?: MetricOptions): Metric { return new Metric({ ...CloudWatchSyntheticsMetrics.durationMaximum({ CanaryName: this.canaryName }), @@ -476,6 +477,7 @@ export class Canary extends cdk.Resource implements ec2.IConnectable { * * @default avg over 5 minutes */ + @MethodMetadata() public metricSuccessPercent(options?: MetricOptions): Metric { return this.cannedMetric(CloudWatchSyntheticsMetrics.successPercentAverage, options); } @@ -487,6 +489,7 @@ export class Canary extends cdk.Resource implements ec2.IConnectable { * * @param options - configuration options for the metric */ + @MethodMetadata() public metricFailed(options?: MetricOptions): Metric { return this.cannedMetric(CloudWatchSyntheticsMetrics.failedSum, options); } diff --git a/packages/aws-cdk-lib/core/lib/analytics-data-source/classes.ts b/packages/aws-cdk-lib/core/lib/analytics-data-source/classes.ts index a531e0f8ef6cb..b127e592cc0bc 100644 --- a/packages/aws-cdk-lib/core/lib/analytics-data-source/classes.ts +++ b/packages/aws-cdk-lib/core/lib/analytics-data-source/classes.ts @@ -18,13 +18,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'patterns': '*', 'basicAuth': '*', 'buildSpec': '*', - 'autoBuild': '*', - 'pullRequestPreview': '*', + 'autoBuild': 'boolean', + 'pullRequestPreview': 'boolean', 'environmentVariables': '*', 'pullRequestEnvironmentName': '*', 'stage': '*' }, - 'autoBranchDeletion': '*', + 'autoBranchDeletion': 'boolean', 'basicAuth': '*', 'buildSpec': '*', 'customResponseHeaders': { @@ -52,7 +52,57 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'platform': 'Platform', - 'cacheConfigType': 'CacheConfigType' + 'cacheConfigType': 'CacheConfigType', + 'addCustomRule': [ + '*' + ], + 'addEnvironment': [ + '*', + '*' + ], + 'addAutoBranchEnvironment': [ + '*', + '*' + ], + 'addBranch': [ + '*', + { + 'basicAuth': '*', + 'branchName': '*', + 'buildSpec': '*', + 'description': '*', + 'autoBuild': 'boolean', + 'pullRequestPreview': 'boolean', + 'environmentVariables': '*', + 'pullRequestEnvironmentName': '*', + 'stage': '*', + 'asset': '*', + 'performanceMode': 'boolean' + } + ], + 'addDomain': [ + '*', + { + 'domainName': '*', + 'subDomains': { + 'branch': { + 'branchName': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'prefix': '*' + }, + 'enableAutoSubdomain': 'boolean', + 'autoSubdomainCreationPatterns': '*', + 'customCertificate': { + 'certificateArn': '*' + } + } + ] }, 'Branch': { 'app': { @@ -68,13 +118,17 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'branchName': '*', 'buildSpec': '*', 'description': '*', - 'autoBuild': '*', - 'pullRequestPreview': '*', + 'autoBuild': 'boolean', + 'pullRequestPreview': 'boolean', 'environmentVariables': '*', 'pullRequestEnvironmentName': '*', 'stage': '*', 'asset': '*', - 'performanceMode': '*' + 'performanceMode': 'boolean', + 'addEnvironment': [ + '*', + '*' + ] }, 'Domain': { 'app': { @@ -116,7 +170,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'prefix': '*' }, - 'enableAutoSubdomain': '*', + 'enableAutoSubdomain': 'boolean', 'autoSubdomainCreationPatterns': '*', 'customCertificate': { 'certificateArn': '*', @@ -126,7 +180,30 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } + }, + 'mapSubDomain': [ + { + 'branchName': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + '*' + ], + 'mapRoot': [ + { + 'branchName': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] } }, '@aws-cdk.aws-apprunner-alpha': { @@ -142,7 +219,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'Service': { 'source': '*', - 'autoDeploymentsEnabled': '*', + 'autoDeploymentsEnabled': 'boolean', 'autoScalingConfiguration': { 'autoScalingConfigurationArn': '*', 'autoScalingConfigurationName': '*', @@ -203,7 +280,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*', 'connections': '*' }, - 'isPubliclyAccessible': '*', + 'isPubliclyAccessible': 'boolean', 'healthCheck': '*', 'kmsKey': { 'keyArn': '*', @@ -226,7 +303,18 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } + }, + 'addToRolePolicy': [ + '*' + ], + 'addEnvironmentVariable': [ + '*', + '*' + ], + 'addSecret': [ + '*', + '*' + ] }, 'VpcConnector': { 'vpc': { @@ -256,7 +344,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -276,14 +364,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -344,7 +432,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -405,7 +493,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -421,7 +509,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'contentsKey': '*', 'contentsS3Version': '*', - 'enableIssues': '*', + 'enableIssues': 'boolean', 'visibility': 'RepositoryVisibility', 'description': '*' } @@ -476,8 +564,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'roleMappings': { 'providerUrl': '*', 'mappingKey': '*', - 'useToken': '*', - 'resolveAmbiguousRoles': '*', + 'useToken': 'boolean', + 'resolveAmbiguousRoles': 'boolean', 'rules': { 'claim': '*', 'mappedRole': { @@ -538,12 +626,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'allowUnauthenticatedIdentities': '*', + 'allowUnauthenticatedIdentities': 'boolean', 'roleMappings': { 'providerUrl': '*', 'mappingKey': '*', - 'useToken': '*', - 'resolveAmbiguousRoles': '*', + 'useToken': 'boolean', + 'resolveAmbiguousRoles': 'boolean', 'rules': { 'claim': '*', 'mappedRole': { @@ -567,7 +655,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'matchType': 'RoleMappingMatchType' } }, - 'allowClassicFlow': '*', + 'allowClassicFlow': 'boolean', 'authenticationProviders': { 'facebook': { 'appId': '*' @@ -600,7 +688,40 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'samlProviderArn': '*' }, 'customProvider': '*' - } + }, + 'addUserPoolAuthentication': [ + '*' + ], + 'addRoleMappings': [ + { + 'providerUrl': '*', + 'mappingKey': '*', + 'useToken': 'boolean', + 'resolveAmbiguousRoles': 'boolean', + 'rules': { + 'claim': '*', + 'mappedRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'claimValue': '*', + 'matchType': 'RoleMappingMatchType' + } + } + ] } }, '@aws-cdk.aws-ec2-alpha': { @@ -611,7 +732,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'locale': '*', 'publicIpSource': 'IpamPoolPublicIpSource', 'awsService': 'AwsServiceName', - 'ipamPoolName': '*' + 'ipamPoolName': '*', + 'provisionCidr': [ + '*', + { + 'netmaskLength': '*', + 'cidr': '*' + } + ] }, 'IpamScope': { 'ipamId': '*', @@ -619,10 +747,19 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'ipamScopeId': '*', 'ipamScopeName': '*' }, + 'Ipam': { + 'addScope': [ + '*', + '*', + { + 'ipamScopeName': '*' + } + ] + }, 'EgressOnlyInternetGateway': { 'vpc': { 'secondaryCidrBlock': { - 'amazonProvidedIpv6CidrBlock': '*', + 'amazonProvidedIpv6CidrBlock': 'boolean', 'cidrBlock': '*', 'ipv6IpamPoolId': '*', 'ipv4IpamPoolId': '*', @@ -660,7 +797,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'InternetGateway': { 'vpc': { 'secondaryCidrBlock': { - 'amazonProvidedIpv6CidrBlock': '*', + 'amazonProvidedIpv6CidrBlock': 'boolean', 'cidrBlock': '*', 'ipv6IpamPoolId': '*', 'ipv4IpamPoolId': '*', @@ -698,7 +835,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'VPNGatewayV2': { 'vpc': { 'secondaryCidrBlock': { - 'amazonProvidedIpv6CidrBlock': '*', + 'amazonProvidedIpv6CidrBlock': 'boolean', 'cidrBlock': '*', 'ipv6IpamPoolId': '*', 'ipv4IpamPoolId': '*', @@ -739,7 +876,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -761,7 +898,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'NatGateway': { 'vpc': { 'secondaryCidrBlock': { - 'amazonProvidedIpv6CidrBlock': '*', + 'amazonProvidedIpv6CidrBlock': 'boolean', 'cidrBlock': '*', 'ipv6IpamPoolId': '*', 'ipv4IpamPoolId': '*', @@ -823,7 +960,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'VPCPeeringConnection': { 'requestorVpc': { 'secondaryCidrBlock': { - 'amazonProvidedIpv6CidrBlock': '*', + 'amazonProvidedIpv6CidrBlock': 'boolean', 'cidrBlock': '*', 'ipv6IpamPoolId': '*', 'ipv4IpamPoolId': '*', @@ -858,7 +995,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'acceptorVpc': { 'secondaryCidrBlock': { - 'amazonProvidedIpv6CidrBlock': '*', + 'amazonProvidedIpv6CidrBlock': 'boolean', 'cidrBlock': '*', 'ipv6IpamPoolId': '*', 'ipv4IpamPoolId': '*', @@ -905,7 +1042,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'RouteTable': { 'vpc': { 'secondaryCidrBlock': { - 'amazonProvidedIpv6CidrBlock': '*', + 'amazonProvidedIpv6CidrBlock': 'boolean', 'cidrBlock': '*', 'ipv6IpamPoolId': '*', 'ipv4IpamPoolId': '*', @@ -938,12 +1075,18 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'routeTableName': '*' + 'routeTableName': '*', + 'addRoute': [ + '*', + '*', + '*', + '*' + ] }, 'SubnetV2': { 'vpc': { 'secondaryCidrBlock': { - 'amazonProvidedIpv6CidrBlock': '*', + 'amazonProvidedIpv6CidrBlock': 'boolean', 'cidrBlock': '*', 'ipv6IpamPoolId': '*', 'ipv4IpamPoolId': '*', @@ -984,19 +1127,206 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'subnetType': 'SubnetType', 'subnetName': '*', - 'assignIpv6AddressOnCreation': '*' + 'assignIpv6AddressOnCreation': 'boolean', + 'associateNetworkAcl': [ + '*', + { + 'networkAclId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] + }, + 'TransitGatewayRouteTableAssociation': { + 'transitGatewayVpcAttachment': { + 'transitGatewayAttachmentId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'transitGatewayRouteTable': { + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'routeTableId': '*' + }, + 'transitGatewayRouteTableAssociationName': '*' + }, + 'TransitGatewayRouteTablePropagation': { + 'transitGatewayVpcAttachment': { + 'transitGatewayAttachmentId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'transitGatewayRouteTable': { + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'routeTableId': '*' + }, + 'transitGatewayRouteTablePropagationName': '*' + }, + 'TransitGatewayRouteTable': { + 'transitGateway': { + 'transitGatewayId': '*', + 'transitGatewayArn': '*', + 'defaultRouteTable': { + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'routeTableId': '*' + }, + 'defaultRouteTableAssociation': 'boolean', + 'defaultRouteTablePropagation': 'boolean', + 'dnsSupport': 'boolean', + 'securityGroupReferencingSupport': 'boolean', + 'routerType': 'RouterType', + 'routerTargetId': '*' + }, + 'transitGatewayRouteTableName': '*' + }, + 'TransitGatewayRoute': { + 'transitGatewayAttachment': { + 'transitGatewayAttachmentId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'destinationCidrBlock': '*', + 'transitGatewayRouteTable': { + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'routeTableId': '*' + }, + 'transitGatewayRouteName': '*' + }, + 'TransitGatewayBlackholeRoute': { + 'destinationCidrBlock': '*', + 'transitGatewayRouteTable': { + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'routeTableId': '*' + }, + 'transitGatewayRouteName': '*' + }, + 'TransitGatewayVpcAttachment': { + 'transitGateway': { + 'transitGatewayId': '*', + 'transitGatewayArn': '*', + 'defaultRouteTable': { + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'routeTableId': '*' + }, + 'defaultRouteTableAssociation': 'boolean', + 'defaultRouteTablePropagation': 'boolean', + 'dnsSupport': 'boolean', + 'securityGroupReferencingSupport': 'boolean', + 'routerType': 'RouterType', + 'routerTargetId': '*' + }, + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'vpcAttachmentOptions': { + 'applianceModeSupport': 'boolean', + 'dnsSupport': 'boolean', + 'ipv6Support': 'boolean', + 'securityGroupReferencingSupport': 'boolean' + }, + 'transitGatewayAttachmentName': '*' + }, + 'TransitGateway': { + 'transitGatewayName': '*', + 'amazonSideAsn': '*', + 'autoAcceptSharedAttachments': 'boolean', + 'defaultRouteTableAssociation': 'boolean', + 'defaultRouteTablePropagation': 'boolean', + 'description': '*', + 'dnsSupport': 'boolean', + 'securityGroupReferencingSupport': 'boolean', + 'transitGatewayCidrBlocks': '*' }, 'VpcV2': { 'primaryAddressBlock': '*', 'secondaryAddressBlocks': '*', - 'enableDnsHostnames': '*', - 'enableDnsSupport': '*', + 'enableDnsHostnames': 'boolean', + 'enableDnsSupport': 'boolean', 'defaultInstanceTenancy': 'DefaultInstanceTenancy', 'vpcName': '*' }, 'VPCCidrBlock': { 'vpcId': '*', - 'amazonProvidedIpv6CidrBlock': '*', + 'amazonProvidedIpv6CidrBlock': 'boolean', 'cidrBlock': '*', 'cidrBlockName': '*', 'ipv6NetmaskLength': '*', @@ -1054,8 +1384,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'fleetName': '*', 'description': '*', - 'useSpot': '*', - 'useCertificate': '*', + 'useSpot': 'boolean', + 'useCertificate': 'boolean', 'role': { 'roleArn': '*', 'roleName': '*', @@ -1100,7 +1430,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'desiredCapacity': '*', 'minSize': '*', 'maxSize': '*', - 'protectNewGameSession': '*', + 'protectNewGameSession': 'boolean', 'runtimeConfiguration': { 'gameSessionActivationTimeout': '*', 'maxConcurrentGameSessionActivations': '*', @@ -1121,7 +1451,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'resourceCreationLimitPolicy': { 'newGameSessionsPerCreator': '*', 'policyPeriod': '*' - } + }, + 'addIngressRule': [ + { + 'uniqueId': '*' + }, + '*' + ] }, 'Build': { 'buildName': '*', @@ -1195,7 +1531,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -1228,7 +1564,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'protectGameServer': '*', + 'protectGameServer': 'boolean', 'autoScalingPolicy': { 'estimatedInstanceWarmup': '*', 'targetTrackingConfiguration': '*' @@ -1243,8 +1579,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'notificationTarget': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -1262,7 +1598,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'timeout': '*', 'destinations': { 'resourceArnForDestination': '*' - } + }, + 'addDestination': [ + { + 'resourceArnForDestination': '*' + } + ] }, 'MatchmakingRuleSet': { 'matchmakingRuleSetName': '*', @@ -1270,7 +1611,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'QueuedMatchmakingConfiguration': { 'additionalPlayerCount': '*', - 'manualBackfillMode': '*', + 'manualBackfillMode': 'boolean', 'gameProperties': { 'key': '*', 'value': '*' @@ -1288,14 +1629,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'matchmakingConfigurationName': '*', 'description': '*', - 'requireAcceptance': '*', + 'requireAcceptance': 'boolean', 'acceptanceTimeout': '*', 'customEventData': '*', 'notificationTarget': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -1313,7 +1654,19 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } + }, + 'addGameSessionQueue': [ + { + 'gameSessionQueueName': '*', + 'gameSessionQueueArn': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] }, 'Script': { 'scriptName': '*', @@ -1340,14 +1693,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'StandaloneMatchmakingConfiguration': { 'matchmakingConfigurationName': '*', 'description': '*', - 'requireAcceptance': '*', + 'requireAcceptance': 'boolean', 'acceptanceTimeout': '*', 'customEventData': '*', 'notificationTarget': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -1377,14 +1730,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'matchCriteria': '*', 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -1402,7 +1755,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } + }, + 'addProperty': [ + '*', + '*' + ] }, 'DataQualityRuleset': { 'rulesetName': '*', @@ -1446,7 +1803,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'columns': { 'name': '*', 'type': { - 'isPrimitive': '*', + 'isPrimitive': 'boolean', 'inputString': '*' }, 'comment': '*' @@ -1454,7 +1811,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'partitionKeys': { 'name': '*', 'type': { - 'isPrimitive': '*', + 'isPrimitive': 'boolean', 'inputString': '*' }, 'comment': '*' @@ -1464,11 +1821,38 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'keyNames': '*' }, 'dataFormat': '*', - 'compressed': '*', - 'storedAsSubDirectories': '*', - 'enablePartitionFiltering': '*', + 'compressed': 'boolean', + 'storedAsSubDirectories': 'boolean', + 'enablePartitionFiltering': 'boolean', 'storageParameters': '*', - 'parameters': '*' + 'parameters': '*', + 'grantRead': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'grantWrite': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'grantReadWrite': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] }, 'S3Table': { 'bucket': { @@ -1479,7 +1863,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -1522,7 +1906,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'columns': { 'name': '*', 'type': { - 'isPrimitive': '*', + 'isPrimitive': 'boolean', 'inputString': '*' }, 'comment': '*' @@ -1530,7 +1914,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'partitionKeys': { 'name': '*', 'type': { - 'isPrimitive': '*', + 'isPrimitive': 'boolean', 'inputString': '*' }, 'comment': '*' @@ -1540,11 +1924,38 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'keyNames': '*' }, 'dataFormat': '*', - 'compressed': '*', - 'storedAsSubDirectories': '*', - 'enablePartitionFiltering': '*', + 'compressed': 'boolean', + 'storedAsSubDirectories': 'boolean', + 'enablePartitionFiltering': 'boolean', 'storageParameters': '*', - 'parameters': '*' + 'parameters': '*', + 'grantRead': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'grantWrite': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'grantReadWrite': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] }, 'SecurityConfiguration': { 'securityConfigurationName': '*', @@ -1587,9 +1998,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } } - } + }, + 'Table': {} }, '@aws-cdk.aws-iot-alpha': { + 'AccountAuditConfiguration': {}, + 'Logging': {}, 'ScheduledAudit': { 'auditChecks': 'AuditCheck', 'accountAuditConfiguration': { @@ -1611,8 +2025,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'actions': '*', 'description': '*', 'errorAction': '*', - 'enabled': '*', - 'sql': '*' + 'enabled': 'boolean', + 'sql': '*', + 'addAction': [ + '*' + ] } }, '@aws-cdk.aws-iotevents-alpha': { @@ -1647,8 +2064,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, '@aws-cdk.aws-ivs-alpha': { 'Channel': { - 'authorized': '*', - 'insecureIngest': '*', + 'authorized': 'boolean', + 'insecureIngest': 'boolean', 'latencyMode': 'LatencyMode', 'channelName': '*', 'type': 'ChannelType', @@ -1677,7 +2094,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -1713,14 +2130,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'applicationArn': '*', 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' } @@ -1729,15 +2146,15 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'applicationName': '*', 'runtime': '*', 'code': '*', - 'checkpointingEnabled': '*', + 'checkpointingEnabled': 'boolean', 'checkpointInterval': '*', 'minPauseBetweenCheckpoints': '*', 'logLevel': 'LogLevel', 'metricsLevel': 'MetricsLevel', - 'autoScalingEnabled': '*', + 'autoScalingEnabled': 'boolean', 'parallelism': '*', 'parallelismPerKpu': '*', - 'snapshotsEnabled': '*', + 'snapshotsEnabled': 'boolean', 'propertyGroups': '*', 'role': { 'roleArn': '*', @@ -1794,7 +2211,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -1814,14 +2231,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' } @@ -1858,14 +2275,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'runtime': '*', 'moduleDir': '*', 'bundling': { - 'forcedDockerBundling': '*', + 'forcedDockerBundling': 'boolean', 'dockerImage': '*', 'goBuildFlags': '*', 'buildArgs': '*', 'assetHashType': 'AssetHashType', 'assetHash': '*', 'commandHooks': '*', - 'cgoEnabled': '*', + 'cgoEnabled': 'boolean', 'goProxies': '*', 'bundlingFileAccess': 'BundlingFileAccess', 'entrypoint': '*', @@ -1929,13 +2346,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'ipv6AllowedForDualStack': '*', + 'ipv6AllowedForDualStack': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -1955,33 +2372,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'allowAllOutbound': '*', - 'allowAllIpv6Outbound': '*', - 'deadLetterQueueEnabled': '*', + 'allowAllOutbound': 'boolean', + 'allowAllIpv6Outbound': 'boolean', + 'deadLetterQueueEnabled': 'boolean', 'deadLetterQueue': { 'queueArn': '*', 'queueUrl': '*', @@ -1996,14 +2413,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' }, 'deadLetterTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -2013,7 +2430,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tracing': 'Tracing', 'snapStart': '*', - 'profiling': '*', + 'profiling': 'boolean', 'profilingGroup': { 'profilingGroupName': '*', 'profilingGroupArn': '*', @@ -2074,7 +2491,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'retryAttempts': '*' }, 'filesystem': '*', - 'allowPublicSubnet': '*', + 'allowPublicSubnet': 'boolean', 'environmentEncryption': { 'keyArn': '*', 'keyId': '*', @@ -2128,8 +2545,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'index': '*', 'handler': '*', 'bundling': { - 'poetryIncludeHashes': '*', - 'poetryWithoutUrls': '*', + 'poetryIncludeHashes': 'boolean', + 'poetryWithoutUrls': 'boolean', 'assetExcludes': '*', 'outputPathSuffix': '*', 'image': '*', @@ -2199,13 +2616,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'ipv6AllowedForDualStack': '*', + 'ipv6AllowedForDualStack': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -2225,33 +2642,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'allowAllOutbound': '*', - 'allowAllIpv6Outbound': '*', - 'deadLetterQueueEnabled': '*', + 'allowAllOutbound': 'boolean', + 'allowAllIpv6Outbound': 'boolean', + 'deadLetterQueueEnabled': 'boolean', 'deadLetterQueue': { 'queueArn': '*', 'queueUrl': '*', @@ -2266,14 +2683,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' }, 'deadLetterTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -2283,7 +2700,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tracing': 'Tracing', 'snapStart': '*', - 'profiling': '*', + 'profiling': 'boolean', 'profilingGroup': { 'profilingGroupName': '*', 'profilingGroupArn': '*', @@ -2344,7 +2761,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'retryAttempts': '*' }, 'filesystem': '*', - 'allowPublicSubnet': '*', + 'allowPublicSubnet': 'boolean', 'environmentEncryption': { 'keyArn': '*', 'keyId': '*', @@ -2395,8 +2812,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'compatibleRuntimes': '*', 'compatibleArchitectures': '*', 'bundling': { - 'poetryIncludeHashes': '*', - 'poetryWithoutUrls': '*', + 'poetryIncludeHashes': 'boolean', + 'poetryWithoutUrls': 'boolean', 'assetExcludes': '*', 'outputPathSuffix': '*', 'image': '*', @@ -2439,30 +2856,106 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } - }, - 'Map': { - 'mapName': '*', - 'description': '*', - 'style': 'Style', - 'customLayers': 'CustomLayer', - 'politicalView': 'PoliticalView' - }, - 'PlaceIndex': { - 'placeIndexName': '*', - 'dataSource': 'DataSource', - 'intendedUse': 'IntendedUse', - 'description': '*' + }, + 'grant': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + '*' + ], + 'grantRead': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] + }, + 'Map': { + 'mapName': '*', + 'description': '*', + 'style': 'Style', + 'customLayers': 'CustomLayer', + 'politicalView': 'PoliticalView', + 'grant': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + '*' + ], + 'grantRendering': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] + }, + 'PlaceIndex': { + 'placeIndexName': '*', + 'dataSource': 'DataSource', + 'intendedUse': 'IntendedUse', + 'description': '*', + 'grant': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + '*' + ], + 'grantSearch': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] }, 'RouteCalculator': { 'routeCalculatorName': '*', 'dataSource': 'DataSource', - 'description': '*' + 'description': '*', + 'grant': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + '*' + ], + 'grantRead': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] }, 'Tracker': { 'trackerName': '*', 'description': '*', - 'eventBridgeEnabled': '*', + 'eventBridgeEnabled': 'boolean', 'kmsKey': { 'keyArn': '*', 'keyId': '*', @@ -2473,7 +2966,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'kmsKeyEnableGeospatialQueries': '*', + 'kmsKeyEnableGeospatialQueries': 'boolean', 'positionFiltering': 'PositionFiltering', 'geofenceCollections': { 'geofenceCollectionName': '*', @@ -2484,7 +2977,47 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } + }, + 'addGeofenceCollections': [ + { + 'geofenceCollectionName': '*', + 'geofenceCollectionArn': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'grant': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + '*' + ], + 'grantUpdateDevicePositions': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'grantRead': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] } }, '@aws-cdk.aws-msk-alpha': { @@ -2519,7 +3052,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -2540,14 +3073,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'instanceType': '*', 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -2571,8 +3104,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'monitoring': { 'clusterMonitoringLevel': 'ClusterMonitoringLevel', - 'enablePrometheusJmxExporter': '*', - 'enablePrometheusNodeExporter': '*' + 'enablePrometheusJmxExporter': 'boolean', + 'enablePrometheusNodeExporter': 'boolean' }, 'logging': { 'firehoseDeliveryStreamName': '*', @@ -2595,7 +3128,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*' @@ -2608,10 +3141,55 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'encryptionInTransit': { 'clientBroker': 'ClientBrokerEncryption', - 'enableInCluster': '*' + 'enableInCluster': 'boolean' }, 'clientAuthentication': '*', - 'removalPolicy': 'RemovalPolicy' + 'removalPolicy': 'RemovalPolicy', + 'addUser': [ + '*' + ] + }, + 'ServerlessCluster': { + 'clusterName': '*', + 'vpcConfigs': { + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'vpcSubnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*' + }, + 'securityGroups': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + } } }, '@aws-cdk.aws-neptune-alpha': { @@ -2629,10 +3207,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'storageEncrypted': '*', + 'storageEncrypted': 'boolean', 'instances': '*', 'dbClusterName': '*', - 'iamAuthentication': '*', + 'iamAuthentication': 'boolean', 'instanceIdentifierBase': '*', 'instanceType': '*', 'associatedRoles': { @@ -2652,7 +3230,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'deletionProtection': '*', + 'deletionProtection': 'boolean', 'preferredMaintenanceWindow': '*', 'clusterParameterGroup': { 'clusterParameterGroupName': '*', @@ -2708,7 +3286,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -2728,19 +3306,19 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'removalPolicy': 'RemovalPolicy', - 'autoMinorVersionUpgrade': '*', + 'autoMinorVersionUpgrade': 'boolean', 'cloudwatchLogsExports': '*', 'cloudwatchLogsRetention': 'RetentionDays', 'cloudwatchLogsRetentionRole': { @@ -2764,7 +3342,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'minCapacity': '*', 'maxCapacity': '*' }, - 'copyTagsToSnapshot': '*', + 'copyTagsToSnapshot': 'boolean', 'port': '*' }, 'DatabaseInstance': { @@ -2793,7 +3371,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'removalPolicy': 'RemovalPolicy', - 'autoMinorVersionUpgrade': '*' + 'autoMinorVersionUpgrade': 'boolean' }, 'ClusterParameterGroup': { 'clusterParameterGroupName': '*', @@ -2837,7 +3415,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -2859,6 +3437,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } }, '@aws-cdk.aws-pipes-alpha': { + 'ImportedPipe': {}, 'Pipe': { 'source': { 'sourceArn': '*' @@ -2916,7 +3495,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'nodeType': 'NodeType', 'clusterType': 'ClusterType', 'port': '*', - 'encrypted': '*', + 'encrypted': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -2955,7 +3534,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -2975,14 +3554,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -3054,7 +3633,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -3071,14 +3650,82 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'loggingKeyPrefix': '*' }, 'removalPolicy': 'RemovalPolicy', - 'publiclyAccessible': '*', - 'classicResizing': '*', + 'publiclyAccessible': 'boolean', + 'classicResizing': 'boolean', 'elasticIp': '*', - 'rebootForParameterChanges': '*', - 'enhancedVpcRouting': '*', - 'multiAz': '*', + 'rebootForParameterChanges': 'boolean', + 'enhancedVpcRouting': 'boolean', + 'multiAz': 'boolean', 'resourceAction': 'ResourceAction', - 'availabilityZoneRelocation': '*' + 'availabilityZoneRelocation': 'boolean', + 'addRotationSingleUser': [ + '*' + ], + 'addRotationMultiUser': [ + '*', + { + 'secret': { + 'encryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'secretArn': '*', + 'secretFullArn': '*', + 'secretName': '*', + 'secretValue': '*' + }, + 'automaticallyAfter': '*' + } + ], + 'addToParameterGroup': [ + '*', + '*' + ], + 'enableRebootForParameterChanges': [], + 'addDefaultIamRole': [ + { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'addIamRole': [ + { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] }, 'DatabaseSecret': { 'username': '*', @@ -3096,7 +3743,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'ClusterParameterGroup': { 'description': '*', - 'parameters': '*' + 'parameters': '*', + 'addParameter': [ + '*', + '*' + ] }, 'ClusterSubnetGroup': { 'description': '*', @@ -3127,7 +3778,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -3163,7 +3814,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'mutationProtection': '*', + 'mutationProtection': 'boolean', 'name': '*', 'priority': '*', 'vpc': { @@ -3203,7 +3854,52 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'priority': '*' - } + }, + 'addRule': [ + { + 'action': '*', + 'firewallDomainList': { + 'firewallDomainListId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'priority': '*' + } + ], + 'associate': [ + '*', + { + 'mutationProtection': 'boolean', + 'name': '*', + 'priority': '*', + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + } + } + ] } }, '@aws-cdk.aws-s3objectlambda-alpha': { @@ -3216,7 +3912,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -3250,13 +3946,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -3264,9 +3960,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'resourceArnsForGrantInvoke': '*' }, 'accessPointName': '*', - 'cloudWatchMetricsEnabled': '*', - 'supportsGetObjectRange': '*', - 'supportsGetObjectPartNumber': '*', + 'cloudWatchMetricsEnabled': 'boolean', + 'supportsGetObjectRange': 'boolean', + 'supportsGetObjectPartNumber': 'boolean', 'payload': '*' } }, @@ -3311,7 +4007,41 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'connections': '*' }, 'variantName': '*' - } + }, + 'addInstanceProductionVariant': [ + { + 'acceleratorType': '*', + 'initialInstanceCount': '*', + 'instanceType': '*', + 'initialVariantWeight': '*', + 'model': { + 'modelArn': '*', + 'modelName': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'connections': '*' + }, + 'variantName': '*' + } + ], + '_findInstanceProductionVariant': [ + '*' + ] }, 'Endpoint': { 'endpointName': '*', @@ -3324,7 +4054,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } + }, + 'findInstanceProductionVariant': [ + '*' + ] }, 'Model': { 'role': { @@ -3372,7 +4105,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -3392,14 +4125,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -3409,8 +4142,16 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'containerHostname': '*', 'modelData': '*' }, - 'allowAllOutbound': '*', - 'networkIsolation': '*' + 'allowAllOutbound': 'boolean', + 'networkIsolation': 'boolean', + 'addContainer': [ + { + 'image': '*', + 'environment': '*', + 'containerHostname': '*', + 'modelData': '*' + } + ] } }, '@aws-cdk.aws-scheduler-alpha': { @@ -3433,7 +4174,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enabled': '*', + 'enabled': 'boolean', 'key': { 'keyArn': '*', 'keyId': '*', @@ -3488,7 +4229,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -3529,7 +4270,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -3549,41 +4290,1077 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'removalPolicy': 'RemovalPolicy' } }, - 'aws-cdk-lib.aws-apigateway': { - 'ApiKey': { - 'resources': { - 'restApiId': '*', - 'restApiName': '*', - 'restApiRootResourceId': '*', - 'latestDeployment': '*', - 'deploymentStage': '*', - 'root': { - 'restApi': '*', - 'resourceId': '*', - 'path': '*', - 'defaultIntegration': '*', - 'defaultMethodOptions': { - 'operationName': '*', + '@aws-cdk.aws-eks-v2-alpha': { + 'AccessEntry': { + 'accessEntryName': '*', + 'accessEntryType': 'AccessEntryType', + 'cluster': { + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'clusterName': '*', + 'clusterArn': '*', + 'clusterEndpoint': '*', + 'clusterCertificateAuthorityData': '*', + 'clusterSecurityGroupId': '*', + 'clusterSecurityGroup': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + }, + 'clusterEncryptionConfigKeyArn': '*', + 'openIdConnectProvider': { + 'openIdConnectProviderArn': '*', + 'openIdConnectProviderIssuer': '*' + }, + 'eksPodIdentityAgent': { + 'addonName': '*', + 'addonArn': '*' + }, + 'ipFamily': 'IpFamily', + 'kubectlProviderOptions': { + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + }, + 'awscliLayer': { + 'layerVersionArn': '*', + 'compatibleRuntimes': '*' + }, + 'environment': '*', + 'memory': '*' + }, + 'kubectlProvider': { + 'serviceToken': '*' + }, + 'prune': 'boolean' + }, + 'accessPolicies': { + 'accessScope': { + 'namespaces': '*', + 'type': 'AccessScopeType' + }, + 'policy': '*' + }, + 'principal': '*', + 'addAccessPolicies': [ + { + 'accessScope': { + 'namespaces': '*', + 'type': 'AccessScopeType' + }, + 'policy': '*' + } + ] + }, + 'Addon': { + 'addonName': '*', + 'addonVersion': '*', + 'cluster': { + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'clusterName': '*', + 'clusterArn': '*', + 'clusterEndpoint': '*', + 'clusterCertificateAuthorityData': '*', + 'clusterSecurityGroupId': '*', + 'clusterSecurityGroup': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + }, + 'clusterEncryptionConfigKeyArn': '*', + 'openIdConnectProvider': { + 'openIdConnectProviderArn': '*', + 'openIdConnectProviderIssuer': '*' + }, + 'eksPodIdentityAgent': { + 'addonName': '*', + 'addonArn': '*' + }, + 'ipFamily': 'IpFamily', + 'kubectlProviderOptions': { + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + }, + 'awscliLayer': { + 'layerVersionArn': '*', + 'compatibleRuntimes': '*' + }, + 'environment': '*', + 'memory': '*' + }, + 'kubectlProvider': { + 'serviceToken': '*' + }, + 'prune': 'boolean' + }, + 'preserveOnDelete': 'boolean' + }, + 'Cluster': { + 'defaultCapacity': '*', + 'defaultCapacityInstance': '*', + 'defaultCapacityType': 'DefaultCapacityType', + 'bootstrapClusterCreatorAdminPermissions': 'boolean', + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'vpcSubnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + }, + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'clusterName': '*', + 'securityGroup': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + }, + 'version': '*', + 'mastersRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'coreDnsComputeType': 'CoreDnsComputeType', + 'endpointAccess': '*', + 'prune': 'boolean', + 'secretsEncryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'ipFamily': 'IpFamily', + 'serviceIpv4Cidr': '*', + 'albController': { + 'version': '*', + 'repository': '*', + 'policy': '*' + }, + 'clusterLogging': 'ClusterLoggingTypes', + 'tags': '*', + 'kubectlProviderOptions': { + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'awscliLayer': { + 'layerVersionArn': '*', + 'compatibleRuntimes': '*' + }, + 'environment': '*', + 'securityGroup': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + }, + 'memory': '*', + 'privateSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + } + } + }, + 'grantAccess': [ + '*', + '*', + { + 'accessScope': { + 'namespaces': '*', + 'type': 'AccessScopeType' + }, + 'policy': '*' + } + ], + 'getServiceLoadBalancerAddress': [ + '*', + { + 'timeout': '*', + 'namespace': '*' + } + ], + 'getIngressLoadBalancerAddress': [ + '*', + { + 'timeout': '*', + 'namespace': '*' + } + ], + 'addAutoScalingGroupCapacity': [ + '*', + { + 'instanceType': '*', + 'bootstrapEnabled': 'boolean', + 'bootstrapOptions': { + 'useMaxPods': 'boolean', + 'enableDockerBridge': 'boolean', + 'awsApiRetryAttempts': '*', + 'dockerConfigJson': '*', + 'dnsClusterIp': '*', + 'kubeletExtraArgs': '*', + 'additionalArgs': '*' + }, + 'machineImageType': 'MachineImageType', + 'minCapacity': '*', + 'maxCapacity': '*', + 'desiredCapacity': '*', + 'keyName': '*', + 'keyPair': { + 'keyPairName': '*', + 'type': 'KeyPairType', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'vpcSubnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + } + } + }, + 'notificationsTopic': { + 'topicArn': '*', + 'topicName': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean' + }, + 'notifications': { + 'scalingEvents': '*' + }, + 'allowAllOutbound': 'boolean', + 'updateType': 'UpdateType', + 'rollingUpdateConfiguration': { + 'maxBatchSize': '*', + 'minInstancesInService': '*', + 'minSuccessfulInstancesPercent': '*', + 'pauseTime': '*', + 'waitOnResourceSignals': 'boolean', + 'suspendProcesses': 'ScalingProcess' + }, + 'replacingUpdateMinSuccessfulInstancesPercent': '*', + 'ignoreUnmodifiedSizeProperties': 'boolean', + 'resourceSignalCount': '*', + 'associatePublicIpAddress': 'boolean', + 'spotPrice': '*', + 'healthCheck': '*', + 'blockDevices': { + 'deviceName': '*', + 'volume': '*', + 'mappingEnabled': 'boolean' + }, + 'instanceMonitoring': 'Monitoring', + 'groupMetrics': '*', + 'signals': '*', + 'updatePolicy': '*', + 'newInstancesProtectedFromScaleIn': 'boolean', + 'autoScalingGroupName': '*', + 'terminationPolicies': 'TerminationPolicy', + 'terminationPolicyCustomLambdaFunctionArn': '*', + 'capacityRebalance': 'boolean', + 'ssmSessionPermissions': 'boolean', + 'azCapacityDistributionStrategy': 'CapacityDistributionStrategy' + } + ], + 'addNodegroupCapacity': [ + '*', + { + 'nodegroupName': '*', + 'subnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + }, + 'amiType': 'NodegroupAmiType', + 'diskSize': '*', + 'desiredSize': '*', + 'maxSize': '*', + 'minSize': '*', + 'forceUpdate': 'boolean', + 'instanceType': '*', + 'labels': '*', + 'taints': { + 'effect': 'TaintEffect', + 'key': '*', + 'value': '*' + }, + 'nodeRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + }, + 'releaseVersion': '*', + 'remoteAccess': { + 'sshKeyName': '*', + 'sourceSecurityGroups': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + }, + 'tags': '*', + 'launchTemplateSpec': { + 'id': '*', + 'version': '*' + }, + 'capacityType': 'CapacityType', + 'maxUnavailable': '*', + 'maxUnavailablePercentage': '*' + } + ], + 'addFargateProfile': [ + '*', + { + 'fargateProfileName': '*', + 'podExecutionRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'selectors': { + 'namespace': '*', + 'labels': '*' + }, + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + } + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'subnetSelection': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*' + } + } + ], + '_attachFargateProfile': [ + '*' + ], + '_dependOnKubectlBarrier': [ + '*' + ] + }, + 'ImportedCluster': { + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'clusterName': '*', + 'clusterEndpoint': '*', + 'clusterCertificateAuthorityData': '*', + 'clusterSecurityGroupId': '*', + 'clusterEncryptionConfigKeyArn': '*', + 'ipFamily': 'IpFamily', + 'securityGroupIds': '*', + 'openIdConnectProvider': { + 'openIdConnectProviderArn': '*', + 'openIdConnectProviderIssuer': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'kubectlProvider': { + 'serviceToken': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + }, + 'kubectlProviderOptions': { + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'awscliLayer': { + 'layerVersionArn': '*', + 'compatibleRuntimes': '*' + }, + 'environment': '*', + 'securityGroup': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + }, + 'memory': '*', + 'privateSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + } + } + }, + 'prune': 'boolean' + }, + 'FargateCluster': { + 'defaultProfile': { + 'fargateProfileName': '*', + 'podExecutionRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'selectors': { + 'namespace': '*', + 'labels': '*' + }, + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + } + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'subnetSelection': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*' + } + }, + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'vpcSubnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + }, + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'clusterName': '*', + 'securityGroup': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + }, + 'version': '*', + 'mastersRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'coreDnsComputeType': 'CoreDnsComputeType', + 'endpointAccess': '*', + 'prune': 'boolean', + 'secretsEncryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'ipFamily': 'IpFamily', + 'serviceIpv4Cidr': '*', + 'albController': { + 'version': '*', + 'repository': '*', + 'policy': '*' + }, + 'clusterLogging': 'ClusterLoggingTypes', + 'tags': '*', + 'kubectlProviderOptions': { + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'awscliLayer': { + 'layerVersionArn': '*', + 'compatibleRuntimes': '*' + }, + 'environment': '*', + 'securityGroup': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + }, + 'memory': '*', + 'privateSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + } + } + } + }, + 'Nodegroup': { + 'cluster': { + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'clusterName': '*', + 'clusterArn': '*', + 'clusterEndpoint': '*', + 'clusterCertificateAuthorityData': '*', + 'clusterSecurityGroupId': '*', + 'clusterSecurityGroup': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + }, + 'clusterEncryptionConfigKeyArn': '*', + 'openIdConnectProvider': { + 'openIdConnectProviderArn': '*', + 'openIdConnectProviderIssuer': '*' + }, + 'eksPodIdentityAgent': { + 'addonName': '*', + 'addonArn': '*' + }, + 'ipFamily': 'IpFamily', + 'kubectlProviderOptions': { + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + }, + 'awscliLayer': { + 'layerVersionArn': '*', + 'compatibleRuntimes': '*' + }, + 'environment': '*', + 'memory': '*' + }, + 'kubectlProvider': { + 'serviceToken': '*' + }, + 'prune': 'boolean' + }, + 'nodegroupName': '*', + 'subnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + }, + 'amiType': 'NodegroupAmiType', + 'diskSize': '*', + 'desiredSize': '*', + 'maxSize': '*', + 'minSize': '*', + 'forceUpdate': 'boolean', + 'instanceType': '*', + 'instanceTypes': '*', + 'labels': '*', + 'taints': { + 'effect': 'TaintEffect', + 'key': '*', + 'value': '*' + }, + 'nodeRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'releaseVersion': '*', + 'remoteAccess': { + 'sshKeyName': '*', + 'sourceSecurityGroups': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + }, + 'tags': '*', + 'launchTemplateSpec': { + 'id': '*', + 'version': '*' + }, + 'capacityType': 'CapacityType', + 'maxUnavailable': '*', + 'maxUnavailablePercentage': '*' + }, + 'OpenIdConnectProvider': { + 'url': '*' + } + }, + 'aws-cdk-lib.aws-apigateway': { + 'ApiKey': { + 'resources': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', 'authorizationType': 'AuthorizationType', 'authorizer': { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -3603,8 +5380,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -3612,9 +5389,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -3639,7 +5416,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -3659,8 +5436,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -3668,17 +5445,17 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } } }, 'customerId': '*', - 'enabled': '*', - 'generateDistinctId': '*', + 'enabled': 'boolean', + 'generateDistinctId': 'boolean', 'apiKeyName': '*', 'value': '*', 'description': '*', @@ -3690,7 +5467,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -3710,8 +5487,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -3719,9 +5496,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } }, @@ -3745,7 +5522,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -3765,8 +5542,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -3774,9 +5551,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -3816,7 +5593,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -3836,8 +5613,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -3845,9 +5622,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -3872,7 +5649,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -3892,8 +5669,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -3901,17 +5678,17 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } } }, 'customerId': '*', - 'enabled': '*', - 'generateDistinctId': '*', + 'enabled': 'boolean', + 'generateDistinctId': 'boolean', 'apiKeyName': '*', 'value': '*', 'description': '*', @@ -3923,7 +5700,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -3943,8 +5720,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -3952,9 +5729,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } }, @@ -3988,7 +5765,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4008,8 +5785,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4017,16 +5794,16 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } }, 'basePath': '*', 'stage': '*', - 'attachToStage': '*' + 'attachToStage': 'boolean' }, 'Deployment': { 'api': { @@ -4047,7 +5824,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4067,8 +5844,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4076,16 +5853,22 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } }, 'description': '*', - 'retainDeployments': '*', - 'stageName': '*' + 'retainDeployments': 'boolean', + 'stageName': '*', + 'addToLogicalId': [ + '*' + ], + '_addMethodDependency': [ + '*' + ] }, 'DomainName': { 'mapping': { @@ -4106,7 +5889,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4126,8 +5909,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4135,9 +5918,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -4163,7 +5946,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -4180,7 +5963,130 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'key': '*', 'version': '*' }, - 'basePath': '*' + 'basePath': '*', + 'addBasePathMapping': [ + { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + }, + { + 'basePath': '*', + 'stage': '*', + 'attachToStage': 'boolean' + } + ], + 'addApiMapping': [ + { + 'stageName': '*', + 'restApi': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + } + }, + { + 'basePath': '*' + } + ] }, 'GatewayResponse': { 'restApi': { @@ -4201,7 +6107,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4221,8 +6127,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4230,9 +6136,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -4263,13 +6169,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -4277,8 +6183,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'resourceArnsForGrantInvoke': '*' }, 'integrationOptions': { - 'proxy': '*', - 'allowTestInvoke': '*', + 'proxy': 'boolean', + 'allowTestInvoke': 'boolean', 'cacheKeyParameters': '*', 'cacheNamespace': '*', 'contentHandling': 'ContentHandling', @@ -4299,7 +6205,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'credentialsPassthrough': '*', + 'credentialsPassthrough': 'boolean', 'passthroughBehavior': 'PassthroughBehavior', 'requestParameters': '*', 'requestTemplates': '*', @@ -4316,7 +6222,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'vpcLinkId': '*' } }, - 'proxy': '*', + 'proxy': 'boolean', 'options': { 'binaryMediaTypes': '*', 'minimumCompressionSize': '*', @@ -4339,7 +6245,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4359,8 +6265,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4368,9 +6274,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -4382,32 +6288,32 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'vpcEndpointId': '*' } }, - 'deploy': '*', + 'deploy': 'boolean', 'deployOptions': { 'stageName': '*', 'accessLogDestination': '*', 'accessLogFormat': '*', - 'tracingEnabled': '*', - 'cacheClusterEnabled': '*', + 'tracingEnabled': 'boolean', + 'cacheClusterEnabled': 'boolean', 'cacheClusterSize': '*', 'clientCertificateId': '*', 'description': '*', 'documentationVersion': '*', 'variables': '*', 'methodOptions': '*', - 'metricsEnabled': '*', + 'metricsEnabled': 'boolean', 'loggingLevel': 'MethodLoggingLevel', - 'dataTraceEnabled': '*', + 'dataTraceEnabled': 'boolean', 'throttlingBurstLimit': '*', 'throttlingRateLimit': '*', - 'cachingEnabled': '*', - 'cacheDataEncrypted': '*' + 'cachingEnabled': 'boolean', + 'cacheDataEncrypted': 'boolean' }, - 'retainDeployments': '*', + 'retainDeployments': 'boolean', 'restApiName': '*', 'parameters': '*', 'policy': '*', - 'failOnWarnings': '*', + 'failOnWarnings': 'boolean', 'domainName': { 'domainName': '*', 'certificate': { @@ -4424,7 +6330,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*' @@ -4437,11 +6343,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'basePath': '*' }, - 'cloudWatchRole': '*', + 'cloudWatchRole': 'boolean', 'cloudWatchRoleRemovalPolicy': 'RemovalPolicy', 'endpointExportName': '*', 'endpointTypes': 'EndpointType', - 'disableExecuteApiEndpoint': '*', + 'disableExecuteApiEndpoint': 'boolean', 'description': '*' }, 'binaryMediaTypes': '*', @@ -4465,7 +6371,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4485,8 +6391,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4494,9 +6400,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -4514,33 +6420,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'deploy': '*', + 'deploy': 'boolean', 'deployOptions': { 'stageName': '*', 'accessLogDestination': '*', 'accessLogFormat': '*', - 'tracingEnabled': '*', - 'cacheClusterEnabled': '*', + 'tracingEnabled': 'boolean', + 'cacheClusterEnabled': 'boolean', 'cacheClusterSize': '*', 'clientCertificateId': '*', 'description': '*', 'documentationVersion': '*', 'variables': '*', 'methodOptions': '*', - 'metricsEnabled': '*', + 'metricsEnabled': 'boolean', 'loggingLevel': 'MethodLoggingLevel', - 'dataTraceEnabled': '*', + 'dataTraceEnabled': 'boolean', 'throttlingBurstLimit': '*', 'throttlingRateLimit': '*', - 'cachingEnabled': '*', + 'cachingEnabled': 'boolean', 'cacheTtl': '*', - 'cacheDataEncrypted': '*' + 'cacheDataEncrypted': 'boolean' }, - 'retainDeployments': '*', + 'retainDeployments': 'boolean', 'restApiName': '*', 'parameters': '*', 'policy': '*', - 'failOnWarnings': '*', + 'failOnWarnings': 'boolean', 'domainName': { 'domainName': '*', 'certificate': { @@ -4563,7 +6469,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*' @@ -4576,11 +6482,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'basePath': '*' }, - 'cloudWatchRole': '*', + 'cloudWatchRole': 'boolean', 'cloudWatchRoleRemovalPolicy': 'RemovalPolicy', 'endpointExportName': '*', 'endpointTypes': 'EndpointType', - 'disableExecuteApiEndpoint': '*', + 'disableExecuteApiEndpoint': 'boolean', 'description': '*', 'defaultIntegration': '*', 'defaultMethodOptions': { @@ -4590,7 +6496,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4610,8 +6516,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4619,9 +6525,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } }, @@ -4651,7 +6557,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4665,8 +6571,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4674,9 +6580,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } }, @@ -4689,30 +6595,623 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', 'responseModels': '*' }, - 'requestParameters': '*', - 'requestModels': '*', - 'requestValidator': { - 'requestValidatorId': '*', - 'stack': '*', - 'env': { - 'account': '*', - 'region': '*' - }, - 'node': '*' + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'addMethodResponse': [ + { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + } + ], + 'metric': [ + '*', + { + 'stageName': '*', + 'restApi': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + } + }, + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricClientError': [ + { + 'stageName': '*', + 'restApi': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + } + }, + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricServerError': [ + { + 'stageName': '*', + 'restApi': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + } + }, + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricCacheHitCount': [ + { + 'stageName': '*', + 'restApi': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + } + }, + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricCacheMissCount': [ + { + 'stageName': '*', + 'restApi': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + } + }, + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricCount': [ + { + 'stageName': '*', + 'restApi': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + } + }, + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricIntegrationLatency': [ + { + 'stageName': '*', + 'restApi': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + } + }, + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricLatency': [ + { + 'stageName': '*', + 'restApi': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + } }, - 'authorizationScopes': '*', - 'requestValidatorOptions': { - 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' } - } + ], + 'grantExecute': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] }, 'Model': { 'restApi': { @@ -4733,7 +7232,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4753,8 +7252,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4762,9 +7261,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -4785,20 +7284,20 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'definitions': '*', 'multipleOf': '*', 'maximum': '*', - 'exclusiveMaximum': '*', + 'exclusiveMaximum': 'boolean', 'minimum': '*', - 'exclusiveMinimum': '*', + 'exclusiveMinimum': 'boolean', 'maxLength': '*', 'minLength': '*', 'pattern': '*', 'maxItems': '*', 'minItems': '*', - 'uniqueItems': '*', + 'uniqueItems': 'boolean', 'maxProperties': '*', 'minProperties': '*', 'required': '*', 'properties': '*', - 'additionalProperties': '*', + 'additionalProperties': 'boolean', 'patternProperties': '*', 'dependencies': '*' } @@ -4822,7 +7321,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4842,8 +7341,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4851,16 +7350,16 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } }, 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' }, 'Resource': { 'parent': { @@ -4888,7 +7387,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4902,8 +7401,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4911,9 +7410,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } }, @@ -4926,7 +7425,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -4946,8 +7445,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -4955,9 +7454,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } }, @@ -4987,7 +7486,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -5001,8 +7500,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -5010,13 +7509,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } }, - 'anyMethod': '*', + 'anyMethod': 'boolean', 'defaultIntegration': '*', 'defaultMethodOptions': { 'operationName': '*', @@ -5025,7 +7524,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -5045,8 +7544,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -5054,42 +7553,77 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' - } + }, + 'addMethod': [ + '*', + '*', + { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + } + ] }, 'SpecRestApi': { 'apiDefinition': '*', 'minCompressionSize': '*', - 'deploy': '*', + 'deploy': 'boolean', 'deployOptions': { 'stageName': '*', 'accessLogDestination': '*', 'accessLogFormat': '*', - 'tracingEnabled': '*', - 'cacheClusterEnabled': '*', + 'tracingEnabled': 'boolean', + 'cacheClusterEnabled': 'boolean', 'cacheClusterSize': '*', 'clientCertificateId': '*', 'description': '*', 'documentationVersion': '*', 'variables': '*', 'methodOptions': '*', - 'metricsEnabled': '*', + 'metricsEnabled': 'boolean', 'loggingLevel': 'MethodLoggingLevel', - 'dataTraceEnabled': '*', + 'dataTraceEnabled': 'boolean', 'throttlingBurstLimit': '*', 'throttlingRateLimit': '*', - 'cachingEnabled': '*', + 'cachingEnabled': 'boolean', 'cacheTtl': '*', - 'cacheDataEncrypted': '*' + 'cacheDataEncrypted': 'boolean' }, - 'retainDeployments': '*', + 'retainDeployments': 'boolean', 'restApiName': '*', 'parameters': '*', 'policy': '*', - 'failOnWarnings': '*', + 'failOnWarnings': 'boolean', 'domainName': { 'domainName': '*', 'certificate': { @@ -5112,7 +7646,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*' @@ -5125,11 +7659,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'basePath': '*' }, - 'cloudWatchRole': '*', + 'cloudWatchRole': 'boolean', 'cloudWatchRoleRemovalPolicy': 'RemovalPolicy', 'endpointExportName': '*', 'endpointTypes': 'EndpointType', - 'disableExecuteApiEndpoint': '*', + 'disableExecuteApiEndpoint': 'boolean', 'description': '*' }, 'RestApi': { @@ -5154,7 +7688,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -5174,8 +7708,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -5183,9 +7717,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -5203,33 +7737,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'deploy': '*', + 'deploy': 'boolean', 'deployOptions': { 'stageName': '*', 'accessLogDestination': '*', 'accessLogFormat': '*', - 'tracingEnabled': '*', - 'cacheClusterEnabled': '*', + 'tracingEnabled': 'boolean', + 'cacheClusterEnabled': 'boolean', 'cacheClusterSize': '*', 'clientCertificateId': '*', 'description': '*', 'documentationVersion': '*', 'variables': '*', 'methodOptions': '*', - 'metricsEnabled': '*', + 'metricsEnabled': 'boolean', 'loggingLevel': 'MethodLoggingLevel', - 'dataTraceEnabled': '*', + 'dataTraceEnabled': 'boolean', 'throttlingBurstLimit': '*', 'throttlingRateLimit': '*', - 'cachingEnabled': '*', + 'cachingEnabled': 'boolean', 'cacheTtl': '*', - 'cacheDataEncrypted': '*' + 'cacheDataEncrypted': 'boolean' }, - 'retainDeployments': '*', + 'retainDeployments': 'boolean', 'restApiName': '*', 'parameters': '*', 'policy': '*', - 'failOnWarnings': '*', + 'failOnWarnings': 'boolean', 'domainName': { 'domainName': '*', 'certificate': { @@ -5252,7 +7786,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*' @@ -5265,11 +7799,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'basePath': '*' }, - 'cloudWatchRole': '*', + 'cloudWatchRole': 'boolean', 'cloudWatchRoleRemovalPolicy': 'RemovalPolicy', 'endpointExportName': '*', 'endpointTypes': 'EndpointType', - 'disableExecuteApiEndpoint': '*', + 'disableExecuteApiEndpoint': 'boolean', 'description': '*', 'defaultIntegration': '*', 'defaultMethodOptions': { @@ -5279,7 +7813,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -5299,8 +7833,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -5308,33 +7842,86 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' - } - }, + }, + 'addModel': [ + '*', + { + 'contentType': '*', + 'description': '*', + 'modelName': '*', + 'schema': { + 'schema': 'JsonSchemaVersion', + 'id': '*', + 'ref': '*', + 'type': 'JsonSchemaType', + 'title': '*', + 'description': '*', + 'enum': '*', + 'default': '*', + 'format': '*', + 'definitions': '*', + 'multipleOf': '*', + 'maximum': '*', + 'exclusiveMaximum': 'boolean', + 'minimum': '*', + 'exclusiveMinimum': 'boolean', + 'maxLength': '*', + 'minLength': '*', + 'pattern': '*', + 'maxItems': '*', + 'minItems': '*', + 'uniqueItems': 'boolean', + 'maxProperties': '*', + 'minProperties': '*', + 'required': '*', + 'properties': '*', + 'additionalProperties': 'boolean', + 'patternProperties': '*', + 'dependencies': '*' + } + } + ], + 'addRequestValidator': [ + '*', + { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + ], + '_attachMethod': [ + '*' + ], + '_attachDeployment': [ + '*' + ] + }, + 'RootResource': {}, 'Stage': { 'deployment': '*', 'stageName': '*', 'accessLogDestination': '*', 'accessLogFormat': '*', - 'tracingEnabled': '*', - 'cacheClusterEnabled': '*', + 'tracingEnabled': 'boolean', + 'cacheClusterEnabled': 'boolean', 'cacheClusterSize': '*', 'clientCertificateId': '*', 'description': '*', 'documentationVersion': '*', 'variables': '*', 'methodOptions': '*', - 'metricsEnabled': '*', + 'metricsEnabled': 'boolean', 'loggingLevel': 'MethodLoggingLevel', - 'dataTraceEnabled': '*', + 'dataTraceEnabled': 'boolean', 'throttlingBurstLimit': '*', 'throttlingRateLimit': '*', - 'cachingEnabled': '*', + 'cachingEnabled': 'boolean', 'cacheTtl': '*', - 'cacheDataEncrypted': '*' + 'cacheDataEncrypted': 'boolean' }, 'StepFunctionsRestApi': { 'stateMachine': { @@ -5352,29 +7939,29 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } }, 'requestContext': { - 'accountId': '*', - 'apiId': '*', - 'apiKey': '*', - 'authorizerPrincipalId': '*', - 'caller': '*', - 'cognitoAuthenticationProvider': '*', - 'cognitoAuthenticationType': '*', - 'cognitoIdentityId': '*', - 'cognitoIdentityPoolId': '*', - 'httpMethod': '*', - 'stage': '*', - 'sourceIp': '*', - 'user': '*', - 'userAgent': '*', - 'userArn': '*', - 'requestId': '*', - 'resourceId': '*', - 'resourcePath': '*' - }, - 'querystring': '*', - 'path': '*', - 'headers': '*', - 'authorizer': '*', + 'accountId': 'boolean', + 'apiId': 'boolean', + 'apiKey': 'boolean', + 'authorizerPrincipalId': 'boolean', + 'caller': 'boolean', + 'cognitoAuthenticationProvider': 'boolean', + 'cognitoAuthenticationType': 'boolean', + 'cognitoIdentityId': 'boolean', + 'cognitoIdentityPoolId': 'boolean', + 'httpMethod': 'boolean', + 'stage': 'boolean', + 'sourceIp': 'boolean', + 'user': 'boolean', + 'userAgent': 'boolean', + 'userArn': 'boolean', + 'requestId': 'boolean', + 'resourceId': 'boolean', + 'resourcePath': 'boolean' + }, + 'querystring': 'boolean', + 'path': 'boolean', + 'headers': 'boolean', + 'authorizer': 'boolean', 'role': { 'roleArn': '*', 'roleName': '*', @@ -5392,7 +7979,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'useDefaultMethodResponses': '*', + 'useDefaultMethodResponses': 'boolean', 'binaryMediaTypes': '*', 'minimumCompressionSize': '*', 'minCompressionSize': '*', @@ -5414,7 +8001,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -5434,8 +8021,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -5443,9 +8030,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -5463,33 +8050,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'deploy': '*', + 'deploy': 'boolean', 'deployOptions': { 'stageName': '*', 'accessLogDestination': '*', 'accessLogFormat': '*', - 'tracingEnabled': '*', - 'cacheClusterEnabled': '*', + 'tracingEnabled': 'boolean', + 'cacheClusterEnabled': 'boolean', 'cacheClusterSize': '*', 'clientCertificateId': '*', 'description': '*', 'documentationVersion': '*', 'variables': '*', 'methodOptions': '*', - 'metricsEnabled': '*', + 'metricsEnabled': 'boolean', 'loggingLevel': 'MethodLoggingLevel', - 'dataTraceEnabled': '*', + 'dataTraceEnabled': 'boolean', 'throttlingBurstLimit': '*', 'throttlingRateLimit': '*', - 'cachingEnabled': '*', + 'cachingEnabled': 'boolean', 'cacheTtl': '*', - 'cacheDataEncrypted': '*' + 'cacheDataEncrypted': 'boolean' }, - 'retainDeployments': '*', + 'retainDeployments': 'boolean', 'restApiName': '*', 'parameters': '*', 'policy': '*', - 'failOnWarnings': '*', + 'failOnWarnings': 'boolean', 'domainName': { 'domainName': '*', 'certificate': { @@ -5512,7 +8099,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*' @@ -5525,11 +8112,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'basePath': '*' }, - 'cloudWatchRole': '*', + 'cloudWatchRole': 'boolean', 'cloudWatchRoleRemovalPolicy': 'RemovalPolicy', 'endpointExportName': '*', 'endpointTypes': 'EndpointType', - 'disableExecuteApiEndpoint': '*', + 'disableExecuteApiEndpoint': 'boolean', 'description': '*', 'defaultIntegration': '*', 'defaultMethodOptions': { @@ -5539,7 +8126,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -5559,8 +8146,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -5568,9 +8155,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } }, @@ -5594,7 +8181,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizerId': '*', 'authorizationType': 'AuthorizationType' }, - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'methodResponses': { 'statusCode': '*', 'responseParameters': '*', @@ -5614,8 +8201,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'authorizationScopes': '*', 'requestValidatorOptions': { 'requestValidatorName': '*', - 'validateRequestBody': '*', - 'validateRequestParameters': '*' + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' } }, 'defaultCorsPreflightOptions': { @@ -5623,9 +8210,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowOrigins': '*', 'allowHeaders': '*', 'allowMethods': '*', - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'maxAge': '*', - 'disableCache': '*', + 'disableCache': 'boolean', 'exposeHeaders': '*' } } @@ -5658,7 +8245,72 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } + }, + 'addApiStage': [ + { + 'api': { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + }, + 'throttle': { + 'method': '*', + 'throttle': { + 'rateLimit': '*', + 'burstLimit': '*' + } + } + } + ] }, 'VpcLink': { 'vpcLinkName': '*', @@ -5694,7 +8346,41 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'loadBalancerDnsName': '*', 'loadBalancerArn': '*', 'connections': '*' - } + }, + 'addTargets': [ + { + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'metrics': '*', + 'securityGroups': '*', + 'ipAddressType': 'IpAddressType', + 'enforceSecurityGroupInboundRulesOnPrivateLinkTraffic': '*', + 'loadBalancerCanonicalHostedZoneId': '*', + 'loadBalancerDnsName': '*', + 'loadBalancerArn': '*', + 'connections': '*' + } + ] } }, 'aws-cdk-lib.aws-appconfig': { @@ -5756,7 +8442,55 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'resourceId': '*', 'scalableDimension': '*', - 'serviceNamespace': 'ServiceNamespace' + 'serviceNamespace': 'ServiceNamespace', + 'addToRolePolicy': [ + '*' + ], + 'scaleOnSchedule': [ + '*', + { + 'schedule': '*', + 'startTime': '*', + 'minCapacity': '*', + 'maxCapacity': '*', + 'timeZone': '*' + } + ], + 'scaleOnMetric': [ + '*', + { + 'metric': { + 'warnings': '*', + 'warningsV2': '*' + }, + 'scalingSteps': { + 'lower': '*', + 'upper': '*', + 'change': '*' + }, + 'adjustmentType': 'AdjustmentType', + 'cooldown': '*', + 'minAdjustmentMagnitude': '*', + 'evaluationPeriods': '*', + 'datapointsToAlarm': '*', + 'metricAggregationType': 'MetricAggregationType' + } + ], + 'scaleToTrackMetric': [ + '*', + { + 'targetValue': '*', + 'predefinedMetric': 'PredefinedMetric', + 'resourceLabel': '*', + 'customMetric': { + 'warnings': '*', + 'warningsV2': '*' + }, + 'policyName': '*', + 'disableScaleIn': 'boolean', + 'scaleInCooldown': '*' + } + ] } }, 'aws-cdk-lib.aws-appmesh': { @@ -5829,7 +8563,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'accessLog': '*', 'backendDefaults': { 'tlsClientPolicy': { - 'enforce': '*', + 'enforce': 'boolean', 'ports': '*', 'validation': { 'trust': '*', @@ -5857,7 +8591,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'accessLog': '*', 'backendDefaults': { 'tlsClientPolicy': { - 'enforce': '*', + 'enforce': 'boolean', 'ports': '*', 'validation': { 'trust': '*', @@ -5865,7 +8599,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'mutualTlsCertificate': '*' } - } + }, + 'addListener': [ + '*' + ], + 'addBackend': [ + '*' + ] }, 'VirtualRouter': { 'mesh': { @@ -5899,16 +8639,169 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'account': '*', 'region': '*' }, - 'node': '*' - }, - 'dataSource': '*', - 'name': '*', - 'description': '*', - 'requestMappingTemplate': '*', - 'responseMappingTemplate': '*', - 'runtime': '*', - 'code': '*', - 'maxBatchSize': '*' + 'node': '*' + }, + 'dataSource': '*', + 'name': '*', + 'description': '*', + 'requestMappingTemplate': '*', + 'responseMappingTemplate': '*', + 'runtime': '*', + 'code': '*', + 'maxBatchSize': '*' + }, + 'ChannelNamespace': { + 'api': { + 'authProviderTypes': 'AppSyncAuthorizationType', + 'httpDns': '*', + 'realtimeDns': '*', + 'apiId': '*', + 'apiArn': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'channelNamespaceName': '*', + 'code': '*', + 'authorizationConfig': { + 'publishAuthModeTypes': 'AppSyncAuthorizationType', + 'subscribeAuthModeTypes': 'AppSyncAuthorizationType' + }, + 'grantSubscribe': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'grantPublish': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'grantPublishAndSubscribe': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] + }, + 'EventApi': { + 'apiName': '*', + 'authorizationConfig': { + 'authProviders': { + 'authorizationType': 'AppSyncAuthorizationType', + 'cognitoConfig': { + 'userPool': { + 'userPoolId': '*', + 'userPoolArn': '*', + 'userPoolProviderName': '*', + 'identityProviders': { + 'providerName': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + }, + 'appIdClientRegex': '*' + }, + 'apiKeyConfig': { + 'name': '*', + 'description': '*', + 'expires': '*' + }, + 'openIdConnectConfig': { + 'tokenExpiryFromAuth': '*', + 'tokenExpiryFromIssue': '*', + 'clientId': '*', + 'oidcProvider': '*' + }, + 'lambdaAuthorizerConfig': { + 'handler': { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + }, + 'isBoundToVpc': 'boolean', + 'latestVersion': { + 'version': '*', + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'resourceArnsForGrantInvoke': '*' + }, + 'resultsCacheTtl': '*', + 'validationRegex': '*' + } + }, + 'connectionAuthModeTypes': 'AppSyncAuthorizationType', + 'defaultPublishAuthModeTypes': 'AppSyncAuthorizationType', + 'defaultSubscribeAuthModeTypes': 'AppSyncAuthorizationType' + }, + 'logConfig': { + 'excludeVerboseContent': 'boolean', + 'fieldLogLevel': 'AppSyncFieldLogLevel', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'retention': 'RetentionDays' + }, + 'ownerContact': '*', + 'domainName': { + 'certificate': { + 'certificateArn': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'domainName': '*' + } }, 'GraphqlApi': { 'name': '*', @@ -5959,13 +8852,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'principalAccount': '*' } }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -5978,7 +8871,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } }, 'logConfig': { - 'excludeVerboseContent': '*', + 'excludeVerboseContent': 'boolean', 'fieldLogLevel': 'FieldLogLevel', 'role': { 'roleArn': '*', @@ -6001,7 +8894,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'definition': '*', 'schema': '*', - 'xrayEnabled': '*', + 'xrayEnabled': 'boolean', 'visibility': 'Visibility', 'domainName': { 'certificate': { @@ -6019,7 +8912,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'queryDepthLimit': '*', 'resolverCountLimit': '*', 'environmentVariables': '*', - 'ownerContact': '*' + 'ownerContact': '*', + 'addSchemaDependency': [ + '*' + ], + 'addEnvironmentVariable': [ + '*', + '*' + ] }, 'SourceApiAssociation': { 'sourceApi': { @@ -6143,7 +9043,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'localStorageTypes': '*', 'maxSpotPriceAsPercentageOfOptimalOnDemandPrice': '*', 'onDemandMaxPricePercentageOverLowestPrice': '*', - 'requireHibernateSupport': '*', + 'requireHibernateSupport': 'boolean', 'spotMaxPricePercentageOverLowestPrice': '*' }, 'instanceType': '*', @@ -6154,14 +9054,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'machineImage': '*', 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -6186,13 +9086,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'init': '*', 'initOptions': { 'configSets': '*', - 'embedFingerprint': '*', - 'printLog': '*', - 'ignoreFailures': '*', - 'includeUrl': '*', - 'includeRole': '*' + 'embedFingerprint': 'boolean', + 'printLog': 'boolean', + 'ignoreFailures': 'boolean', + 'includeUrl': 'boolean', + 'includeRole': 'boolean' }, - 'requireImdsv2': '*', + 'requireImdsv2': 'boolean', 'maxHealthyPercentage': '*', 'minHealthyPercentage': '*', 'minCapacity': '*', @@ -6214,7 +9114,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -6235,8 +9135,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'notificationsTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -6248,8 +9148,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'topic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -6259,42 +9159,99 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'scalingEvents': '*' }, - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'updateType': 'UpdateType', 'rollingUpdateConfiguration': { 'maxBatchSize': '*', 'minInstancesInService': '*', 'minSuccessfulInstancesPercent': '*', 'pauseTime': '*', - 'waitOnResourceSignals': '*', + 'waitOnResourceSignals': 'boolean', 'suspendProcesses': 'ScalingProcess' }, 'replacingUpdateMinSuccessfulInstancesPercent': '*', - 'ignoreUnmodifiedSizeProperties': '*', + 'ignoreUnmodifiedSizeProperties': 'boolean', 'resourceSignalCount': '*', 'resourceSignalTimeout': '*', 'cooldown': '*', - 'associatePublicIpAddress': '*', + 'associatePublicIpAddress': 'boolean', 'spotPrice': '*', 'healthCheck': '*', 'blockDevices': { 'deviceName': '*', 'volume': '*', - 'mappingEnabled': '*' + 'mappingEnabled': 'boolean' }, 'maxInstanceLifetime': '*', 'instanceMonitoring': 'Monitoring', 'groupMetrics': '*', 'signals': '*', 'updatePolicy': '*', - 'newInstancesProtectedFromScaleIn': '*', + 'newInstancesProtectedFromScaleIn': 'boolean', 'autoScalingGroupName': '*', 'terminationPolicies': 'TerminationPolicy', 'terminationPolicyCustomLambdaFunctionArn': '*', 'defaultInstanceWarmup': '*', - 'capacityRebalance': '*', - 'ssmSessionPermissions': '*', - 'azCapacityDistributionStrategy': 'CapacityDistributionStrategy' + 'capacityRebalance': 'boolean', + 'ssmSessionPermissions': 'boolean', + 'azCapacityDistributionStrategy': 'CapacityDistributionStrategy', + 'addSecurityGroup': [ + { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + ], + 'attachToClassicLB': [ + '*' + ], + 'attachToApplicationTargetGroup': [ + { + 'metrics': '*', + 'targetGroupName': '*', + 'targetGroupArn': '*', + 'loadBalancerArns': '*', + 'loadBalancerAttached': '*', + 'node': '*' + } + ], + 'attachToNetworkTargetGroup': [ + { + 'metrics': '*', + 'targetGroupName': '*', + 'targetGroupArn': '*', + 'loadBalancerArns': '*', + 'loadBalancerAttached': '*', + 'node': '*' + } + ], + 'addUserData': [ + '*' + ], + 'addToRolePolicy': [ + '*' + ], + 'applyCloudFormationInit': [ + '*', + { + 'configSets': '*', + 'embedFingerprint': 'boolean', + 'printLog': 'boolean', + 'ignoreFailures': 'boolean', + 'includeUrl': 'boolean', + 'includeRole': 'boolean' + } + ], + 'protectNewInstancesFromScaleIn': [], + 'areNewInstancesProtectedFromScaleIn': [] }, 'LifecycleHook': { 'autoScalingGroup': { @@ -6379,7 +9336,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'principalAccount': '*' } }, - 'reuseOnScaleIn': '*', + 'reuseOnScaleIn': 'boolean', 'maxGroupPreparedCapacity': '*', 'minSize': '*', 'poolState': 'PoolState' @@ -6399,7 +9356,36 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'backupPlanRules': '*', - 'windowsVss': '*' + 'windowsVss': 'boolean', + 'addRule': [ + '*' + ], + 'addSelection': [ + '*', + { + 'resources': '*', + 'backupSelectionName': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'disableDefaultBackupPolicy': 'boolean', + 'allowRestores': 'boolean' + } + ] }, 'BackupSelection': { 'backupPlan': { @@ -6430,8 +9416,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'disableDefaultBackupPolicy': '*', - 'allowRestores': '*' + 'disableDefaultBackupPolicy': 'boolean', + 'allowRestores': 'boolean' }, 'BackupVault': { 'backupVaultName': '*', @@ -6449,8 +9435,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'notificationTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -6460,10 +9446,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'notificationEvents': 'BackupVaultEvents', 'removalPolicy': 'RemovalPolicy', - 'blockRecoveryPointDeletion': '*', + 'blockRecoveryPointDeletion': [], 'lockConfiguration': { 'minRetention': '*' - } + }, + 'addToAccessPolicy': [ + '*' + ] } }, 'aws-cdk-lib.aws-batch': { @@ -6500,23 +9489,67 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'valueFrom': '*' } }, - 'readonlyRootFilesystem': '*', + 'readonlyRootFilesystem': 'boolean', 'secrets': '*', 'user': '*', 'volumes': '*' }, - 'propagateTags': '*', + 'propagateTags': 'boolean', 'jobDefinitionName': '*', 'parameters': '*', 'retryAttempts': '*', 'retryStrategies': '*', 'schedulingPriority': '*', - 'timeout': '*' + 'timeout': '*', + 'grantSubmitJob': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + { + 'jobQueueName': '*', + 'jobQueueArn': '*', + 'computeEnvironments': { + 'computeEnvironment': { + 'computeEnvironmentName': '*', + 'computeEnvironmentArn': '*', + 'serviceRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'enabled': 'boolean' + }, + 'order': '*' + }, + 'priority': '*', + 'enabled': 'boolean', + 'schedulingPolicy': { + 'schedulingPolicyName': '*', + 'schedulingPolicyArn': '*' + } + } + ] }, 'EksJobDefinition': { 'container': '*', 'dnsPolicy': 'DnsPolicy', - 'useHostNetwork': '*', + 'useHostNetwork': 'boolean', 'serviceAccount': '*', 'jobDefinitionName': '*', 'parameters': '*', @@ -6525,8 +9558,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'schedulingPriority': '*', 'timeout': '*' }, + 'JobQueue': {}, 'ManagedEc2EcsComputeEnvironment': { - 'useOptimalInstanceClasses': '*', + 'useOptimalInstanceClasses': 'boolean', 'images': { 'imageType': 'EcsMachineImageType', 'image': '*' @@ -6594,10 +9628,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'maxvCpus': '*', - 'replaceComputeEnvironment': '*', - 'spot': '*', + 'replaceComputeEnvironment': 'boolean', + 'spot': 'boolean', 'updateTimeout': '*', - 'terminateOnUpdate': '*', + 'terminateOnUpdate': 'boolean', 'vpc': { 'vpcId': '*', 'vpcArn': '*', @@ -6622,14 +9656,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -6638,7 +9672,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -6656,7 +9690,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'updateToLatestImageVersion': '*', + 'updateToLatestImageVersion': 'boolean', 'computeEnvironmentName': '*', 'serviceRole': { 'roleArn': '*', @@ -6675,7 +9709,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enabled': '*' + 'enabled': 'boolean', + 'addInstanceType': [ + '*' + ], + 'addInstanceClass': [ + 'InstanceClass' + ] }, 'ManagedEc2EksComputeEnvironment': { 'kubernetesNamespace': '*', @@ -6709,8 +9749,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterSecurityGroupId': '*', 'clusterSecurityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', - 'canInlineRule': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -6745,10 +9785,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'roleArn': '*' }, 'kubectlMemory': '*', - 'prune': '*', + 'prune': 'boolean', 'authenticationMode': 'AuthenticationMode' }, - 'useOptimalInstanceClasses': '*', + 'useOptimalInstanceClasses': 'boolean', 'images': { 'imageType': 'EksMachineImageType', 'image': '*' @@ -6799,10 +9839,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'maxvCpus': '*', - 'replaceComputeEnvironment': '*', - 'spot': '*', + 'replaceComputeEnvironment': 'boolean', + 'spot': 'boolean', 'updateTimeout': '*', - 'terminateOnUpdate': '*', + 'terminateOnUpdate': 'boolean', 'vpc': { 'vpcId': '*', 'vpcArn': '*', @@ -6827,14 +9867,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -6843,7 +9883,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -6861,7 +9901,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'updateToLatestImageVersion': '*', + 'updateToLatestImageVersion': 'boolean', 'computeEnvironmentName': '*', 'serviceRole': { 'roleArn': '*', @@ -6880,14 +9920,20 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enabled': '*' + 'enabled': 'boolean', + 'addInstanceType': [ + '*' + ], + 'addInstanceClass': [ + 'InstanceClass' + ] }, 'FargateComputeEnvironment': { 'maxvCpus': '*', - 'replaceComputeEnvironment': '*', - 'spot': '*', + 'replaceComputeEnvironment': 'boolean', + 'spot': 'boolean', 'updateTimeout': '*', - 'terminateOnUpdate': '*', + 'terminateOnUpdate': 'boolean', 'vpc': { 'vpcId': '*', 'vpcArn': '*', @@ -6912,14 +9958,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -6928,7 +9974,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -6946,7 +9992,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'updateToLatestImageVersion': '*', + 'updateToLatestImageVersion': 'boolean', 'computeEnvironmentName': '*', 'serviceRole': { 'roleArn': '*', @@ -6965,8 +10011,62 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enabled': '*' - } + 'enabled': 'boolean' + }, + 'MultiNodeJobDefinition': { + 'addContainer': [ + { + 'startNode': '*', + 'endNode': '*', + 'container': { + 'image': '*', + 'cpu': '*', + 'memory': '*', + 'command': '*', + 'environment': '*', + 'executionRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'linuxParameters': '*', + 'logDriverConfig': { + 'logDriver': '*', + 'options': '*', + 'secretOptions': { + 'name': '*', + 'valueFrom': '*' + } + }, + 'readonlyRootFilesystem': 'boolean', + 'secrets': '*', + 'user': '*', + 'volumes': '*' + } + } + ] + }, + 'FairshareSchedulingPolicy': { + 'addShare': [ + { + 'shareIdentifier': '*', + 'weightFactor': '*' + } + ] + }, + 'UnmanagedComputeEnvironment': {} }, 'aws-cdk-lib.aws-certificatemanager': { 'Certificate': { @@ -6975,7 +10075,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'validationDomains': '*', 'validationMethod': 'ValidationMethod', 'validation': '*', - 'transparencyLoggingEnabled': '*', + 'transparencyLoggingEnabled': 'boolean', 'certificateName': '*', 'keyAlgorithm': '*' }, @@ -7011,15 +10111,18 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'cleanupRoute53Records': '*', + 'cleanupRoute53Records': 'boolean', 'domainName': '*', 'subjectAlternativeNames': '*', 'validationDomains': '*', 'validationMethod': 'ValidationMethod', 'validation': '*', - 'transparencyLoggingEnabled': '*', + 'transparencyLoggingEnabled': 'boolean', 'certificateName': '*', - 'keyAlgorithm': '*' + 'keyAlgorithm': '*', + 'applyRemovalPolicy': [ + 'RemovalPolicy' + ] }, 'PrivateCertificate': { 'domainName': '*', @@ -7061,8 +10164,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'notificationTopics': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -7096,7 +10199,21 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'guardrailPolicies': { 'managedPolicyArn': '*' }, - 'userRoleRequired': '*' + 'userRoleRequired': 'boolean', + 'addNotificationTopic': [ + { + 'topicArn': '*', + 'topicName': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] } }, 'aws-cdk-lib.aws-cloudformation': { @@ -7117,8 +10234,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'cookieBehavior': '*', 'headerBehavior': '*', 'queryStringBehavior': '*', - 'enableAcceptEncodingGzip': '*', - 'enableAcceptEncodingBrotli': '*' + 'enableAcceptEncodingGzip': 'boolean', + 'enableAcceptEncodingBrotli': 'boolean' }, 'Distribution': { 'defaultBehavior': { @@ -7128,7 +10245,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'cachePolicy': { 'cachePolicyId': '*' }, - 'compress': '*', + 'compress': 'boolean', 'originRequestPolicy': { 'originRequestPolicyId': '*' }, @@ -7145,7 +10262,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'responseHeadersPolicy': { 'responseHeadersPolicyId': '*' }, - 'smoothStreaming': '*', + 'smoothStreaming': 'boolean', 'viewerProtocolPolicy': 'ViewerProtocolPolicy', 'functionAssociations': { 'function': { @@ -7171,7 +10288,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'principalAccount': '*' } }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -7179,11 +10296,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'resourceArnsForGrantInvoke': '*' }, 'eventType': 'LambdaEdgeEventType', - 'includeBody': '*' + 'includeBody': 'boolean' }, 'trustedKeyGroups': { 'keyGroupId': '*' @@ -7202,9 +10319,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'comment': '*', 'defaultRootObject': '*', 'domainNames': '*', - 'enabled': '*', - 'enableIpv6': '*', - 'enableLogging': '*', + 'enabled': 'boolean', + 'enableIpv6': 'boolean', + 'enableLogging': 'boolean', 'geoRestriction': '*', 'httpVersion': 'HttpVersion', 'logBucket': { @@ -7215,7 +10332,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -7229,7 +10346,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'policy': '*', 'replicationRoleArn': '*' }, - 'logIncludesCookies': '*', + 'logIncludesCookies': 'boolean', 'logFilePrefix': '*', 'priceClass': 'PriceClass', 'webAclId': '*', @@ -7241,7 +10358,326 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'minimumProtocolVersion': 'SecurityPolicyProtocol', 'sslSupportMethod': 'SSLMethod', - 'publishAdditionalMetrics': '*' + 'publishAdditionalMetrics': 'boolean', + 'metric': [ + '*', + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricRequests': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricBytesUploaded': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricBytesDownloaded': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricTotalErrorRate': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metric4xxErrorRate': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metric5xxErrorRate': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricOriginLatency': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricCacheHitRate': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metric401ErrorRate': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metric403ErrorRate': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metric404ErrorRate': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metric502ErrorRate': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metric503ErrorRate': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metric504ErrorRate': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'addBehavior': [ + '*', + '*', + { + 'allowedMethods': '*', + 'cachedMethods': '*', + 'cachePolicy': { + 'cachePolicyId': '*' + }, + 'compress': 'boolean', + 'originRequestPolicy': { + 'originRequestPolicyId': '*' + }, + 'realtimeLogConfig': { + 'realtimeLogConfigName': '*', + 'realtimeLogConfigArn': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'responseHeadersPolicy': { + 'responseHeadersPolicyId': '*' + }, + 'smoothStreaming': 'boolean', + 'viewerProtocolPolicy': 'ViewerProtocolPolicy', + 'functionAssociations': { + 'function': { + 'functionName': '*', + 'functionArn': '*' + }, + 'eventType': 'FunctionEventType' + }, + 'edgeLambdas': { + 'functionVersion': { + 'version': '*', + 'lambda': { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + }, + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'resourceArnsForGrantInvoke': '*' + }, + 'eventType': 'LambdaEdgeEventType', + 'includeBody': 'boolean' + }, + 'trustedKeyGroups': { + 'keyGroupId': '*' + } + } + ], + 'grant': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + '*' + ], + 'grantCreateInvalidation': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'attachWebAclId': [ + '*' + ] }, 'Function': { 'functionName': '*', @@ -7259,7 +10695,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'autoPublish': '*' + 'autoPublish': 'boolean' }, 'KeyGroup': { 'keyGroupName': '*', @@ -7274,6 +10710,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, + 'KeyValueStore': {}, 'S3OriginAccessControl': { 'description': '*', 'originAccessControlName': '*', @@ -7284,6 +10721,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'originAccessControlName': '*', 'signing': '*' }, + 'OriginAccessIdentity': {}, 'OriginRequestPolicy': { 'originRequestPolicyName': '*', 'comment': '*', @@ -7306,47 +10744,47 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'responseHeadersPolicyName': '*', 'comment': '*', 'corsBehavior': { - 'accessControlAllowCredentials': '*', + 'accessControlAllowCredentials': 'boolean', 'accessControlAllowHeaders': '*', 'accessControlAllowMethods': '*', 'accessControlAllowOrigins': '*', 'accessControlExposeHeaders': '*', 'accessControlMaxAge': '*', - 'originOverride': '*' + 'originOverride': 'boolean' }, 'customHeadersBehavior': { 'customHeaders': { 'header': '*', - 'override': '*', + 'override': 'boolean', 'value': '*' } }, 'securityHeadersBehavior': { 'contentSecurityPolicy': { 'contentSecurityPolicy': '*', - 'override': '*' + 'override': 'boolean' }, 'contentTypeOptions': { - 'override': '*' + 'override': 'boolean' }, 'frameOptions': { 'frameOption': 'HeadersFrameOption', - 'override': '*' + 'override': 'boolean' }, 'referrerPolicy': { 'referrerPolicy': 'HeadersReferrerPolicy', - 'override': '*' + 'override': 'boolean' }, 'strictTransportSecurity': { 'accessControlMaxAge': '*', - 'includeSubdomains': '*', - 'override': '*', - 'preload': '*' + 'includeSubdomains': 'boolean', + 'override': 'boolean', + 'preload': 'boolean' }, 'xssProtection': { - 'modeBlock': '*', - 'override': '*', - 'protection': '*', + 'modeBlock': 'boolean', + 'override': 'boolean', + 'protection': 'boolean', 'reportUri': '*' } }, @@ -7361,9 +10799,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'securityPolicy': 'SecurityPolicyProtocol' }, 'comment': '*', - 'enabled': '*', + 'enabled': 'boolean', 'defaultRootObject': '*', - 'enableIpV6': '*', + 'enableIpV6': 'boolean', 'httpVersion': 'HttpVersion', 'priceClass': 'PriceClass', 'viewerProtocolPolicy': 'ViewerProtocolPolicy', @@ -7379,7 +10817,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -7418,8 +10856,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'failoverCriteriaStatusCodes': 'FailoverStatusCode', 'behaviors': { - 'compress': '*', - 'isDefaultBehavior': '*', + 'compress': 'boolean', + 'isDefaultBehavior': 'boolean', 'trustedSigners': '*', 'trustedKeyGroups': { 'keyGroupId': '*' @@ -7433,7 +10871,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'typeHint': 'ResolutionTypeHint' }, 'headers': '*', - 'queryString': '*', + 'queryString': 'boolean', 'queryStringCacheKeys': '*' }, 'lambdaFunctionAssociations': { @@ -7449,7 +10887,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'assumeRoleAction': '*', 'principalAccount': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -7457,10 +10895,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'resourceArnsForGrantInvoke': '*' }, - 'includeBody': '*' + 'includeBody': 'boolean' }, 'functionAssociations': { 'function': { @@ -7484,7 +10922,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -7498,7 +10936,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'policy': '*', 'replicationRoleArn': '*' }, - 'includeCookies': '*', + 'includeCookies': 'boolean', 'prefix': '*' }, 'errorConfigurations': { @@ -7509,16 +10947,26 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'webACLId': '*', 'viewerCertificate': '*', - 'geoRestriction': '*' + 'geoRestriction': '*', + 'grant': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + '*' + ] } }, 'aws-cdk-lib.aws-cloudtrail': { 'Trail': { - 'includeGlobalServiceEvents': '*', - 'isMultiRegionTrail': '*', + 'includeGlobalServiceEvents': 'boolean', + 'isMultiRegionTrail': 'boolean', 'managementEvents': 'ReadWriteType', - 'enableFileValidation': '*', - 'sendToCloudWatchLogs': '*', + 'enableFileValidation': 'boolean', + 'sendToCloudWatchLogs': 'boolean', 'cloudWatchLogsRetention': 'RetentionDays', 'cloudWatchLogGroup': { 'logGroupArn': '*', @@ -7553,8 +11001,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'snsTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -7572,7 +11020,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -7586,9 +11034,124 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'policy': '*', 'replicationRoleArn': '*' }, - 'isOrganizationTrail': '*', + 'isOrganizationTrail': 'boolean', 'orgId': '*', - 'insightTypes': '*' + 'insightTypes': '*', + 'addEventSelector': [ + 'DataResourceType', + '*', + { + 'readWriteType': 'ReadWriteType', + 'includeManagementEvents': 'boolean', + 'excludeManagementEventSources': 'ManagementEventSources' + } + ], + 'addLambdaEventSelector': [ + { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'isBoundToVpc': 'boolean', + 'latestVersion': { + 'version': '*', + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'resourceArnsForGrantInvoke': '*' + }, + { + 'readWriteType': 'ReadWriteType', + 'includeManagementEvents': 'boolean', + 'excludeManagementEventSources': 'ManagementEventSources' + } + ], + 'logAllLambdaDataEvents': [ + { + 'readWriteType': 'ReadWriteType', + 'includeManagementEvents': 'boolean', + 'excludeManagementEventSources': 'ManagementEventSources' + } + ], + 'addS3EventSelector': [ + { + 'bucket': { + 'bucketArn': '*', + 'bucketName': '*', + 'bucketWebsiteUrl': '*', + 'bucketWebsiteDomainName': '*', + 'bucketDomainName': '*', + 'bucketDualStackDomainName': '*', + 'bucketRegionalDomainName': '*', + 'isWebsite': 'boolean', + 'encryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'policy': '*', + 'replicationRoleArn': '*' + }, + 'objectPrefix': '*' + }, + { + 'readWriteType': 'ReadWriteType', + 'includeManagementEvents': 'boolean', + 'excludeManagementEventSources': 'ManagementEventSources' + } + ], + 'logAllS3DataEvents': [ + { + 'readWriteType': 'ReadWriteType', + 'includeManagementEvents': 'boolean', + 'excludeManagementEventSources': 'ManagementEventSources' + } + ], + 'onCloudTrailEvent': [ + '*', + { + 'target': '*', + 'description': '*', + 'ruleName': '*', + 'eventPattern': { + 'version': '*', + 'id': '*', + 'detailType': '*', + 'source': '*', + 'account': '*', + 'time': '*', + 'region': '*', + 'resources': '*', + 'detail': '*' + }, + 'crossStackScope': '*' + } + ] } }, 'aws-cdk-lib.aws-cloudwatch': { @@ -7606,11 +11169,15 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'evaluationPeriods': '*', 'evaluateLowSampleCountPercentile': '*', 'treatMissingData': 'TreatMissingData', - 'actionsEnabled': '*', - 'datapointsToAlarm': '*' + 'actionsEnabled': 'boolean', + 'datapointsToAlarm': '*', + 'toAnnotation': [], + 'addAlarmAction': [ + '*' + ] }, 'CompositeAlarm': { - 'actionsEnabled': '*', + 'actionsEnabled': 'boolean', 'alarmDescription': '*', 'compositeAlarmName': '*', 'alarmRule': '*', @@ -7639,7 +11206,18 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'warnings': '*', 'warningsV2': '*' }, - 'variables': '*' + 'variables': '*', + 'addWidgets': [ + { + 'width': '*', + 'height': '*', + 'warnings': '*', + 'warningsV2': '*' + } + ], + 'addVariable': [ + '*' + ] } }, 'aws-cdk-lib.aws-codebuild': { @@ -7649,11 +11227,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'computeType': 'FleetComputeType', 'environmentType': 'EnvironmentType' }, + 'PipelineProject': {}, 'Project': { 'source': { 'identifier': '*', 'type': '*', - 'badgeSupported': '*' + 'badgeSupported': 'boolean' }, 'artifacts': { 'identifier': '*', @@ -7662,7 +11241,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'secondarySources': { 'identifier': '*', 'type': '*', - 'badgeSupported': '*' + 'badgeSupported': 'boolean' }, 'secondaryArtifacts': { 'identifier': '*', @@ -7734,7 +11313,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'computeType': 'FleetComputeType', 'environmentType': 'EnvironmentType' }, - 'privileged': '*', + 'privileged': 'boolean', 'certificate': { 'bucket': { 'bucketArn': '*', @@ -7744,7 +11323,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'policy': '*', 'replicationRoleArn': '*' }, @@ -7752,10 +11331,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'environmentVariables': '*' }, - 'badge': '*', + 'badge': 'boolean', 'timeout': '*', 'environmentVariables': '*', - 'checkSecretsInPlainTextEnvVariables': '*', + 'checkSecretsInPlainTextEnvVariables': 'boolean', 'projectName': '*', 'vpc': { 'vpcId': '*', @@ -7784,7 +11363,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -7804,23 +11383,23 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'fileSystemLocations': '*', - 'grantReportGroupPermissions': '*', + 'grantReportGroupPermissions': 'boolean', 'logging': { 's3': { - 'encrypted': '*', + 'encrypted': 'boolean', 'bucket': { 'bucketArn': '*', 'bucketName': '*', @@ -7829,7 +11408,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -7844,7 +11423,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'replicationRoleArn': '*' }, 'prefix': '*', - 'enabled': '*' + 'enabled': 'boolean' }, 'cloudWatch': { 'logGroup': { @@ -7852,14 +11431,58 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'logGroupName': '*' }, 'prefix': '*', - 'enabled': '*' + 'enabled': 'boolean' } }, 'queuedTimeout': '*', 'concurrentBuildLimit': '*', - 'ssmSessionPermissions': '*', + 'ssmSessionPermissions': 'boolean', 'visibility': 'ProjectVisibility', - 'autoRetryLimit': '*' + 'autoRetryLimit': '*', + 'enableBatchBuilds': [], + 'addSecondarySource': [ + { + 'identifier': '*', + 'type': '*', + 'badgeSupported': 'boolean' + } + ], + 'addFileSystemLocation': [ + '*' + ], + 'addSecondaryArtifact': [ + { + 'identifier': '*', + 'type': '*' + } + ], + 'bindToCodePipeline': [ + '*', + { + 'artifactBucket': { + 'bucketArn': '*', + 'bucketName': '*', + 'bucketWebsiteUrl': '*', + 'bucketWebsiteDomainName': '*', + 'bucketDomainName': '*', + 'bucketDualStackDomainName': '*', + 'bucketRegionalDomainName': '*', + 'isWebsite': 'boolean', + 'encryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'policy': '*', + 'replicationRoleArn': '*' + } + } + ] }, 'ReportGroup': { 'reportGroupName': '*', @@ -7871,7 +11494,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -7885,10 +11508,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'policy': '*', 'replicationRoleArn': '*' }, - 'zipExport': '*', + 'zipExport': 'boolean', 'removalPolicy': 'RemovalPolicy', 'type': 'ReportGroupType', - 'deleteReports': '*' + 'deleteReports': 'boolean' }, 'GitHubSourceCredentials': { 'accessToken': '*' @@ -7919,7 +11542,16 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } + }, + 'notify': [ + '*', + { + 'name': '*', + 'events': 'RepositoryEventTrigger', + 'branches': '*', + 'customData': '*' + } + ] } }, 'aws-cdk-lib.aws-codeguruprofiler': { @@ -7938,7 +11570,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -7969,7 +11601,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'restartExecutionOnUpdate': '*', + 'restartExecutionOnUpdate': 'boolean', 'pipelineName': '*', 'crossRegionReplicationBuckets': '*', 'stages': { @@ -8012,12 +11644,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'variablesNamespace': '*' } }, - 'transitionToEnabled': '*', + 'transitionToEnabled': 'boolean', 'transitionDisabledReason': '*' }, - 'crossAccountKeys': '*', - 'enableKeyRotation': '*', - 'reuseCrossRegionSupportStacks': '*', + 'crossAccountKeys': 'boolean', + 'enableKeyRotation': 'boolean', + 'reuseCrossRegionSupportStacks': 'boolean', 'pipelineType': 'PipelineType', 'variables': '*', 'triggers': { @@ -8074,7 +11706,168 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } } }, - 'executionMode': 'ExecutionMode' + 'executionMode': 'ExecutionMode', + 'addStage': [ + { + 'placement': { + 'rightBefore': { + 'stageName': '*', + 'pipeline': { + 'pipelineName': '*', + 'pipelineArn': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'actions': { + 'actionProperties': { + 'actionName': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + }, + 'region': '*', + 'account': '*', + 'resource': '*', + 'category': 'ActionCategory', + 'provider': '*', + 'owner': '*', + 'version': '*', + 'runOrder': '*', + 'artifactBounds': { + 'minInputs': '*', + 'maxInputs': '*', + 'minOutputs': '*', + 'maxOutputs': '*' + }, + 'inputs': '*', + 'variablesNamespace': '*' + } + } + } + }, + 'stageName': '*', + 'transitionToEnabled': 'boolean', + 'transitionDisabledReason': '*' + } + ], + 'addToRolePolicy': [ + '*' + ], + 'addVariable': [ + '*' + ], + 'addTrigger': [ + { + 'providerType': 'ProviderType', + 'gitConfiguration': { + 'sourceAction': { + 'actionProperties': { + 'actionName': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'region': '*', + 'account': '*', + 'resource': '*', + 'category': 'ActionCategory', + 'provider': '*', + 'owner': '*', + 'version': '*', + 'runOrder': '*', + 'artifactBounds': { + 'minInputs': '*', + 'maxInputs': '*', + 'minOutputs': '*', + 'maxOutputs': '*' + }, + 'inputs': '*', + 'variablesNamespace': '*' + } + }, + 'pushFilter': { + 'tagsExcludes': '*', + 'tagsIncludes': '*' + }, + 'pullRequestFilter': { + 'branchesExcludes': '*', + 'branchesIncludes': '*', + 'filePathsExcludes': '*', + 'filePathsIncludes': '*', + 'events': 'GitPullRequestEvent' + } + } + } + ], + 'stage': [ + '*' + ], + '_attachActionToPipeline': [ + '*', + { + 'actionProperties': { + 'actionName': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'region': '*', + 'account': '*', + 'resource': '*', + 'category': 'ActionCategory', + 'provider': '*', + 'owner': '*', + 'version': '*', + 'runOrder': '*', + 'artifactBounds': { + 'minInputs': '*', + 'maxInputs': '*', + 'minOutputs': '*', + 'maxOutputs': '*' + }, + 'inputs': '*', + 'variablesNamespace': '*' + } + }, + '*' + ] } }, 'aws-cdk-lib.aws-codestarnotifications': { @@ -8083,9 +11876,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'source': '*', 'targets': '*', 'notificationRuleName': '*', - 'enabled': '*', + 'enabled': 'boolean', 'detailType': 'DetailType', - 'createdBy': '*' + 'createdBy': '*', + 'addTarget': [ + '*' + ] } }, 'aws-cdk-lib.aws-cognito': { @@ -8105,20 +11901,20 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } }, 'userPoolClientName': '*', - 'generateSecret': '*', + 'generateSecret': 'boolean', 'authFlows': { - 'adminUserPassword': '*', - 'custom': '*', - 'userPassword': '*', - 'userSrp': '*', - 'user': '*' + 'adminUserPassword': 'boolean', + 'custom': 'boolean', + 'userPassword': 'boolean', + 'userSrp': 'boolean', + 'user': 'boolean' }, - 'disableOAuth': '*', + 'disableOAuth': 'boolean', 'oAuth': { 'flows': { - 'authorizationCodeGrant': '*', - 'implicitCodeGrant': '*', - 'clientCredentials': '*' + 'authorizationCodeGrant': 'boolean', + 'implicitCodeGrant': 'boolean', + 'clientCredentials': 'boolean' }, 'callbackUrls': '*', 'logoutUrls': '*', @@ -8126,15 +11922,15 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'defaultRedirectUri': '*' }, 'authSessionValidity': '*', - 'preventUserExistenceErrors': '*', + 'preventUserExistenceErrors': 'boolean', 'supportedIdentityProviders': '*', 'idTokenValidity': '*', 'refreshTokenValidity': '*', 'accessTokenValidity': '*', 'readAttributes': '*', 'writeAttributes': '*', - 'enableTokenRevocation': '*', - 'enablePropagateAdditionalUserContextData': '*' + 'enableTokenRevocation': 'boolean', + 'enablePropagateAdditionalUserContextData': 'boolean' }, 'UserPoolDomain': { 'userPool': { @@ -8165,7 +11961,21 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'cognitoDomain': { 'domainPrefix': '*' - } + }, + 'managedLoginVersion': 'ManagedLoginVersion', + 'baseUrl': [ + { + 'fips': 'boolean' + } + ], + 'signInUrl': [ + '*', + { + 'redirectUri': '*', + 'signInPath': '*', + 'fips': 'boolean' + } + ] }, 'UserPoolGroup': { 'userPool': { @@ -8224,7 +12034,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'UserPool': { 'userPoolName': '*', - 'selfSignUpEnabled': '*', + 'selfSignUpEnabled': 'boolean', 'userVerification': { 'emailSubject': '*', 'emailBody': '*', @@ -8255,42 +12065,43 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'smsRoleExternalId': '*', 'snsRegion': '*', - 'enableSmsRole': '*', + 'enableSmsRole': 'boolean', 'signInAliases': { - 'username': '*', - 'email': '*', - 'phone': '*', - 'preferredUsername': '*' + 'username': 'boolean', + 'email': 'boolean', + 'phone': 'boolean', + 'preferredUsername': 'boolean' }, 'autoVerify': { - 'email': '*', - 'phone': '*' + 'email': 'boolean', + 'phone': 'boolean' }, 'keepOriginal': { - 'email': '*', - 'phone': '*' + 'email': 'boolean', + 'phone': 'boolean' }, 'standardAttributes': { 'address': { - 'mutable': '*', - 'required': '*' + 'mutable': 'boolean', + 'required': 'boolean' } }, 'customAttributes': '*', 'mfa': 'Mfa', 'mfaMessage': '*', 'mfaSecondFactor': { - 'sms': '*', - 'otp': '*', - 'email': '*' + 'sms': 'boolean', + 'otp': 'boolean', + 'email': 'boolean' }, 'passwordPolicy': { 'tempPasswordValidity': '*', 'minLength': '*', - 'requireLowercase': '*', - 'requireUppercase': '*', - 'requireDigits': '*', - 'requireSymbols': '*' + 'requireLowercase': 'boolean', + 'requireUppercase': 'boolean', + 'requireDigits': 'boolean', + 'requireSymbols': 'boolean', + 'passwordHistorySize': '*' }, 'emailSettings': { 'from': '*', @@ -8318,13 +12129,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -8332,13 +12143,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'resourceArnsForGrantInvoke': '*' } }, - 'signInCaseSensitive': '*', + 'signInCaseSensitive': 'boolean', 'accountRecovery': 'AccountRecovery', 'removalPolicy': 'RemovalPolicy', - 'deletionProtection': '*', + 'deletionProtection': 'boolean', 'deviceTracking': { - 'challengeRequiredOnNewDevice': '*', - 'deviceOnlyRememberedOnUserPrompt': '*' + 'challengeRequiredOnNewDevice': 'boolean', + 'deviceOnlyRememberedOnUserPrompt': 'boolean' }, 'customSenderKmsKey': { 'keyArn': '*', @@ -8351,7 +12162,44 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'advancedSecurityMode': 'AdvancedSecurityMode', - 'featurePlan': 'FeaturePlan' + 'featurePlan': 'FeaturePlan', + 'addTrigger': [ + '*', + { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'isBoundToVpc': 'boolean', + 'latestVersion': { + 'version': '*', + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'resourceArnsForGrantInvoke': '*' + }, + 'LambdaVersion' + ] } }, 'aws-cdk-lib.aws-config': { @@ -8365,7 +12213,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'evaluationModes': '*' }, 'CloudFormationStackDriftDetectionCheck': { - 'ownStackOnly': '*', + 'ownStackOnly': 'boolean', 'role': { 'roleArn': '*', 'roleName': '*', @@ -8394,8 +12242,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'topics': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -8440,21 +12288,21 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' }, 'resourceArnsForGrantInvoke': '*' }, - 'configurationChanges': '*', - 'periodic': '*', + 'configurationChanges': 'boolean', + 'periodic': 'boolean', 'configRuleName': '*', 'description': '*', 'inputParameters': '*', @@ -8464,7 +12312,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'CustomPolicy': { 'policyText': '*', - 'enableDebugLog': '*', + 'enableDebugLog': 'boolean', 'configRuleName': '*', 'description': '*', 'inputParameters': '*', @@ -8507,7 +12355,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'storageEncrypted': '*', + 'storageEncrypted': 'boolean', 'instances': '*', 'dbClusterName': '*', 'instanceIdentifierBase': '*', @@ -8540,7 +12388,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -8560,14 +12408,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -8582,9 +12430,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'preferredMaintenanceWindow': '*', 'removalPolicy': 'RemovalPolicy', - 'deletionProtection': '*', - 'exportProfilerLogsToCloudWatch': '*', - 'exportAuditLogsToCloudWatch': '*', + 'deletionProtection': 'boolean', + 'exportProfilerLogsToCloudWatch': 'boolean', + 'exportAuditLogsToCloudWatch': 'boolean', 'cloudWatchLogsRetention': 'RetentionDays', 'cloudWatchLogsRetentionRole': { 'roleArn': '*', @@ -8603,11 +12451,51 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enablePerformanceInsights': '*', + 'enablePerformanceInsights': 'boolean', 'instanceRemovalPolicy': 'RemovalPolicy', 'securityGroupRemovalPolicy': 'RemovalPolicy', - 'copyTagsToSnapshot': '*', - 'storageType': 'StorageType' + 'copyTagsToSnapshot': 'boolean', + 'storageType': 'StorageType', + 'addRotationSingleUser': [ + '*' + ], + 'addRotationMultiUser': [ + '*', + { + 'secret': { + 'encryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'secretArn': '*', + 'secretFullArn': '*', + 'secretName': '*', + 'secretValue': '*' + }, + 'automaticallyAfter': '*' + } + ], + 'addSecurityGroups': [ + { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + ] }, 'DatabaseSecret': { 'username': '*', @@ -8657,10 +12545,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'instanceType': '*', 'availabilityZone': '*', 'dbInstanceName': '*', - 'autoMinorVersionUpgrade': '*', + 'autoMinorVersionUpgrade': 'boolean', 'preferredMaintenanceWindow': '*', 'removalPolicy': 'RemovalPolicy', - 'enablePerformanceInsights': '*', + 'enablePerformanceInsights': 'boolean', 'caCertificate': '*' }, 'ClusterParameterGroup': { @@ -8690,9 +12578,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'readCapacity': '*', 'maxReadRequestUnits': '*', 'globalSecondaryIndexOptions': '*', - 'contributorInsights': '*', - 'deletionProtection': '*', - 'pointInTimeRecovery': '*', + 'contributorInsights': 'boolean', + 'deletionProtection': 'boolean', + 'pointInTimeRecovery': 'boolean', + 'pointInTimeRecoverySpecification': { + 'pointInTimeRecoveryEnabled': 'boolean', + 'recoveryPeriodInDays': '*' + }, 'tableClass': 'TableClass', 'kinesisStream': { 'streamArn': '*', @@ -8744,9 +12636,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'readUnitsPerSecond': '*', 'writeUnitsPerSecond': '*' }, - 'contributorInsights': '*', - 'deletionProtection': '*', - 'pointInTimeRecovery': '*', + 'contributorInsights': 'boolean', + 'deletionProtection': 'boolean', + 'pointInTimeRecovery': 'boolean', + 'pointInTimeRecoverySpecification': { + 'pointInTimeRecoveryEnabled': 'boolean', + 'recoveryPeriodInDays': '*' + }, 'tableClass': 'TableClass', 'kinesisStream': { 'streamArn': '*', @@ -8766,7 +12662,74 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'key': '*', 'value': '*' }, - 'resourcePolicy': '*' + 'resourcePolicy': '*', + 'addReplica': [ + { + 'region': '*', + 'readCapacity': '*', + 'maxReadRequestUnits': '*', + 'globalSecondaryIndexOptions': '*', + 'contributorInsights': 'boolean', + 'deletionProtection': 'boolean', + 'pointInTimeRecovery': 'boolean', + 'pointInTimeRecoverySpecification': { + 'pointInTimeRecoveryEnabled': 'boolean', + 'recoveryPeriodInDays': '*' + }, + 'tableClass': 'TableClass', + 'kinesisStream': { + 'streamArn': '*', + 'streamName': '*', + 'encryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + }, + 'tags': { + 'key': '*', + 'value': '*' + }, + 'resourcePolicy': '*' + } + ], + 'addGlobalSecondaryIndex': [ + { + 'partitionKey': { + 'name': '*', + 'type': 'AttributeType' + }, + 'readCapacity': '*', + 'maxReadRequestUnits': '*', + 'maxWriteRequestUnits': '*', + 'warmThroughput': { + 'readUnitsPerSecond': '*', + 'writeUnitsPerSecond': '*' + }, + 'indexName': '*', + 'projectionType': 'ProjectionType', + 'nonKeyAttributes': '*' + } + ], + 'addLocalSecondaryIndex': [ + { + 'sortKey': { + 'name': '*', + 'type': 'AttributeType' + }, + 'indexName': '*', + 'projectionType': 'ProjectionType', + 'nonKeyAttributes': '*' + } + ], + 'replica': [ + '*' + ] }, 'Table': { 'tableName': '*', @@ -8794,8 +12757,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'readUnitsPerSecond': '*', 'writeUnitsPerSecond': '*' }, - 'pointInTimeRecovery': '*', - 'serverSideEncryption': '*', + 'pointInTimeRecovery': 'boolean', + 'pointInTimeRecoverySpecification': { + 'pointInTimeRecoveryEnabled': 'boolean', + 'recoveryPeriodInDays': '*' + }, + 'serverSideEncryption': 'boolean', 'tableClass': 'TableClass', 'encryption': 'TableEncryption', 'encryptionKey': { @@ -8813,9 +12780,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'removalPolicy': 'RemovalPolicy', 'replicationRegions': '*', 'replicationTimeout': '*', - 'waitForReplicationToFinish': '*', - 'contributorInsightsEnabled': '*', - 'deletionProtection': '*', + 'waitForReplicationToFinish': 'boolean', + 'contributorInsightsEnabled': 'boolean', + 'deletionProtection': 'boolean', 'importSource': { 'compressionType': 'InputCompressionType', 'inputFormat': '*', @@ -8827,7 +12794,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -8852,7 +12819,67 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'sortKey': { 'name': '*', 'type': 'AttributeType' - } + }, + 'addGlobalSecondaryIndex': [ + { + 'readCapacity': '*', + 'writeCapacity': '*', + 'maxReadRequestUnits': '*', + 'maxWriteRequestUnits': '*', + 'warmThroughput': { + 'readUnitsPerSecond': '*', + 'writeUnitsPerSecond': '*' + }, + 'contributorInsightsEnabled': 'boolean', + 'indexName': '*', + 'projectionType': 'ProjectionType', + 'nonKeyAttributes': '*', + 'partitionKey': { + 'name': '*', + 'type': 'AttributeType' + } + } + ], + 'addLocalSecondaryIndex': [ + { + 'sortKey': { + 'name': '*', + 'type': 'AttributeType' + }, + 'indexName': '*', + 'projectionType': 'ProjectionType', + 'nonKeyAttributes': '*' + } + ], + 'autoScaleReadCapacity': [ + { + 'minCapacity': '*', + 'maxCapacity': '*' + } + ], + 'autoScaleWriteCapacity': [ + { + 'minCapacity': '*', + 'maxCapacity': '*' + } + ], + 'autoScaleGlobalSecondaryIndexReadCapacity': [ + '*', + { + 'minCapacity': '*', + 'maxCapacity': '*' + } + ], + 'autoScaleGlobalSecondaryIndexWriteCapacity': [ + '*', + { + 'minCapacity': '*', + 'maxCapacity': '*' + } + ], + 'schema': [ + '*' + ] } }, 'aws-cdk-lib.aws-ec2': { @@ -8886,7 +12913,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -8906,14 +12933,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -8922,20 +12949,27 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'blockDevices': { 'deviceName': '*', 'volume': '*', - 'mappingEnabled': '*' + 'mappingEnabled': 'boolean' }, 'init': '*', 'initOptions': { 'configSets': '*', 'timeout': '*', - 'embedFingerprint': '*', - 'printLog': '*', - 'ignoreFailures': '*', - 'includeUrl': '*', - 'includeRole': '*' - }, - 'requireImdsv2': '*', - 'userDataCausesReplacement': '*' + 'embedFingerprint': 'boolean', + 'printLog': 'boolean', + 'ignoreFailures': 'boolean', + 'includeUrl': 'boolean', + 'includeRole': 'boolean' + }, + 'requireImdsv2': 'boolean', + 'userDataCausesReplacement': 'boolean', + 'allowSshAccessFrom': [ + { + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + ] }, 'ClientVpnAuthorizationRule': { 'clientVpnEndpoint': { @@ -8990,7 +13024,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'cidr': '*', 'clientCertificateArn': '*', 'userBasedAuthentication': '*', - 'logging': '*', + 'logging': 'boolean', 'logGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -9017,20 +13051,20 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'description': '*', 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'selfServicePortal': '*', + 'selfServicePortal': 'boolean', 'serverCertificateArn': '*', - 'splitTunnel': '*', + 'splitTunnel': 'boolean', 'transportProtocol': 'TransportProtocol', 'port': 'VpnPort', 'dnsServers': '*', @@ -9039,7 +13073,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -9057,9 +13091,25 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'authorizeAllUsersToVpcCidr': '*', + 'authorizeAllUsersToVpcCidr': 'boolean', 'sessionTimeout': 'ClientVpnSessionTimeout', - 'clientLoginBanner': '*' + 'clientLoginBanner': '*', + 'addAuthorizationRule': [ + '*', + { + 'cidr': '*', + 'groupId': '*', + 'description': '*' + } + ], + 'addRoute': [ + '*', + { + 'cidr': '*', + 'description': '*', + 'target': '*' + } + ] }, 'ClientVpnRoute': { 'clientVpnEndpoint': { @@ -9105,7 +13155,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -9124,8 +13174,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } }, 'availabilityZone': '*', - 'allowAllOutbound': '*', - 'allowAllIpv6Outbound': '*', + 'allowAllOutbound': 'boolean', + 'allowAllIpv6Outbound': 'boolean', 'resourceSignalTimeout': '*', 'vpc': { 'vpcId': '*', @@ -9151,21 +13201,21 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'instanceType': '*', 'machineImage': '*', 'userData': '*', - 'userDataCausesReplacement': '*', + 'userDataCausesReplacement': 'boolean', 'role': { 'roleArn': '*', 'roleName': '*', @@ -9205,31 +13255,31 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } }, 'instanceName': '*', - 'sourceDestCheck': '*', + 'sourceDestCheck': 'boolean', 'blockDevices': { 'deviceName': '*', 'volume': '*', - 'mappingEnabled': '*' + 'mappingEnabled': 'boolean' }, 'privateIpAddress': '*', - 'propagateTagsToVolumeOnCreation': '*', + 'propagateTagsToVolumeOnCreation': 'boolean', 'init': '*', 'initOptions': { 'configSets': '*', 'timeout': '*', - 'embedFingerprint': '*', - 'printLog': '*', - 'ignoreFailures': '*', - 'includeUrl': '*', - 'includeRole': '*' - }, - 'requireImdsv2': '*', - 'detailedMonitoring': '*', - 'ssmSessionPermissions': '*', - 'associatePublicIpAddress': '*', + 'embedFingerprint': 'boolean', + 'printLog': 'boolean', + 'ignoreFailures': 'boolean', + 'includeUrl': 'boolean', + 'includeRole': 'boolean' + }, + 'requireImdsv2': 'boolean', + 'detailedMonitoring': 'boolean', + 'ssmSessionPermissions': 'boolean', + 'associatePublicIpAddress': 'boolean', 'creditSpecification': 'CpuCredits', - 'ebsOptimized': '*', - 'disableApiTermination': '*', + 'ebsOptimized': 'boolean', + 'disableApiTermination': 'boolean', 'instanceInitiatedShutdownBehavior': 'InstanceInitiatedShutdownBehavior', 'placementGroup': { 'placementGroupName': '*', @@ -9243,9 +13293,47 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enclaveEnabled': '*', - 'hibernationEnabled': '*', - 'ipv6AddressCount': '*' + 'enclaveEnabled': 'boolean', + 'hibernationEnabled': 'boolean', + 'ipv6AddressCount': '*', + 'addSecurityGroup': [ + { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + ], + 'addUserData': [ + '*' + ], + 'addToRolePolicy': [ + '*' + ], + 'applyCloudFormationInit': [ + '*', + { + 'configSets': '*', + 'timeout': '*', + 'embedFingerprint': 'boolean', + 'printLog': 'boolean', + 'ignoreFailures': 'boolean', + 'includeUrl': 'boolean', + 'includeRole': 'boolean' + } + ] + }, + 'KeyPair': { + '_isOsCompatible': [ + 'OperatingSystemType' + ] }, 'LaunchTemplate': { 'launchTemplateName': '*', @@ -9273,13 +13361,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'blockDevices': { 'deviceName': '*', 'volume': '*', - 'mappingEnabled': '*' + 'mappingEnabled': 'boolean' }, 'cpuCredits': 'CpuCredits', - 'disableApiTermination': '*', - 'ebsOptimized': '*', - 'nitroEnclaveEnabled': '*', - 'hibernationConfigured': '*', + 'disableApiTermination': 'boolean', + 'ebsOptimized': 'boolean', + 'nitroEnclaveEnabled': 'boolean', + 'hibernationConfigured': 'boolean', 'instanceInitiatedShutdownBehavior': 'InstanceInitiatedShutdownBehavior', 'spotOptions': { 'blockDuration': '*', @@ -9299,27 +13387,27 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'detailedMonitoring': '*', + 'detailedMonitoring': 'boolean', 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'requireImdsv2': '*', - 'httpEndpoint': '*', - 'httpProtocolIpv6': '*', + 'requireImdsv2': 'boolean', + 'httpEndpoint': 'boolean', + 'httpProtocolIpv6': 'boolean', 'httpPutResponseHopLimit': '*', 'httpTokens': 'LaunchTemplateHttpTokens', - 'instanceMetadataTags': '*', - 'associatePublicIpAddress': '*', + 'instanceMetadataTags': 'boolean', + 'associatePublicIpAddress': 'boolean', 'instanceProfile': { 'instanceProfileName': '*', 'instanceProfileArn': '*', @@ -9340,7 +13428,22 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' } - } + }, + 'addSecurityGroup': [ + { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + ] }, 'NetworkAcl': { 'networkAclName': '*', @@ -9371,7 +13474,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -9388,7 +13491,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' } - } + }, + 'associateWithSubnet': [ + '*', + { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + } + ] }, 'NetworkAclEntry': { 'networkAcl': { @@ -9434,6 +13563,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, + 'PlacementGroup': {}, + 'PrefixList': {}, 'SecurityGroup': { 'securityGroupName': '*', 'description': '*', @@ -9459,17 +13590,37 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'allowAllOutbound': '*', - 'allowAllIpv6Outbound': '*', - 'disableInlineRules': '*' + 'allowAllOutbound': 'boolean', + 'allowAllIpv6Outbound': 'boolean', + 'disableInlineRules': 'boolean', + 'addIngressRule': [ + { + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + }, + '*', + '*', + 'boolean' + ], + 'addEgressRule': [ + { + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + }, + '*', + '*', + 'boolean' + ] }, 'Volume': { 'volumeName': '*', 'availabilityZone': '*', 'size': '*', 'snapshotId': '*', - 'enableMultiAttach': '*', - 'encrypted': '*', + 'enableMultiAttach': 'boolean', + 'encrypted': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -9480,7 +13631,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'autoEnableIo': '*', + 'autoEnableIo': 'boolean', 'volumeType': 'EbsDeviceVolumeType', 'iops': '*', 'removalPolicy': 'RemovalPolicy', @@ -9491,8 +13642,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'vpcEndpointServiceLoadBalancers': { 'loadBalancerArn': '*' }, - 'acceptanceRequired': '*', - 'contributorInsights': '*', + 'acceptanceRequired': 'boolean', + 'contributorInsights': 'boolean', 'whitelistedPrincipals': '*', 'allowedPrincipals': '*' }, @@ -9527,7 +13678,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -9572,15 +13723,15 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'service': { 'name': '*', 'port': '*', - 'privateDnsDefault': '*' + 'privateDnsDefault': 'boolean' }, - 'privateDnsEnabled': '*', + 'privateDnsEnabled': 'boolean', 'subnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -9600,19 +13751,19 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'open': '*', - 'lookupSupportedAzs': '*' + 'open': 'boolean', + 'lookupSupportedAzs': 'boolean' }, 'FlowLog': { 'flowLogName': '*', @@ -9626,8 +13777,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'ipProtocol': 'IpProtocol', 'ipAddresses': '*', 'cidr': '*', - 'enableDnsHostnames': '*', - 'enableDnsSupport': '*', + 'enableDnsHostnames': 'boolean', + 'enableDnsSupport': 'boolean', 'defaultInstanceTenancy': 'DefaultInstanceTenancy', 'maxAzs': '*', 'reservedAzs': '*', @@ -9638,7 +13789,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -9661,11 +13812,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'cidrMask': '*', 'subnetType': 'SubnetType', 'name': '*', - 'reserved': '*', - 'mapPublicIpOnLaunch': '*', - 'ipv6AssignAddressOnCreation': '*' + 'reserved': 'boolean', + 'mapPublicIpOnLaunch': 'boolean', + 'ipv6AssignAddressOnCreation': 'boolean' }, - 'vpnGateway': '*', + 'vpnGateway': 'boolean', 'vpnGatewayAsn': '*', 'vpnConnections': '*', 'vpnRoutePropagation': { @@ -9673,7 +13824,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -9694,35 +13845,128 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'gatewayEndpoints': '*', 'flowLogs': '*', 'vpcName': '*', - 'restrictDefaultSecurityGroup': '*', - 'createInternetGateway': '*', + 'restrictDefaultSecurityGroup': 'boolean', + 'createInternetGateway': 'boolean', 'ipv6Addresses': { - 'amazonProvided': '*' - } + 'amazonProvided': 'boolean' + }, + 'addS3Endpoint': [ + '*', + { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + } + ], + 'addDynamoDbEndpoint': [ + '*', + { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + } + ] }, 'Subnet': { 'availabilityZone': '*', 'vpcId': '*', 'cidrBlock': '*', - 'mapPublicIpOnLaunch': '*', + 'mapPublicIpOnLaunch': 'boolean', 'ipv6CidrBlock': '*', - 'assignIpv6AddressOnCreation': '*' + 'assignIpv6AddressOnCreation': 'boolean', + 'addDefaultInternetRoute': [ + '*', + '*' + ], + 'addIpv6DefaultInternetRoute': [ + '*' + ], + 'addIpv6DefaultEgressOnlyInternetRoute': [ + '*' + ], + 'addDefaultNatRoute': [ + '*' + ], + 'addIpv6Nat64Route': [ + '*' + ], + 'addRoute': [ + '*', + { + 'destinationCidrBlock': '*', + 'destinationIpv6CidrBlock': '*', + 'routerType': 'RouterType', + 'routerId': '*', + 'enablesInternetConnectivity': 'boolean' + } + ], + 'associateNetworkAcl': [ + '*', + { + 'networkAclId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] }, 'PublicSubnet': { 'availabilityZone': '*', 'vpcId': '*', 'cidrBlock': '*', - 'mapPublicIpOnLaunch': '*', + 'mapPublicIpOnLaunch': 'boolean', 'ipv6CidrBlock': '*', - 'assignIpv6AddressOnCreation': '*' + 'assignIpv6AddressOnCreation': 'boolean', + 'addNatGateway': [ + '*' + ] }, 'PrivateSubnet': { 'availabilityZone': '*', 'vpcId': '*', 'cidrBlock': '*', - 'mapPublicIpOnLaunch': '*', + 'mapPublicIpOnLaunch': 'boolean', 'ipv6CidrBlock': '*', - 'assignIpv6AddressOnCreation': '*' + 'assignIpv6AddressOnCreation': 'boolean' }, 'ImportedVpc': { 'vpcId': '*', @@ -9774,7 +14018,19 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZone': '*', 'ipv4CidrBlock': '*', 'routeTableId': '*', - 'subnetId': '*' + 'subnetId': '*', + 'associateNetworkAcl': [ + '*', + { + 'networkAclId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] }, 'VpnGateway': { 'type': '*', @@ -9838,10 +14094,24 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'lifecycleRegistryId': '*', 'removalPolicy': 'RemovalPolicy', - 'imageScanOnPush': '*', + 'imageScanOnPush': 'boolean', 'imageTagMutability': 'TagMutability', - 'autoDeleteImages': '*', - 'emptyOnDelete': '*' + 'autoDeleteImages': 'boolean', + 'emptyOnDelete': 'boolean', + 'addToResourcePolicy': [ + '*' + ], + 'addLifecycleRule': [ + { + 'rulePriority': '*', + 'description': '*', + 'tagStatus': 'TagStatus', + 'tagPrefixList': '*', + 'tagPatternList': '*', + 'maxImageCount': '*', + 'maxImageAge': '*' + } + ] } }, 'aws-cdk-lib.aws-ecs': { @@ -9894,14 +14164,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'useForServiceConnect': '*' + 'useForServiceConnect': 'boolean' }, 'capacity': { 'instanceType': '*', 'machineImage': '*', - 'canContainersAccessInstanceRole': '*', + 'canContainersAccessInstanceRole': 'boolean', 'taskDrainTime': '*', - 'spotInstanceDraining': '*', + 'spotInstanceDraining': 'boolean', 'topicEncryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -9926,7 +14196,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -9941,47 +14211,47 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'notificationsTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*' + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean' }, 'notifications': { 'scalingEvents': '*' }, - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'updateType': 'UpdateType', 'rollingUpdateConfiguration': { 'maxBatchSize': '*', 'minInstancesInService': '*', 'minSuccessfulInstancesPercent': '*', - 'waitOnResourceSignals': '*', + 'waitOnResourceSignals': 'boolean', 'suspendProcesses': 'ScalingProcess' }, 'replacingUpdateMinSuccessfulInstancesPercent': '*', - 'ignoreUnmodifiedSizeProperties': '*', + 'ignoreUnmodifiedSizeProperties': 'boolean', 'resourceSignalCount': '*', - 'associatePublicIpAddress': '*', + 'associatePublicIpAddress': 'boolean', 'spotPrice': '*', 'healthCheck': '*', 'blockDevices': { 'deviceName': '*', 'volume': '*', - 'mappingEnabled': '*' + 'mappingEnabled': 'boolean' }, 'instanceMonitoring': 'Monitoring', 'groupMetrics': '*', 'signals': '*', 'updatePolicy': '*', - 'newInstancesProtectedFromScaleIn': '*', + 'newInstancesProtectedFromScaleIn': 'boolean', 'autoScalingGroupName': '*', 'terminationPolicies': 'TerminationPolicy', 'terminationPolicyCustomLambdaFunctionArn': '*', - 'capacityRebalance': '*', - 'ssmSessionPermissions': '*', + 'capacityRebalance': 'boolean', + 'ssmSessionPermissions': 'boolean', 'azCapacityDistributionStrategy': 'CapacityDistributionStrategy' }, 'capacityProviders': '*', - 'enableFargateCapacityProviders': '*', - 'containerInsights': '*', + 'enableFargateCapacityProviders': [], + 'containerInsights': 'boolean', 'containerInsightsV2': 'ContainerInsights', 'executeCommandConfiguration': { 'kmsKey': { @@ -9995,7 +14265,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'logConfiguration': { - 'cloudWatchEncryptionEnabled': '*', + 'cloudWatchEncryptionEnabled': 'boolean', 'cloudWatchLogGroup': { 'logGroupArn': '*', 'logGroupName': '*' @@ -10008,11 +14278,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'policy': '*', 'replicationRoleArn': '*' }, - 's3EncryptionEnabled': '*', + 's3EncryptionEnabled': 'boolean', 's3KeyPrefix': '*' }, 'logging': 'ExecuteCommandLogging' @@ -10028,7 +14298,258 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' } - } + }, + 'addDefaultCapacityProviderStrategy': [ + { + 'capacityProvider': '*', + 'base': '*', + 'weight': '*' + } + ], + 'addDefaultCloudMapNamespace': [ + { + 'name': '*', + 'type': 'NamespaceType', + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'useForServiceConnect': 'boolean' + } + ], + 'addCapacity': [ + '*', + { + 'instanceType': '*', + 'machineImage': '*', + 'canContainersAccessInstanceRole': 'boolean', + 'taskDrainTime': '*', + 'spotInstanceDraining': 'boolean', + 'topicEncryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'machineImageType': 'MachineImageType', + 'minCapacity': '*', + 'maxCapacity': '*', + 'desiredCapacity': '*', + 'keyName': '*', + 'keyPair': { + 'keyPairName': '*', + 'type': 'KeyPairType' + }, + 'vpcSubnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + } + } + }, + 'notificationsTopic': { + 'topicArn': '*', + 'topicName': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean' + }, + 'notifications': { + 'scalingEvents': '*' + }, + 'allowAllOutbound': 'boolean', + 'updateType': 'UpdateType', + 'rollingUpdateConfiguration': { + 'maxBatchSize': '*', + 'minInstancesInService': '*', + 'minSuccessfulInstancesPercent': '*', + 'waitOnResourceSignals': 'boolean', + 'suspendProcesses': 'ScalingProcess' + }, + 'replacingUpdateMinSuccessfulInstancesPercent': '*', + 'ignoreUnmodifiedSizeProperties': 'boolean', + 'resourceSignalCount': '*', + 'associatePublicIpAddress': 'boolean', + 'spotPrice': '*', + 'healthCheck': '*', + 'blockDevices': { + 'deviceName': '*', + 'volume': '*', + 'mappingEnabled': 'boolean' + }, + 'instanceMonitoring': 'Monitoring', + 'groupMetrics': '*', + 'signals': '*', + 'updatePolicy': '*', + 'newInstancesProtectedFromScaleIn': 'boolean', + 'autoScalingGroupName': '*', + 'terminationPolicies': 'TerminationPolicy', + 'terminationPolicyCustomLambdaFunctionArn': '*', + 'capacityRebalance': 'boolean', + 'ssmSessionPermissions': 'boolean', + 'azCapacityDistributionStrategy': 'CapacityDistributionStrategy' + } + ], + 'addAsgCapacityProvider': [ + '*', + { + 'canContainersAccessInstanceRole': 'boolean', + 'taskDrainTime': '*', + 'spotInstanceDraining': 'boolean', + 'topicEncryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'machineImageType': 'MachineImageType' + } + ], + 'addAutoScalingGroup': [ + '*', + { + 'canContainersAccessInstanceRole': 'boolean', + 'taskDrainTime': '*', + 'spotInstanceDraining': 'boolean', + 'topicEncryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'machineImageType': 'MachineImageType' + } + ], + 'addCapacityProvider': [ + '*' + ], + 'arnForTasks': [ + '*' + ], + 'grantTaskProtection': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'metricCpuReservation': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricCpuUtilization': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricMemoryReservation': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricMemoryUtilization': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metric': [ + '*', + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ] }, 'ImportedCluster': { 'clusterName': '*', @@ -10057,18 +14578,18 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'hasEc2Capacity': '*', + 'hasEc2Capacity': 'boolean', 'defaultCloudMapNamespace': { 'namespaceName': '*', 'namespaceId': '*', @@ -10109,7 +14630,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'logConfiguration': { - 'cloudWatchEncryptionEnabled': '*', + 'cloudWatchEncryptionEnabled': 'boolean', 'cloudWatchLogGroup': { 'logGroupArn': '*', 'logGroupName': '*' @@ -10122,11 +14643,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'policy': '*', 'replicationRoleArn': '*' }, - 's3EncryptionEnabled': '*', + 's3EncryptionEnabled': 'boolean', 's3KeyPrefix': '*' }, 'logging': 'ExecuteCommandLogging' @@ -10201,14 +14722,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -10217,7 +14738,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -10235,7 +14756,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'encrypted': '*', + 'encrypted': 'boolean', 'fileSystemName': '*', 'kmsKey': { 'keyArn': '*', @@ -10254,24 +14775,41 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'throughputMode': 'ThroughputMode', 'provisionedThroughputPerSecond': '*', 'removalPolicy': 'RemovalPolicy', - 'enableAutomaticBackups': '*', + 'enableAutomaticBackups': 'boolean', 'fileSystemPolicy': '*', - 'allowAnonymousAccess': '*', - 'oneZone': '*', + 'allowAnonymousAccess': 'boolean', + 'oneZone': 'boolean', 'replicationOverwriteProtection': 'ReplicationOverwriteProtection', - 'replicationConfiguration': '*' + 'replicationConfiguration': '*', + 'addAccessPoint': [ + '*', + { + 'createAcl': { + 'ownerUid': '*', + 'ownerGid': '*', + 'permissions': '*' + }, + 'path': '*', + 'posixUser': { + 'uid': '*', + 'gid': '*', + 'secondaryGids': '*' + }, + 'clientToken': '*' + } + ] }, 'ImportedFileSystem': { 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -10313,8 +14851,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterSecurityGroupId': '*', 'clusterSecurityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', - 'canInlineRule': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -10349,7 +14887,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'roleArn': '*' }, 'kubectlMemory': '*', - 'prune': '*', + 'prune': 'boolean', 'authenticationMode': 'AuthenticationMode' }, 'accessPolicies': { @@ -10359,7 +14897,16 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'policy': '*' }, - 'principal': '*' + 'principal': '*', + 'addAccessPolicies': [ + { + 'accessScope': { + 'namespaces': '*', + 'type': 'AccessScopeType' + }, + 'policy': '*' + } + ] }, 'Addon': { 'addonName': '*', @@ -10394,8 +14941,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterSecurityGroupId': '*', 'clusterSecurityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', - 'canInlineRule': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -10430,10 +14977,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'roleArn': '*' }, 'kubectlMemory': '*', - 'prune': '*', + 'prune': 'boolean', 'authenticationMode': 'AuthenticationMode' }, - 'preserveOnDelete': '*' + 'preserveOnDelete': 'boolean' }, 'Cluster': { 'defaultCapacity': '*', @@ -10456,7 +15003,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'bootstrapClusterCreatorAdminPermissions': '*', + 'bootstrapClusterCreatorAdminPermissions': 'boolean', 'tags': '*', 'mastersRole': { 'roleArn': '*', @@ -10476,7 +15023,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'coreDnsComputeType': 'CoreDnsComputeType', - 'outputMastersRoleArn': '*', + 'outputMastersRoleArn': 'boolean', 'endpointAccess': '*', 'kubectlEnvironment': '*', 'kubectlLayer': { @@ -10503,14 +15050,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterHandlerEnvironment': '*', 'clusterHandlerSecurityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -10524,8 +15071,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'prune': '*', - 'placeClusterHandlerInVpc': '*', + 'prune': 'boolean', + 'placeClusterHandlerInVpc': 'boolean', 'secretsEncryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -10572,7 +15119,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -10610,20 +15157,265 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterName': '*', 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'version': '*', - 'outputClusterName': '*', - 'outputConfigCommand': '*' + 'outputClusterName': 'boolean', + 'outputConfigCommand': 'boolean', + 'grantAccess': [ + '*', + '*', + { + 'accessScope': { + 'namespaces': '*', + 'type': 'AccessScopeType' + }, + 'policy': '*' + } + ], + 'getServiceLoadBalancerAddress': [ + '*', + { + 'timeout': '*', + 'namespace': '*' + } + ], + 'getIngressLoadBalancerAddress': [ + '*', + { + 'timeout': '*', + 'namespace': '*' + } + ], + 'addAutoScalingGroupCapacity': [ + '*', + { + 'instanceType': '*', + 'mapRole': 'boolean', + 'bootstrapEnabled': 'boolean', + 'bootstrapOptions': { + 'useMaxPods': 'boolean', + 'enableDockerBridge': 'boolean', + 'awsApiRetryAttempts': '*', + 'dockerConfigJson': '*', + 'dnsClusterIp': '*', + 'kubeletExtraArgs': '*', + 'additionalArgs': '*' + }, + 'machineImageType': 'MachineImageType', + 'spotInterruptHandler': 'boolean', + 'minCapacity': '*', + 'maxCapacity': '*', + 'desiredCapacity': '*', + 'keyName': '*', + 'keyPair': { + 'keyPairName': '*', + 'type': 'KeyPairType', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'vpcSubnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + } + } + }, + 'notificationsTopic': { + 'topicArn': '*', + 'topicName': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean' + }, + 'notifications': { + 'scalingEvents': '*' + }, + 'allowAllOutbound': 'boolean', + 'updateType': 'UpdateType', + 'rollingUpdateConfiguration': { + 'maxBatchSize': '*', + 'minInstancesInService': '*', + 'minSuccessfulInstancesPercent': '*', + 'pauseTime': '*', + 'waitOnResourceSignals': 'boolean', + 'suspendProcesses': 'ScalingProcess' + }, + 'replacingUpdateMinSuccessfulInstancesPercent': '*', + 'ignoreUnmodifiedSizeProperties': 'boolean', + 'resourceSignalCount': '*', + 'associatePublicIpAddress': 'boolean', + 'spotPrice': '*', + 'healthCheck': '*', + 'blockDevices': { + 'deviceName': '*', + 'volume': '*', + 'mappingEnabled': 'boolean' + }, + 'instanceMonitoring': 'Monitoring', + 'groupMetrics': '*', + 'signals': '*', + 'updatePolicy': '*', + 'newInstancesProtectedFromScaleIn': 'boolean', + 'autoScalingGroupName': '*', + 'terminationPolicies': 'TerminationPolicy', + 'terminationPolicyCustomLambdaFunctionArn': '*', + 'capacityRebalance': 'boolean', + 'ssmSessionPermissions': 'boolean', + 'azCapacityDistributionStrategy': 'CapacityDistributionStrategy' + } + ], + 'addNodegroupCapacity': [ + '*', + { + 'nodegroupName': '*', + 'subnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + }, + 'amiType': 'NodegroupAmiType', + 'diskSize': '*', + 'desiredSize': '*', + 'maxSize': '*', + 'minSize': '*', + 'forceUpdate': 'boolean', + 'instanceType': '*', + 'labels': '*', + 'taints': { + 'effect': 'TaintEffect', + 'key': '*', + 'value': '*' + }, + 'nodeRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + }, + 'releaseVersion': '*', + 'remoteAccess': { + 'sshKeyName': '*', + 'sourceSecurityGroups': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + }, + 'tags': '*', + 'launchTemplateSpec': { + 'id': '*', + 'version': '*' + }, + 'capacityType': 'CapacityType', + 'maxUnavailable': '*', + 'maxUnavailablePercentage': '*' + } + ], + 'addFargateProfile': [ + '*', + { + 'fargateProfileName': '*', + 'podExecutionRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'selectors': { + 'namespace': '*', + 'labels': '*' + }, + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + } + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'subnetSelection': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*' + } + } + ], + '_attachFargateProfile': [ + '*' + ], + '_attachKubectlResourceScope': [ + '*' + ] }, 'ImportedCluster': { 'vpc': { @@ -10739,7 +15531,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'prune': '*' + 'prune': 'boolean' }, 'FargateCluster': { 'defaultProfile': { @@ -10786,7 +15578,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*' } }, @@ -10808,7 +15600,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'coreDnsComputeType': 'CoreDnsComputeType', - 'outputMastersRoleArn': '*', + 'outputMastersRoleArn': 'boolean', 'endpointAccess': '*', 'kubectlEnvironment': '*', 'kubectlLayer': { @@ -10835,14 +15627,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterHandlerEnvironment': '*', 'clusterHandlerSecurityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -10856,8 +15648,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'prune': '*', - 'placeClusterHandlerInVpc': '*', + 'prune': 'boolean', + 'placeClusterHandlerInVpc': 'boolean', 'secretsEncryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -10904,7 +15696,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -10942,20 +15734,20 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterName': '*', 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'version': '*', - 'outputClusterName': '*', - 'outputConfigCommand': '*' + 'outputClusterName': 'boolean', + 'outputConfigCommand': 'boolean' }, 'Nodegroup': { 'cluster': { @@ -10988,8 +15780,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterSecurityGroupId': '*', 'clusterSecurityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', - 'canInlineRule': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -11024,7 +15816,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'roleArn': '*' }, 'kubectlMemory': '*', - 'prune': '*', + 'prune': 'boolean', 'authenticationMode': 'AuthenticationMode' }, 'nodegroupName': '*', @@ -11033,7 +15825,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -11056,7 +15848,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'desiredSize': '*', 'maxSize': '*', 'minSize': '*', - 'forceUpdate': '*', + 'forceUpdate': 'boolean', 'instanceType': '*', 'instanceTypes': '*', 'labels': '*', @@ -11087,14 +15879,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'sshKeyName': '*', 'sourceSecurityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' } @@ -11136,7 +15928,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'internetFacing': '*', + 'internetFacing': 'boolean', 'listeners': { 'externalPort': '*', 'externalProtocol': 'LoadBalancingProtocol', @@ -11160,13 +15952,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'unhealthyThreshold': '*', 'interval': '*' }, - 'crossZone': '*', + 'crossZone': 'boolean', 'subnetSelection': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -11186,10 +15978,32 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'accessLoggingPolicy': { 'emitInterval': '*', - 'enabled': '*', + 'enabled': 'boolean', 's3BucketName': '*', 's3BucketPrefix': '*' - } + }, + 'addListener': [ + { + 'externalPort': '*', + 'externalProtocol': 'LoadBalancingProtocol', + 'internalPort': '*', + 'internalProtocol': 'LoadBalancingProtocol', + 'policyNames': '*', + 'sslCertificateId': '*', + 'sslCertificateArn': '*', + 'allowConnectionsFrom': { + 'connections': '*' + } + } + ], + 'addTarget': [ + { + 'connections': '*' + } + ], + '_addInstanceId': [ + '*' + ] } }, 'aws-cdk-lib.aws-elasticsearch': { @@ -11219,7 +16033,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'domainName': '*', 'ebs': { - 'enabled': '*', + 'enabled': 'boolean', 'iops': '*', 'volumeSize': '*', 'volumeType': 'EbsDeviceVolumeType' @@ -11233,12 +16047,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'warmInstanceType': '*' }, 'zoneAwareness': { - 'enabled': '*', + 'enabled': 'boolean', 'availabilityZoneCount': '*' }, 'version': '*', 'encryptionAtRest': { - 'enabled': '*', + 'enabled': 'boolean', 'kmsKey': { 'keyArn': '*', 'keyId': '*', @@ -11251,7 +16065,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } }, 'logging': { - 'slowSearchLogEnabled': '*', + 'slowSearchLogEnabled': 'boolean', 'slowSearchLogGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -11262,11 +16076,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'slowIndexLogEnabled': '*', - 'appLogEnabled': '*', - 'auditLogEnabled': '*' + 'slowIndexLogEnabled': 'boolean', + 'appLogEnabled': 'boolean', + 'auditLogEnabled': 'boolean' }, - 'nodeToNodeEncryption': '*', + 'nodeToNodeEncryption': 'boolean', 'automatedSnapshotStartHour': '*', 'vpc': { 'vpcId': '*', @@ -11292,14 +16106,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -11308,7 +16122,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -11326,15 +16140,15 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'enforceHttps': '*', + 'enforceHttps': 'boolean', 'tlsSecurityPolicy': 'TLSSecurityPolicy', 'fineGrainedAccessControl': { 'masterUserArn': '*', 'masterUserName': '*', 'masterUserPassword': '*' }, - 'useUnsignedBasicAuth': '*', - 'enableVersionUpgrade': '*', + 'useUnsignedBasicAuth': 'boolean', + 'enableVersionUpgrade': 'boolean', 'removalPolicy': 'RemovalPolicy', 'customEndpoint': { 'domainName': '*', @@ -11353,7 +16167,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'hostedZoneArn': '*', 'hostedZoneNameServers': '*' } - } + }, + 'addAccessPolicies': [ + '*' + ] } }, 'aws-cdk-lib.aws-events': { @@ -11416,6 +16233,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'connectionArn': '*', 'connectionSecretArn': '*' }, + 'EventBus': { + 'addToResourcePolicy': [ + '*' + ] + }, 'ImportedEventBus': { 'eventBusName': '*', 'eventBusArn': '*', @@ -11439,7 +16261,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'statementId': '*' }, 'Rule': { - 'enabled': '*', + 'enabled': 'boolean', 'schedule': '*', 'targets': '*', 'eventBus': { @@ -11467,10 +16289,27 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'resources': '*', 'detail': '*' }, - 'crossStackScope': '*' + 'crossStackScope': '*', + 'addTarget': [ + '*' + ], + 'addEventPattern': [ + { + 'version': '*', + 'id': '*', + 'detailType': '*', + 'source': '*', + 'account': '*', + 'time': '*', + 'region': '*', + 'resources': '*', + 'detail': '*' + } + ], + '_renderEventPattern': [] }, 'MirrorRule': { - 'enabled': '*', + 'enabled': 'boolean', 'schedule': '*', 'targets': '*', 'eventBus': { @@ -11498,7 +16337,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'resources': '*', 'detail': '*' }, - 'crossStackScope': '*' + 'crossStackScope': '*', + '_renderEventPattern': [] } }, 'aws-cdk-lib.aws-fsx': { @@ -11513,7 +16353,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'perUnitStorageThroughput': '*', 'weeklyMaintenanceStartTime': '*', 'automaticBackupRetention': '*', - 'copyTagsToBackups': '*', + 'copyTagsToBackups': 'boolean', 'dailyAutomaticBackupStartTime': '*', 'driveCacheType': 'DriveCacheType' }, @@ -11568,14 +16408,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -11587,9 +16427,21 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'aws-cdk-lib.aws-globalaccelerator': { 'Accelerator': { 'acceleratorName': '*', - 'enabled': '*', + 'enabled': 'boolean', 'ipAddresses': '*', - 'ipAddressType': 'IpAddressType' + 'ipAddressType': 'IpAddressType', + 'addListener': [ + '*', + { + 'listenerName': '*', + 'portRanges': { + 'fromPort': '*', + 'toPort': '*' + }, + 'protocol': 'ConnectionProtocol', + 'clientAffinity': 'ClientAffinity' + } + ] }, 'EndpointGroup': { 'listener': { @@ -11615,7 +16467,37 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'endpoints': { 'region': '*' - } + }, + 'addEndpoint': [ + { + 'region': '*' + } + ], + 'connectionsPeer': [ + '*', + { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + } + ] }, 'Listener': { 'accelerator': { @@ -11637,7 +16519,27 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'toPort': '*' }, 'protocol': 'ConnectionProtocol', - 'clientAffinity': 'ClientAffinity' + 'clientAffinity': 'ClientAffinity', + 'addEndpointGroup': [ + '*', + { + 'endpointGroupName': '*', + 'region': '*', + 'healthCheckInterval': '*', + 'healthCheckPath': '*', + 'healthCheckPort': '*', + 'healthCheckProtocol': 'HealthCheckProtocol', + 'healthCheckThreshold': '*', + 'trafficDialPercentage': '*', + 'portOverrides': { + 'listenerPort': '*', + 'endpointPort': '*' + }, + 'endpoints': { + 'region': '*' + } + } + ] } }, 'aws-cdk-lib.aws-iam': { @@ -11667,7 +16569,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'managedPolicies': { 'managedPolicyArn': '*' }, - 'path': '*' + 'path': '*', + 'addManagedPolicy': [ + { + 'managedPolicyArn': '*' + } + ] }, 'InstanceProfile': { 'role': { @@ -11708,7 +16615,43 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'roleName': '*', 'maxSessionDuration': '*', - 'description': '*' + 'description': '*', + 'addToPrincipalPolicy': [ + '*' + ], + 'addToPolicy': [ + '*' + ], + 'attachInlinePolicy': [ + '*' + ], + 'addManagedPolicy': [ + { + 'managedPolicyArn': '*' + } + ], + 'grant': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + }, + '*' + ], + 'grantPassRole': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + ], + 'grantAssumeRole': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + ] }, 'ManagedPolicy': { 'managedPolicyName': '*', @@ -11766,7 +16709,67 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'statements': '*', - 'document': '*' + 'document': '*', + 'addStatements': [ + '*' + ], + 'attachToUser': [ + { + 'userName': '*', + 'userArn': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'attachToRole': [ + { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'attachToGroup': [ + { + 'groupName': '*', + 'groupArn': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] }, 'OpenIdConnectProvider': { 'url': '*', @@ -11827,8 +16830,68 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'statements': '*', - 'force': '*', - 'document': '*' + 'force': 'boolean', + 'document': '*', + 'addStatements': [ + '*' + ], + 'attachToUser': [ + { + 'userName': '*', + 'userArn': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'attachToRole': [ + { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'attachToGroup': [ + { + 'groupName': '*', + 'groupArn': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] }, 'Role': { 'assumedBy': { @@ -11848,7 +16911,51 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'roleName': '*', 'maxSessionDuration': '*', - 'description': '*' + 'description': '*', + 'addToPrincipalPolicy': [ + '*' + ], + 'addToPolicy': [ + '*' + ], + 'addManagedPolicy': [ + { + 'managedPolicyArn': '*' + } + ], + 'attachInlinePolicy': [ + '*' + ], + 'grant': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + }, + '*' + ], + 'grantPassRole': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + ], + 'grantAssumeRole': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + ], + 'withoutPolicyUpdates': [ + { + 'addGrantsToResources': 'boolean' + } + ], + 'applyRemovalPolicy': [ + 'RemovalPolicy' + ] }, 'SamlProvider': { 'name': '*', @@ -11881,7 +16988,40 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'userName': '*', 'password': '*', - 'passwordResetRequired': '*' + 'passwordResetRequired': 'boolean', + 'addToGroup': [ + { + 'groupName': '*', + 'groupArn': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'addManagedPolicy': [ + { + 'managedPolicyArn': '*' + } + ], + 'attachInlinePolicy': [ + '*' + ], + 'addToPrincipalPolicy': [ + '*' + ], + 'addToPolicy': [ + '*' + ] } }, 'aws-cdk-lib.aws-kinesis': { @@ -11939,12 +17079,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'Key': { 'description': '*', 'alias': '*', - 'enableKeyRotation': '*', + 'enableKeyRotation': 'boolean', 'rotationPeriod': '*', - 'enabled': '*', + 'enabled': 'boolean', 'keySpec': 'KeySpec', 'keyUsage': 'KeyUsage', - 'multiRegion': '*', + 'multiRegion': 'boolean', 'policy': '*', 'admins': { 'assumeRoleAction': '*', @@ -11952,8 +17092,17 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'principalAccount': '*' }, 'removalPolicy': 'RemovalPolicy', - 'trustAccountIdentities': '*', - 'pendingWindow': '*' + 'trustAccountIdentities': 'boolean', + 'pendingWindow': '*', + 'grantAdmin': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] } }, 'aws-cdk-lib.aws-lambda': { @@ -11981,7 +17130,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -11989,7 +17138,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'resourceArnsForGrantInvoke': '*' }, 'description': '*', @@ -12016,7 +17165,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -12024,7 +17173,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'resourceArnsForGrantInvoke': '*' }, 'weight': '*' @@ -12033,7 +17182,29 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'onFailure': '*', 'onSuccess': '*', 'maxEventAge': '*', - 'retryAttempts': '*' + 'retryAttempts': '*', + 'metric': [ + '*', + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'addAutoScaling': [ + { + 'minCapacity': '*', + 'maxCapacity': '*' + } + ] }, 'CodeSigningConfig': { 'signingProfiles': { @@ -12072,13 +17243,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -12112,13 +17283,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -12127,12 +17298,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'eventSourceArn': '*', 'batchSize': '*', - 'bisectBatchOnError': '*', + 'bisectBatchOnError': 'boolean', 'onFailure': '*', - 'enabled': '*', + 'enabled': 'boolean', 'startingPosition': 'StartingPosition', 'startingPositionTimestamp': '*', - 'reportBatchItemFailures': '*', + 'reportBatchItemFailures': 'boolean', 'maxBatchingWindow': '*', 'maxConcurrency': '*', 'maxRecordAge': '*', @@ -12157,7 +17328,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'supportS3OnFailureDestination': '*', + 'supportS3OnFailureDestination': 'boolean', 'provisionedPollerConfig': { 'minimumPollers': '*', 'maximumPollers': '*' @@ -12166,6 +17337,54 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'metrics': 'MetricType' } }, + 'LatestVersion': { + 'addAlias': [ + '*', + { + 'description': '*', + 'additionalVersions': { + 'version': { + 'version': '*', + 'lambda': { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'resourceArnsForGrantInvoke': '*' + }, + 'weight': '*' + }, + 'provisionedConcurrentExecutions': '*', + 'onFailure': '*', + 'maxEventAge': '*', + 'retryAttempts': '*' + } + ] + }, 'FunctionUrl': { 'function': { 'functionName': '*', @@ -12187,13 +17406,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -12202,14 +17421,23 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'authType': 'FunctionUrlAuthType', 'cors': { - 'allowCredentials': '*', + 'allowCredentials': 'boolean', 'allowedHeaders': '*', 'allowedMethods': 'HttpMethod', 'allowedOrigins': '*', 'exposedHeaders': '*', 'maxAge': '*' }, - 'invokeMode': 'InvokeMode' + 'invokeMode': 'InvokeMode', + 'grantInvokeUrl': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] }, 'Function': { 'runtime': '*', @@ -12261,13 +17489,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'ipv6AllowedForDualStack': '*', + 'ipv6AllowedForDualStack': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -12287,33 +17515,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'allowAllOutbound': '*', - 'allowAllIpv6Outbound': '*', - 'deadLetterQueueEnabled': '*', + 'allowAllOutbound': 'boolean', + 'allowAllIpv6Outbound': 'boolean', + 'deadLetterQueueEnabled': 'boolean', 'deadLetterQueue': { 'queueArn': '*', 'queueUrl': '*', @@ -12328,14 +17556,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' }, 'deadLetterTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -12345,7 +17573,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tracing': 'Tracing', 'snapStart': '*', - 'profiling': '*', + 'profiling': 'boolean', 'profilingGroup': { 'profilingGroupName': '*', 'profilingGroupArn': '*', @@ -12406,7 +17634,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'retryAttempts': '*' }, 'filesystem': '*', - 'allowPublicSubnet': '*', + 'allowPublicSubnet': 'boolean', 'environmentEncryption': { 'keyArn': '*', 'keyId': '*', @@ -12450,7 +17678,87 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'onFailure': '*', 'onSuccess': '*', 'maxEventAge': '*', - 'retryAttempts': '*' + 'retryAttempts': '*', + 'addEnvironment': [ + '*', + '*', + { + 'removeInEdge': 'boolean' + } + ], + 'invalidateVersionBasedOn': [ + '*' + ], + 'addLayers': [ + { + 'layerVersionArn': '*', + 'compatibleRuntimes': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'addVersion': [ + '*', + '*', + '*', + '*', + { + 'onFailure': '*', + 'maxEventAge': '*', + 'retryAttempts': '*' + } + ], + 'addAlias': [ + '*', + { + 'description': '*', + 'additionalVersions': { + 'version': { + 'version': '*', + 'lambda': { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'resourceArnsForGrantInvoke': '*' + }, + 'weight': '*' + }, + 'provisionedConcurrentExecutions': '*', + 'onFailure': '*', + 'maxEventAge': '*', + 'retryAttempts': '*' + } + ], + '_checkEdgeCompatibility': [] }, 'DockerImageFunction': { 'code': '*', @@ -12500,13 +17808,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'ipv6AllowedForDualStack': '*', + 'ipv6AllowedForDualStack': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -12526,33 +17834,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'allowAllOutbound': '*', - 'allowAllIpv6Outbound': '*', - 'deadLetterQueueEnabled': '*', + 'allowAllOutbound': 'boolean', + 'allowAllIpv6Outbound': 'boolean', + 'deadLetterQueueEnabled': 'boolean', 'deadLetterQueue': { 'queueArn': '*', 'queueUrl': '*', @@ -12567,14 +17875,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' }, 'deadLetterTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -12584,7 +17892,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tracing': 'Tracing', 'snapStart': '*', - 'profiling': '*', + 'profiling': 'boolean', 'profilingGroup': { 'profilingGroupName': '*', 'profilingGroupArn': '*', @@ -12645,7 +17953,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'retryAttempts': '*' }, 'filesystem': '*', - 'allowPublicSubnet': '*', + 'allowPublicSubnet': 'boolean', 'environmentEncryption': { 'keyArn': '*', 'keyId': '*', @@ -12712,13 +18020,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -12732,7 +18040,69 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'onFailure': '*', 'onSuccess': '*', 'maxEventAge': '*', - 'retryAttempts': '*' + 'retryAttempts': '*', + 'metric': [ + '*', + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'addAlias': [ + '*', + { + 'description': '*', + 'additionalVersions': { + 'version': { + 'version': '*', + 'lambda': { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'resourceArnsForGrantInvoke': '*' + }, + 'weight': '*' + }, + 'provisionedConcurrentExecutions': '*', + 'onFailure': '*', + 'maxEventAge': '*', + 'retryAttempts': '*' + } + ] }, 'LayerVersion': { 'compatibleRuntimes': '*', @@ -12795,13 +18165,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'ipv6AllowedForDualStack': '*', + 'ipv6AllowedForDualStack': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -12821,33 +18191,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'allowAllOutbound': '*', - 'allowAllIpv6Outbound': '*', - 'deadLetterQueueEnabled': '*', + 'allowAllOutbound': 'boolean', + 'allowAllIpv6Outbound': 'boolean', + 'deadLetterQueueEnabled': 'boolean', 'deadLetterQueue': { 'queueArn': '*', 'queueUrl': '*', @@ -12862,14 +18232,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' }, 'deadLetterTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -12879,7 +18249,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tracing': 'Tracing', 'snapStart': '*', - 'profiling': '*', + 'profiling': 'boolean', 'profilingGroup': { 'profilingGroupName': '*', 'profilingGroupArn': '*', @@ -12940,7 +18310,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'retryAttempts': '*' }, 'filesystem': '*', - 'allowPublicSubnet': '*', + 'allowPublicSubnet': 'boolean', 'environmentEncryption': { 'keyArn': '*', 'keyId': '*', @@ -12984,7 +18354,60 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'onFailure': '*', 'onSuccess': '*', 'maxEventAge': '*', - 'retryAttempts': '*' + 'retryAttempts': '*', + 'addEnvironment': [ + '*', + '*', + { + 'removeInEdge': 'boolean' + } + ], + 'addLayers': [ + { + 'layerVersionArn': '*', + 'compatibleRuntimes': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'addPermission': [ + '*', + { + 'action': '*', + 'eventSourceToken': '*', + 'principal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + }, + 'scope': '*', + 'sourceAccount': '*', + 'sourceArn': '*', + 'organizationId': '*', + 'functionUrlAuthType': 'FunctionUrlAuthType' + } + ], + 'addDependency': [ + '*' + ], + 'addMetadata': [ + '*', + '*', + { + 'stackTrace': 'boolean', + 'traceFromFunction': '*' + } + ], + 'dependOn': [ + { + 'node': '*' + } + ], + '_checkEdgeCompatibility': [] } }, 'aws-cdk-lib.aws-lambda-nodejs': { @@ -12992,31 +18415,31 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'entry': '*', 'handler': '*', 'runtime': '*', - 'awsSdkConnectionReuse': '*', + 'awsSdkConnectionReuse': 'boolean', 'depsLockFilePath': '*', 'bundling': { - 'minify': '*', - 'sourceMap': '*', + 'minify': 'boolean', + 'sourceMap': 'boolean', 'sourceMapMode': 'SourceMapMode', - 'sourcesContent': '*', + 'sourcesContent': 'boolean', 'target': '*', 'loader': '*', 'logLevel': 'LogLevel', - 'keepNames': '*', + 'keepNames': 'boolean', 'tsconfig': '*', - 'metafile': '*', + 'metafile': 'boolean', 'banner': '*', 'footer': '*', 'charset': 'Charset', 'define': '*', 'externalModules': '*', - 'bundleAwsSDK': '*', + 'bundleAwsSDK': 'boolean', 'nodeModules': '*', 'esbuildVersion': '*', 'esbuildArgs': '*', 'buildArgs': '*', - 'forceDockerBundling': '*', - 'preCompilation': '*', + 'forceDockerBundling': 'boolean', + 'preCompilation': 'boolean', 'dockerImage': '*', 'commandHooks': '*', 'assetHash': '*', @@ -13087,13 +18510,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'ipv6AllowedForDualStack': '*', + 'ipv6AllowedForDualStack': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -13113,33 +18536,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'allowAllOutbound': '*', - 'allowAllIpv6Outbound': '*', - 'deadLetterQueueEnabled': '*', + 'allowAllOutbound': 'boolean', + 'allowAllIpv6Outbound': 'boolean', + 'deadLetterQueueEnabled': 'boolean', 'deadLetterQueue': { 'queueArn': '*', 'queueUrl': '*', @@ -13154,14 +18577,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' }, 'deadLetterTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -13171,7 +18594,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tracing': 'Tracing', 'snapStart': '*', - 'profiling': '*', + 'profiling': 'boolean', 'profilingGroup': { 'profilingGroupName': '*', 'profilingGroupArn': '*', @@ -13232,7 +18655,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'retryAttempts': '*' }, 'filesystem': '*', - 'allowPublicSubnet': '*', + 'allowPublicSubnet': 'boolean', 'environmentEncryption': { 'keyArn': '*', 'keyId': '*', @@ -13299,7 +18722,23 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'targetArn': '*' + 'targetArn': '*', + 'addToPolicy': [ + '*' + ], + 'bind': [ + '*', + { + 'logGroupArn': '*', + 'logGroupName': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] }, 'LogGroup': { 'encryptionKey': { @@ -13352,8 +18791,24 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'defaultValue': '*', 'dimensions': '*', 'unit': 'Unit', - 'filterName': '*' + 'filterName': '*', + 'metric': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ] }, + 'ResourcePolicy': {}, 'QueryDefinition': { 'queryDefinitionName': '*', 'queryString': '*', @@ -13414,7 +18869,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'domainName': '*', 'ebs': { - 'enabled': '*', + 'enabled': 'boolean', 'iops': '*', 'throughput': '*', 'volumeSize': '*', @@ -13427,15 +18882,15 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'dataNodeInstanceType': '*', 'warmNodes': '*', 'warmInstanceType': '*', - 'multiAzWithStandbyEnabled': '*' + 'multiAzWithStandbyEnabled': 'boolean' }, 'zoneAwareness': { - 'enabled': '*', + 'enabled': 'boolean', 'availabilityZoneCount': '*' }, 'version': '*', 'encryptionAtRest': { - 'enabled': '*', + 'enabled': 'boolean', 'kmsKey': { 'keyArn': '*', 'keyId': '*', @@ -13448,7 +18903,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } }, 'logging': { - 'slowSearchLogEnabled': '*', + 'slowSearchLogEnabled': 'boolean', 'slowSearchLogGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -13459,11 +18914,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'slowIndexLogEnabled': '*', - 'appLogEnabled': '*', - 'auditLogEnabled': '*' + 'slowIndexLogEnabled': 'boolean', + 'appLogEnabled': 'boolean', + 'auditLogEnabled': 'boolean' }, - 'nodeToNodeEncryption': '*', + 'nodeToNodeEncryption': 'boolean', 'automatedSnapshotStartHour': '*', 'vpc': { 'vpcId': '*', @@ -13489,14 +18944,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -13505,7 +18960,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -13523,13 +18978,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'enforceHttps': '*', + 'enforceHttps': 'boolean', 'tlsSecurityPolicy': 'TLSSecurityPolicy', 'fineGrainedAccessControl': { 'masterUserArn': '*', 'masterUserName': '*', 'masterUserPassword': '*', - 'samlAuthenticationEnabled': '*', + 'samlAuthenticationEnabled': 'boolean', 'samlAuthenticationOptions': { 'idpEntityId': '*', 'idpMetadataContent': '*', @@ -13540,8 +18995,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'sessionTimeoutMinutes': '*' } }, - 'useUnsignedBasicAuth': '*', - 'enableVersionUpgrade': '*', + 'useUnsignedBasicAuth': 'boolean', + 'enableVersionUpgrade': 'boolean', 'removalPolicy': 'RemovalPolicy', 'customEndpoint': { 'domainName': '*', @@ -13561,15 +19016,18 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'hostedZoneNameServers': '*' } }, - 'offPeakWindowEnabled': '*', + 'offPeakWindowEnabled': 'boolean', 'offPeakWindowStart': { 'hours': '*', 'minutes': '*' }, - 'enableAutoSoftwareUpdate': '*', + 'enableAutoSoftwareUpdate': 'boolean', 'ipAddressType': 'IpAddressType', - 'suppressLogsResourcePolicy': '*', - 'coldStorageEnabled': '*' + 'suppressLogsResourcePolicy': 'boolean', + 'coldStorageEnabled': 'boolean', + 'addAccessPolicies': [ + '*' + ] } }, 'aws-cdk-lib.aws-rds': { @@ -13582,7 +19040,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'engine': { 'singleUserRotationApplication': '*', 'supportedLogTypes': '*', - 'combineImportAndExportRoles': '*', + 'combineImportAndExportRoles': 'boolean', 'engineType': '*', 'engineVersion': { 'fullVersion': '*', @@ -13604,8 +19062,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'instanceType': '*', 'promotionTier': '*', 'instanceIdentifier': '*', - 'autoMinorVersionUpgrade': '*', - 'enablePerformanceInsights': '*', + 'autoMinorVersionUpgrade': 'boolean', + 'enablePerformanceInsights': 'boolean', 'performanceInsightRetention': 'PerformanceInsightRetention', 'performanceInsightEncryptionKey': { 'keyArn': '*', @@ -13617,10 +19075,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'publiclyAccessible': '*', + 'publiclyAccessible': 'boolean', 'preferredMaintenanceWindow': '*', 'parameters': '*', - 'allowMajorVersionUpgrade': '*', + 'allowMajorVersionUpgrade': 'boolean', 'parameterGroup': { 'stack': '*', 'env': { @@ -13629,7 +19087,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isFromLegacyInstanceProps': '*', + 'isFromLegacyInstanceProps': 'boolean', 'caCertificate': '*', 'monitoringInterval': '*', 'monitoringRole': { @@ -13666,14 +19124,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'port': '*', 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -13684,7 +19142,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'engine': { 'singleUserRotationApplication': '*', 'supportedLogTypes': '*', - 'combineImportAndExportRoles': '*', + 'combineImportAndExportRoles': 'boolean', 'engineType': '*', 'engineVersion': { 'fullVersion': '*', @@ -13710,14 +19168,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'secretName': '*', 'secretValue': '*' }, - 'dataApiEnabled': '*' + 'dataApiEnabled': 'boolean' }, 'DatabaseCluster': { 'credentials': '*', 'engine': { 'singleUserRotationApplication': '*', 'supportedLogTypes': '*', - 'combineImportAndExportRoles': '*', + 'combineImportAndExportRoles': 'boolean', 'engineType': '*', 'engineVersion': { 'fullVersion': '*', @@ -13757,28 +19215,28 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', - 'canInlineRule': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'parameterGroup': '*', 'parameters': '*', - 'enablePerformanceInsights': '*', + 'enablePerformanceInsights': 'boolean', 'performanceInsightRetention': 'PerformanceInsightRetention', 'performanceInsightEncryptionKey': { 'keyArn': '*', 'keyId': '*' }, - 'autoMinorVersionUpgrade': '*', - 'allowMajorVersionUpgrade': '*', - 'deleteAutomatedBackups': '*', - 'publiclyAccessible': '*', + 'autoMinorVersionUpgrade': 'boolean', + 'allowMajorVersionUpgrade': 'boolean', + 'deleteAutomatedBackups': 'boolean', + 'publiclyAccessible': 'boolean', 'preferredMaintenanceWindow': '*' }, 'writer': '*', @@ -13812,7 +19270,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -13832,14 +19290,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -13853,7 +19311,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterIdentifier': '*', 'instanceIdentifierBase': '*', 'defaultDatabaseName': '*', - 'deletionProtection': '*', + 'deletionProtection': 'boolean', 'preferredMaintenanceWindow': '*', 'parameterGroup': { 'stack': '*', @@ -13902,7 +19360,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enableClusterLevelEnhancedMonitoring': '*', + 'enableClusterLevelEnhancedMonitoring': 'boolean', 's3ImportRole': { 'roleArn': '*', 'roleName': '*', @@ -13928,7 +19386,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -13967,7 +19425,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -13990,8 +19448,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'iamAuthentication': '*', - 'storageEncrypted': '*', + 'iamAuthentication': 'boolean', + 'storageEncrypted': 'boolean', 'storageEncryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -14003,7 +19461,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'storageType': 'DBClusterStorageType', - 'copyTagsToSnapshot': '*', + 'copyTagsToSnapshot': 'boolean', 'networkType': 'NetworkType', 'domain': '*', 'domainRole': { @@ -14023,9 +19481,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enableDataApi': '*', - 'enableLocalWriteForwarding': '*', - 'enablePerformanceInsights': '*', + 'enableDataApi': 'boolean', + 'enableLocalWriteForwarding': 'boolean', + 'enablePerformanceInsights': 'boolean', 'performanceInsightRetention': 'PerformanceInsightRetention', 'performanceInsightEncryptionKey': { 'keyArn': '*', @@ -14037,7 +19495,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'autoMinorVersionUpgrade': '*', + 'autoMinorVersionUpgrade': 'boolean', 'clusterScalabilityType': 'ClusterScalabilityType', 'clusterScailabilityType': 'ClusterScailabilityType' }, @@ -14048,7 +19506,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'engine': { 'singleUserRotationApplication': '*', 'supportedLogTypes': '*', - 'combineImportAndExportRoles': '*', + 'combineImportAndExportRoles': 'boolean', 'engineType': '*', 'engineVersion': { 'fullVersion': '*', @@ -14088,28 +19546,28 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', - 'canInlineRule': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'parameterGroup': '*', 'parameters': '*', - 'enablePerformanceInsights': '*', + 'enablePerformanceInsights': 'boolean', 'performanceInsightRetention': 'PerformanceInsightRetention', 'performanceInsightEncryptionKey': { 'keyArn': '*', 'keyId': '*' }, - 'autoMinorVersionUpgrade': '*', - 'allowMajorVersionUpgrade': '*', - 'deleteAutomatedBackups': '*', - 'publiclyAccessible': '*', + 'autoMinorVersionUpgrade': 'boolean', + 'allowMajorVersionUpgrade': 'boolean', + 'deleteAutomatedBackups': 'boolean', + 'publiclyAccessible': 'boolean', 'preferredMaintenanceWindow': '*' }, 'writer': '*', @@ -14143,7 +19601,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -14163,14 +19621,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -14184,7 +19642,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterIdentifier': '*', 'instanceIdentifierBase': '*', 'defaultDatabaseName': '*', - 'deletionProtection': '*', + 'deletionProtection': 'boolean', 'preferredMaintenanceWindow': '*', 'parameterGroup': { 'stack': '*', @@ -14233,7 +19691,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enableClusterLevelEnhancedMonitoring': '*', + 'enableClusterLevelEnhancedMonitoring': 'boolean', 's3ImportRole': { 'roleArn': '*', 'roleName': '*', @@ -14259,7 +19717,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -14298,7 +19756,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -14321,8 +19779,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'iamAuthentication': '*', - 'storageEncrypted': '*', + 'iamAuthentication': 'boolean', + 'storageEncrypted': 'boolean', 'storageEncryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -14334,7 +19792,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'storageType': 'DBClusterStorageType', - 'copyTagsToSnapshot': '*', + 'copyTagsToSnapshot': 'boolean', 'networkType': 'NetworkType', 'domain': '*', 'domainRole': { @@ -14354,9 +19812,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enableDataApi': '*', - 'enableLocalWriteForwarding': '*', - 'enablePerformanceInsights': '*', + 'enableDataApi': 'boolean', + 'enableLocalWriteForwarding': 'boolean', + 'enablePerformanceInsights': 'boolean', 'performanceInsightRetention': 'PerformanceInsightRetention', 'performanceInsightEncryptionKey': { 'keyArn': '*', @@ -14368,7 +19826,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'autoMinorVersionUpgrade': '*', + 'autoMinorVersionUpgrade': 'boolean', 'clusterScalabilityType': 'ClusterScalabilityType', 'clusterScailabilityType': 'ClusterScailabilityType' }, @@ -14403,7 +19861,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'secretValue': '*' }, 'excludeCharacters': '*', - 'replaceOnPasswordCriteriaChanges': '*', + 'replaceOnPasswordCriteriaChanges': 'boolean', 'replicaRegions': { 'region': '*', 'encryptionKey': { @@ -14421,7 +19879,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'DatabaseInstance': { 'credentials': '*', 'characterSetName': '*', - 'storageEncrypted': '*', + 'storageEncrypted': 'boolean', 'storageEncryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -14434,7 +19892,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'engine': { 'singleUserRotationApplication': '*', - 'supportsReadReplicaBackups': '*', + 'supportsReadReplicaBackups': 'boolean', 'engineType': '*', 'engineVersion': { 'fullVersion': '*', @@ -14446,12 +19904,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'instanceType': '*', 'licenseModel': 'LicenseModel', - 'allowMajorVersionUpgrade': '*', + 'allowMajorVersionUpgrade': 'boolean', 'timezone': '*', 'allocatedStorage': '*', 'databaseName': '*', 'parameters': '*', - 'multiAz': '*', + 'multiAz': 'boolean', 'availabilityZone': '*', 'storageType': 'StorageType', 'storageThroughput': '*', @@ -14488,7 +19946,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -14511,7 +19969,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -14531,14 +19989,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -14560,11 +20018,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'iamAuthentication': '*', + 'iamAuthentication': 'boolean', 'backupRetention': '*', 'preferredBackupWindow': '*', - 'copyTagsToSnapshot': '*', - 'deleteAutomatedBackups': '*', + 'copyTagsToSnapshot': 'boolean', + 'deleteAutomatedBackups': 'boolean', 'monitoringInterval': '*', 'monitoringRole': { 'roleArn': '*', @@ -14583,7 +20041,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enablePerformanceInsights': '*', + 'enablePerformanceInsights': 'boolean', 'performanceInsightRetention': 'PerformanceInsightRetention', 'performanceInsightEncryptionKey': { 'keyArn': '*', @@ -14614,9 +20072,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'autoMinorVersionUpgrade': '*', + 'autoMinorVersionUpgrade': 'boolean', 'preferredMaintenanceWindow': '*', - 'deletionProtection': '*', + 'deletionProtection': 'boolean', 'removalPolicy': 'RemovalPolicy', 'maxAllocatedStorage': '*', 'domain': '*', @@ -14671,7 +20129,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -14710,7 +20168,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -14724,7 +20182,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'policy': '*', 'replicationRoleArn': '*' }, - 'publiclyAccessible': '*', + 'publiclyAccessible': 'boolean', 'networkType': 'NetworkType', 'caCertificate': '*' }, @@ -14733,7 +20191,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'credentials': '*', 'engine': { 'singleUserRotationApplication': '*', - 'supportsReadReplicaBackups': '*', + 'supportsReadReplicaBackups': 'boolean', 'engineType': '*', 'engineVersion': { 'fullVersion': '*', @@ -14745,12 +20203,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'instanceType': '*', 'licenseModel': 'LicenseModel', - 'allowMajorVersionUpgrade': '*', + 'allowMajorVersionUpgrade': 'boolean', 'timezone': '*', 'allocatedStorage': '*', 'databaseName': '*', 'parameters': '*', - 'multiAz': '*', + 'multiAz': 'boolean', 'availabilityZone': '*', 'storageType': 'StorageType', 'storageThroughput': '*', @@ -14787,7 +20245,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -14810,7 +20268,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -14830,14 +20288,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -14859,11 +20317,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'iamAuthentication': '*', + 'iamAuthentication': 'boolean', 'backupRetention': '*', 'preferredBackupWindow': '*', - 'copyTagsToSnapshot': '*', - 'deleteAutomatedBackups': '*', + 'copyTagsToSnapshot': 'boolean', + 'deleteAutomatedBackups': 'boolean', 'monitoringInterval': '*', 'monitoringRole': { 'roleArn': '*', @@ -14882,7 +20340,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enablePerformanceInsights': '*', + 'enablePerformanceInsights': 'boolean', 'performanceInsightRetention': 'PerformanceInsightRetention', 'performanceInsightEncryptionKey': { 'keyArn': '*', @@ -14913,9 +20371,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'autoMinorVersionUpgrade': '*', + 'autoMinorVersionUpgrade': 'boolean', 'preferredMaintenanceWindow': '*', - 'deletionProtection': '*', + 'deletionProtection': 'boolean', 'removalPolicy': 'RemovalPolicy', 'maxAllocatedStorage': '*', 'domain': '*', @@ -14970,7 +20428,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -15009,7 +20467,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -15023,7 +20481,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'policy': '*', 'replicationRoleArn': '*' }, - 'publiclyAccessible': '*', + 'publiclyAccessible': 'boolean', 'networkType': 'NetworkType', 'caCertificate': '*' }, @@ -15038,7 +20496,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'instanceEndpoint': '*', 'engine': { 'singleUserRotationApplication': '*', - 'supportsReadReplicaBackups': '*', + 'supportsReadReplicaBackups': 'boolean', 'engineType': '*', 'engineVersion': { 'fullVersion': '*', @@ -15056,7 +20514,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*', 'connections': '*' }, - 'storageEncrypted': '*', + 'storageEncrypted': 'boolean', 'storageEncryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -15068,7 +20526,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'allocatedStorage': '*', - 'multiAz': '*', + 'multiAz': 'boolean', 'availabilityZone': '*', 'storageType': 'StorageType', 'storageThroughput': '*', @@ -15105,7 +20563,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -15128,7 +20586,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -15148,14 +20606,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -15177,11 +20635,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'iamAuthentication': '*', + 'iamAuthentication': 'boolean', 'backupRetention': '*', 'preferredBackupWindow': '*', - 'copyTagsToSnapshot': '*', - 'deleteAutomatedBackups': '*', + 'copyTagsToSnapshot': 'boolean', + 'deleteAutomatedBackups': 'boolean', 'monitoringInterval': '*', 'monitoringRole': { 'roleArn': '*', @@ -15200,7 +20658,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enablePerformanceInsights': '*', + 'enablePerformanceInsights': 'boolean', 'performanceInsightRetention': 'PerformanceInsightRetention', 'performanceInsightEncryptionKey': { 'keyArn': '*', @@ -15231,9 +20689,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'autoMinorVersionUpgrade': '*', + 'autoMinorVersionUpgrade': 'boolean', 'preferredMaintenanceWindow': '*', - 'deletionProtection': '*', + 'deletionProtection': 'boolean', 'removalPolicy': 'RemovalPolicy', 'maxAllocatedStorage': '*', 'domain': '*', @@ -15288,7 +20746,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -15327,7 +20785,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -15341,14 +20799,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'policy': '*', 'replicationRoleArn': '*' }, - 'publiclyAccessible': '*', + 'publiclyAccessible': 'boolean', 'networkType': 'NetworkType', 'caCertificate': '*' }, 'OptionGroup': { 'engine': { 'singleUserRotationApplication': '*', - 'supportsReadReplicaBackups': '*', + 'supportsReadReplicaBackups': 'boolean', 'engineType': '*', 'engineVersion': { 'fullVersion': '*', @@ -15388,12 +20846,49 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', - 'canInlineRule': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' } - } + }, + 'addConfiguration': [ + { + 'name': '*', + 'settings': '*', + 'version': '*', + 'port': '*', + 'vpc': { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + }, + 'securityGroups': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + } + ] }, 'ParameterGroup': { 'engine': { @@ -15409,7 +20904,17 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'name': '*', 'description': '*', 'parameters': '*', - 'removalPolicy': 'RemovalPolicy' + 'removalPolicy': 'RemovalPolicy', + 'bindToCluster': [ + '*' + ], + 'bindToInstance': [ + '*' + ], + 'addParameter': [ + '*', + '*' + ] }, 'DatabaseProxy': { 'proxyTarget': '*', @@ -15419,10 +20924,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'maxConnectionsPercent': '*', 'maxIdleConnectionsPercent': '*', 'sessionPinningFilters': '*', - 'debugLogging': '*', - 'iamAuth': '*', + 'debugLogging': 'boolean', + 'iamAuth': 'boolean', 'idleClientTimeout': '*', - 'requireTLS': '*', + 'requireTLS': 'boolean', 'role': { 'roleArn': '*', 'roleName': '*', @@ -15458,14 +20963,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -15474,7 +20979,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -15514,7 +21019,18 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'clientPasswordAuthType': 'ClientPasswordAuthType' + 'clientPasswordAuthType': 'ClientPasswordAuthType', + 'asSecretAttachmentTarget': [], + 'grantConnect': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + '*' + ] }, 'ServerlessCluster': { 'credentials': '*', @@ -15531,7 +21047,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'engine': { 'singleUserRotationApplication': '*', 'supportedLogTypes': '*', - 'combineImportAndExportRoles': '*', + 'combineImportAndExportRoles': 'boolean', 'engineType': '*', 'engineVersion': { 'fullVersion': '*', @@ -15544,8 +21060,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterIdentifier': '*', 'backupRetention': '*', 'defaultDatabaseName': '*', - 'deletionProtection': '*', - 'enableDataApi': '*', + 'deletionProtection': 'boolean', + 'enableDataApi': 'boolean', 'vpc': { 'vpcId': '*', 'vpcArn': '*', @@ -15573,7 +21089,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -15600,14 +21116,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'removalPolicy': 'RemovalPolicy', 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -15628,21 +21144,112 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'copyTagsToSnapshot': '*' + 'copyTagsToSnapshot': 'boolean', + 'addRotationSingleUser': [ + { + 'automaticallyAfter': '*', + 'excludeCharacters': '*', + 'vpcSubnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + }, + 'endpoint': { + 'vpcEndpointId': '*', + 'connections': '*' + }, + 'securityGroup': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*' + }, + 'rotateImmediatelyOnUpdate': 'boolean' + } + ], + 'addRotationMultiUser': [ + '*', + { + 'secret': { + 'encryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'secretArn': '*', + 'secretFullArn': '*', + 'secretName': '*', + 'secretValue': '*' + }, + 'automaticallyAfter': '*', + 'excludeCharacters': '*', + 'vpcSubnets': { + 'subnetType': 'SubnetType', + 'availabilityZones': '*', + 'subnetGroupName': '*', + 'subnetName': '*', + 'onePerAz': 'boolean', + 'subnetFilters': '*', + 'subnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + } + } + }, + 'endpoint': { + 'vpcEndpointId': '*', + 'connections': '*' + }, + 'securityGroup': { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'canInlineRule': 'boolean', + 'uniqueId': '*' + }, + 'rotateImmediatelyOnUpdate': 'boolean' + } + ] }, 'ImportedServerlessCluster': { 'clusterIdentifier': '*', 'port': '*', 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -15671,7 +21278,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'engine': { 'singleUserRotationApplication': '*', 'supportedLogTypes': '*', - 'combineImportAndExportRoles': '*', + 'combineImportAndExportRoles': 'boolean', 'engineType': '*', 'engineVersion': { 'fullVersion': '*', @@ -15684,8 +21291,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'clusterIdentifier': '*', 'backupRetention': '*', 'defaultDatabaseName': '*', - 'deletionProtection': '*', - 'enableDataApi': '*', + 'deletionProtection': 'boolean', + 'enableDataApi': 'boolean', 'vpc': { 'vpcId': '*', 'vpcArn': '*', @@ -15713,7 +21320,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -15740,14 +21347,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'removalPolicy': 'RemovalPolicy', 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -15768,7 +21375,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'copyTagsToSnapshot': '*' + 'copyTagsToSnapshot': 'boolean' }, 'SubnetGroup': { 'description': '*', @@ -15800,7 +21407,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -15837,14 +21444,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enableSNI': '*', + 'enableSNI': 'boolean', 'failureThreshold': '*', 'fqdn': '*', 'healthThreshold': '*', 'insufficientDataHealthStatus': 'InsufficientDataHealthStatusEnum', - 'inverted': '*', + 'inverted': 'boolean', 'ipAddress': '*', - 'measureLatency': '*', + 'measureLatency': 'boolean', 'port': '*', 'regions': '*', 'requestInterval': '*', @@ -15876,12 +21483,60 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'vpnGatewayId': '*' }, 'zoneName': '*', - 'addTrailingDot': '*', + 'addTrailingDot': 'boolean', 'comment': '*', - 'queryLogsLogGroupArn': '*' + 'queryLogsLogGroupArn': '*', + 'addVpc': [ + { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + } + ], + 'grantDelegation': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'enableDnssec': [ + { + 'kmsKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'keySigningKeyName': '*' + } + ] }, 'PublicHostedZone': { - 'caaAmazon': '*', + 'caaAmazon': 'boolean', 'crossAccountZoneDelegationPrincipal': { 'assumeRoleAction': '*', 'policyFragment': '*', @@ -15889,9 +21544,51 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'crossAccountZoneDelegationRoleName': '*', 'zoneName': '*', - 'addTrailingDot': '*', + 'addTrailingDot': 'boolean', 'comment': '*', - 'queryLogsLogGroupArn': '*' + 'queryLogsLogGroupArn': '*', + 'addVpc': [ + { + 'vpcId': '*', + 'vpcArn': '*', + 'vpcCidrBlock': '*', + 'publicSubnets': { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'availabilityZones': '*', + 'vpnGatewayId': '*' + } + ], + 'addDelegation': [ + { + 'hostedZoneId': '*', + 'zoneName': '*', + 'hostedZoneArn': '*', + 'hostedZoneNameServers': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + { + 'comment': '*', + 'ttl': '*' + } + ] }, 'PrivateHostedZone': { 'vpc': { @@ -15917,7 +21614,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'vpnGatewayId': '*' }, 'zoneName': '*', - 'addTrailingDot': '*', + 'addTrailingDot': 'boolean', 'comment': '*', 'queryLogsLogGroupArn': '*' }, @@ -15966,10 +21663,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -15999,10 +21696,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16032,10 +21729,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16065,10 +21762,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16098,10 +21795,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16136,10 +21833,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16173,10 +21870,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16205,10 +21902,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16241,10 +21938,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16274,10 +21971,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16307,10 +22004,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16340,10 +22037,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'recordName': '*', 'ttl': '*', 'comment': '*', - 'deleteExisting': '*', + 'deleteExisting': 'boolean', 'weight': '*', 'region': '*', - 'multiValueAnswer': '*', + 'multiValueAnswer': 'boolean', 'setIdentifier': '*', 'healthCheck': { 'healthCheckId': '*', @@ -16366,7 +22063,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -16380,7 +22077,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'policy': '*', 'replicationRoleArn': '*' }, - 'removalPolicy': 'RemovalPolicy' + 'removalPolicy': 'RemovalPolicy', + 'applyRemovalPolicy': [ + 'RemovalPolicy' + ] }, 'Bucket': { 'encryption': 'BucketEncryption', @@ -16394,18 +22094,18 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enforceSSL': '*', - 'bucketKeyEnabled': '*', + 'enforceSSL': 'boolean', + 'bucketKeyEnabled': 'boolean', 'bucketName': '*', 'removalPolicy': 'RemovalPolicy', - 'autoDeleteObjects': '*', - 'versioned': '*', - 'objectLockEnabled': '*', + 'autoDeleteObjects': 'boolean', + 'versioned': 'boolean', + 'objectLockEnabled': 'boolean', 'objectLockDefaultRetention': '*', - 'eventBridgeEnabled': '*', + 'eventBridgeEnabled': 'boolean', 'lifecycleRules': { 'id': '*', - 'enabled': '*', + 'enabled': 'boolean', 'abortIncompleteMultipartUploadAfter': '*', 'expirationDate': '*', 'noncurrentVersionsToRetain': '*', @@ -16416,7 +22116,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'transitions': '*', 'prefix': '*', 'tagFilters': '*', - 'expiredObjectDeleteMarker': '*', + 'expiredObjectDeleteMarker': 'boolean', 'objectSizeLessThan': '*', 'objectSizeGreaterThan': '*' }, @@ -16438,7 +22138,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } }, 'accessControl': 'BucketAccessControl', - 'publicReadAccess': '*', + 'publicReadAccess': 'boolean', 'blockPublicAccess': '*', 'metrics': { 'id': '*', @@ -16461,7 +22161,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -16487,7 +22187,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -16506,14 +22206,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'objectsPrefix': '*', 'format': 'InventoryFormat', - 'enabled': '*', + 'enabled': 'boolean', 'inventoryId': '*', 'frequency': 'InventoryFrequency', 'includeObjectVersions': 'InventoryObjectVersion', 'optionalFields': '*' }, 'objectOwnership': 'ObjectOwnership', - 'transferAcceleration': '*', + 'transferAcceleration': 'boolean', 'notificationsHandlerRole': { 'roleArn': '*', 'roleName': '*', @@ -16531,7 +22231,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'notificationsSkipDestinationValidation': '*', + 'notificationsSkipDestinationValidation': 'boolean', 'intelligentTieringConfigurations': { 'name': '*', 'prefix': '*', @@ -16551,7 +22251,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -16565,13 +22265,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'policy': '*', 'replicationRoleArn': '*' }, - 'accessControlTransition': '*', + 'accessControlTransition': 'boolean', 'replicationTimeControl': '*', 'storageClass': '*', - 'sseKmsEncryptedObjects': '*', - 'replicaModifications': '*', + 'sseKmsEncryptedObjects': 'boolean', + 'replicaModifications': 'boolean', 'priority': '*', - 'deleteMarkerReplication': '*', + 'deleteMarkerReplication': 'boolean', 'id': '*', 'filter': { 'prefix': '*', @@ -16580,7 +22280,80 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'value': '*' } } - } + }, + 'addLifecycleRule': [ + { + 'id': '*', + 'enabled': 'boolean', + 'abortIncompleteMultipartUploadAfter': '*', + 'expirationDate': '*', + 'noncurrentVersionsToRetain': '*', + 'noncurrentVersionTransitions': { + 'storageClass': '*', + 'noncurrentVersionsToRetain': '*' + }, + 'transitions': '*', + 'prefix': '*', + 'tagFilters': '*', + 'expiredObjectDeleteMarker': 'boolean', + 'objectSizeLessThan': '*', + 'objectSizeGreaterThan': '*' + } + ], + 'addMetric': [ + { + 'id': '*', + 'prefix': '*', + 'tagFilters': '*' + } + ], + 'addCorsRule': [ + { + 'id': '*', + 'maxAge': '*', + 'allowedHeaders': '*', + 'allowedMethods': 'HttpMethods', + 'allowedOrigins': '*', + 'exposedHeaders': '*' + } + ], + 'addInventory': [ + { + 'destination': { + 'bucket': { + 'bucketArn': '*', + 'bucketName': '*', + 'bucketWebsiteUrl': '*', + 'bucketWebsiteDomainName': '*', + 'bucketDomainName': '*', + 'bucketDualStackDomainName': '*', + 'bucketRegionalDomainName': '*', + 'isWebsite': 'boolean', + 'encryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'policy': '*', + 'replicationRoleArn': '*' + }, + 'prefix': '*', + 'bucketOwner': '*' + }, + 'objectsPrefix': '*', + 'format': 'InventoryFormat', + 'enabled': 'boolean', + 'inventoryId': '*', + 'frequency': 'InventoryFrequency', + 'includeObjectVersions': 'InventoryObjectVersion', + 'optionalFields': '*' + } + ] } }, 'aws-cdk-lib.aws-secretsmanager': { @@ -16639,13 +22412,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -16654,7 +22427,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'hostedRotation': '*', 'automaticallyAfter': '*', - 'rotateImmediatelyOnUpdate': '*' + 'rotateImmediatelyOnUpdate': 'boolean' }, 'Secret': { 'description': '*', @@ -16669,14 +22442,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'generateSecretString': { - 'excludeUppercase': '*', - 'requireEachIncludedType': '*', - 'includeSpace': '*', + 'excludeUppercase': 'boolean', + 'requireEachIncludedType': 'boolean', + 'includeSpace': 'boolean', 'excludeCharacters': '*', 'passwordLength': '*', - 'excludePunctuation': '*', - 'excludeLowercase': '*', - 'excludeNumbers': '*', + 'excludePunctuation': 'boolean', + 'excludeLowercase': 'boolean', + 'excludeNumbers': 'boolean', 'secretStringTemplate': '*', 'generateStringKey': '*' }, @@ -16697,7 +22470,26 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' } - } + }, + 'addTargetAttachment': [ + '*', + { + 'target': '*' + } + ], + 'addReplicaRegion': [ + '*', + { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] }, 'SecretTargetAttachment': { 'secret': { @@ -16716,7 +22508,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'secretName': '*', 'secretValue': '*' }, - 'target': '*' + 'target': '*', + 'addToResourcePolicy': [ + '*' + ] } }, 'aws-cdk-lib.aws-servicecatalog': { @@ -16732,14 +22527,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'productName': '*', 'productVersions': { 'description': '*', - 'validateTemplate': '*', + 'validateTemplate': 'boolean', 'cloudFormationTemplate': '*', 'productVersionName': '*' }, 'messageLanguage': 'MessageLanguage', 'description': '*', 'distributor': '*', - 'replaceProductVersionIds': '*', + 'replaceProductVersionIds': 'boolean', 'supportDescription': '*', 'supportEmail': '*', 'supportUrl': '*', @@ -16802,7 +22597,22 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'HttpNamespace': { 'name': '*', - 'description': '*' + 'description': '*', + 'createService': [ + '*', + { + 'name': '*', + 'description': '*', + 'healthCheck': { + 'type': 'HealthCheckType', + 'resourcePath': '*', + 'failureThreshold': '*' + }, + 'customHealthCheck': { + 'failureThreshold': '*' + } + } + ] }, 'IpInstance': { 'service': { @@ -16879,11 +22689,51 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'vpnGatewayId': '*' }, 'name': '*', - 'description': '*' + 'description': '*', + 'createService': [ + '*', + { + 'discoveryType': 'DiscoveryType', + 'dnsRecordType': 'DnsRecordType', + 'dnsTtl': '*', + 'routingPolicy': 'RoutingPolicy', + 'loadBalancer': 'boolean', + 'name': '*', + 'description': '*', + 'healthCheck': { + 'type': 'HealthCheckType', + 'resourcePath': '*', + 'failureThreshold': '*' + }, + 'customHealthCheck': { + 'failureThreshold': '*' + } + } + ] }, 'PublicDnsNamespace': { 'name': '*', - 'description': '*' + 'description': '*', + 'createService': [ + '*', + { + 'discoveryType': 'DiscoveryType', + 'dnsRecordType': 'DnsRecordType', + 'dnsTtl': '*', + 'routingPolicy': 'RoutingPolicy', + 'loadBalancer': 'boolean', + 'name': '*', + 'description': '*', + 'healthCheck': { + 'type': 'HealthCheckType', + 'resourcePath': '*', + 'failureThreshold': '*' + }, + 'customHealthCheck': { + 'failureThreshold': '*' + } + } + ] }, 'Service': { 'namespace': { @@ -16902,7 +22752,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'dnsRecordType': 'DnsRecordType', 'dnsTtl': '*', 'routingPolicy': 'RoutingPolicy', - 'loadBalancer': '*', + 'loadBalancer': 'boolean', 'name': '*', 'description': '*', 'healthCheck': { @@ -16912,7 +22762,46 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'customHealthCheck': { 'failureThreshold': '*' - } + }, + 'registerLoadBalancer': [ + '*', + { + 'loadBalancerCanonicalHostedZoneId': '*', + 'loadBalancerDnsName': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + '*' + ], + 'registerNonIpInstance': [ + '*', + { + 'instanceId': '*', + 'customAttributes': '*' + } + ], + 'registerIpInstance': [ + '*', + { + 'port': '*', + 'ipv4': '*', + 'ipv6': '*', + 'instanceId': '*', + 'customAttributes': '*' + } + ], + 'registerCnameInstance': [ + '*', + { + 'instanceCname': '*', + 'instanceId': '*', + 'customAttributes': '*' + } + ] } }, 'aws-cdk-lib.aws-ses': { @@ -16927,7 +22816,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'configurationSetEventDestinationName': '*', - 'enabled': '*', + 'enabled': 'boolean', 'destination': '*', 'events': 'EmailSendingEvent' }, @@ -16943,16 +22832,25 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'tlsPolicy': 'ConfigurationSetTlsPolicy', - 'reputationMetrics': '*', - 'sendingEnabled': '*', + 'reputationMetrics': 'boolean', + 'sendingEnabled': 'boolean', 'suppressionReasons': 'SuppressionReasons', - 'disableSuppressionList': '*', + 'disableSuppressionList': 'boolean', 'customTrackingRedirectDomain': '*', 'vdmOptions': { - 'engagementMetrics': '*', - 'optimizedSharedDelivery': '*' - }, - 'maxDeliveryDuration': '*' + 'engagementMetrics': 'boolean', + 'optimizedSharedDelivery': 'boolean' + }, + 'maxDeliveryDuration': '*', + 'addEventDestination': [ + '*', + { + 'configurationSetEventDestinationName': '*', + 'enabled': 'boolean', + 'destination': '*', + 'events': 'EmailSendingEvent' + } + ] }, 'DedicatedIpPool': { 'dedicatedIpPoolName': '*', @@ -16969,9 +22867,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'dkimSigning': '*', + 'dkimSigning': 'boolean', 'dkimIdentity': '*', - 'feedbackForwarding': '*', + 'feedbackForwarding': 'boolean', 'mailFromDomain': '*', 'mailFromBehaviorOnMxFailure': 'MailFromBehaviorOnMxFailure' }, @@ -16993,13 +22891,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enabled': '*', + 'enabled': 'boolean', 'receiptRuleName': '*', 'recipients': '*', - 'scanEnabled': '*', + 'scanEnabled': 'boolean', 'tlsPolicy': 'TlsPolicy' }, - 'dropSpam': '*' + 'dropSpam': 'boolean' }, 'ReceiptRule': { 'ruleSet': { @@ -17021,15 +22919,18 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'enabled': '*', + 'enabled': 'boolean', 'receiptRuleName': '*', 'recipients': '*', - 'scanEnabled': '*', - 'tlsPolicy': 'TlsPolicy' + 'scanEnabled': 'boolean', + 'tlsPolicy': 'TlsPolicy', + 'addAction': [ + '*' + ] }, 'VdmAttributes': { - 'engagementMetrics': '*', - 'optimizedSharedDelivery': '*' + 'engagementMetrics': 'boolean', + 'optimizedSharedDelivery': 'boolean' } }, 'aws-cdk-lib.aws-signer': { @@ -17044,8 +22945,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'topics': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -17054,14 +22955,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'policyDocument': '*', - 'enforceSSL': '*' + 'enforceSSL': 'boolean' }, 'Subscription': { 'topic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -17071,7 +22972,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'protocol': 'SubscriptionProtocol', 'endpoint': '*', - 'rawMessageDelivery': '*', + 'rawMessageDelivery': 'boolean', 'filterPolicy': '*', 'filterPolicyWithMessageBody': '*', 'region': '*', @@ -17089,7 +22990,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' }, 'subscriptionRoleArn': '*', @@ -17123,8 +23024,8 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'loggingConfigs': { 'protocol': 'LoggingProtocol', 'failureFeedbackRole': { @@ -17147,9 +23048,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'successFeedbackSampleRate': '*' }, 'messageRetentionPeriodInDays': '*', - 'enforceSSL': '*', + 'enforceSSL': 'boolean', 'signatureVersion': '*', - 'tracingConfig': 'TracingConfig' + 'tracingConfig': 'TracingConfig', + 'fifoThroughputScope': 'FifoThroughputScope', + 'addLoggingConfig': [ + { + 'protocol': 'LoggingProtocol', + 'failureFeedbackRole': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'successFeedbackSampleRate': '*' + } + ] } }, 'aws-cdk-lib.aws-sqs': { @@ -17168,7 +23093,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' } }, @@ -17194,7 +23119,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' }, 'maxReceiveCount': '*' @@ -17211,12 +23136,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'dataKeyReuse': '*', - 'fifo': '*', - 'contentBasedDeduplication': '*', + 'fifo': 'boolean', + 'contentBasedDeduplication': 'boolean', 'deduplicationScope': 'DeduplicationScope', 'fifoThroughputLimit': 'FifoThroughputLimit', 'removalPolicy': 'RemovalPolicy', - 'enforceSSL': '*', + 'enforceSSL': 'boolean', 'redriveAllowPolicy': { 'redrivePermission': 'RedrivePermission', 'sourceQueues': { @@ -17233,7 +23158,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' } } @@ -17247,7 +23172,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowedPattern': '*', 'description': '*', 'parameterName': '*', - 'simpleName': '*', + 'simpleName': 'boolean', 'tier': 'ParameterTier' }, 'StringListParameter': { @@ -17255,14 +23180,175 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'allowedPattern': '*', 'description': '*', 'parameterName': '*', - 'simpleName': '*', + 'simpleName': 'boolean', 'tier': 'ParameterTier' } }, 'aws-cdk-lib.aws-stepfunctions': { 'Activity': { 'activityName': '*', - 'encryptionConfiguration': '*' + 'encryptionConfiguration': '*', + 'grant': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + '*' + ], + 'metric': [ + '*', + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricRunTime': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricScheduleTime': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricTime': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricScheduled': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricTimedOut': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricStarted': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricSucceeded': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricFailed': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricHeartbeatTimedOut': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ] }, 'StateMachine': { 'stateMachineName': '*', @@ -17292,6 +23378,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'timeout': '*', 'comment': '*', + 'queryLanguage': 'QueryLanguage', 'stateMachineType': 'StateMachineType', 'logs': { 'destination': { @@ -17304,12 +23391,15 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'includeExecutionData': '*', + 'includeExecutionData': 'boolean', 'level': 'LogLevel' }, - 'tracingEnabled': '*', + 'tracingEnabled': 'boolean', 'removalPolicy': 'RemovalPolicy', - 'encryptionConfiguration': '*' + 'encryptionConfiguration': '*', + 'addToRolePolicy': [ + '*' + ] } }, 'aws-cdk-lib.aws-synthetics': { @@ -17323,7 +23413,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -17358,13 +23448,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'timeToLive': '*', 'schedule': '*', - 'startAfterCreation': '*', + 'startAfterCreation': 'boolean', 'successRetentionPeriod': '*', 'failureRetentionPeriod': '*', 'canaryName': '*', 'runtime': '*', 'test': '*', - 'activeTracing': '*', + 'activeTracing': 'boolean', 'environmentVariables': '*', 'memory': '*', 'timeout': '*', @@ -17395,7 +23485,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -17415,21 +23505,22 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'cleanup': 'Cleanup', + 'provisionedResourceCleanup': 'boolean', 'artifactsBucketLifecycleRules': { 'id': '*', - 'enabled': '*', + 'enabled': 'boolean', 'abortIncompleteMultipartUploadAfter': '*', 'expirationDate': '*', 'noncurrentVersionsToRetain': '*', @@ -17440,7 +23531,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'transitions': '*', 'prefix': '*', 'tagFilters': '*', - 'expiredObjectDeleteMarker': '*', + 'expiredObjectDeleteMarker': 'boolean', 'objectSizeLessThan': '*', 'objectSizeGreaterThan': '*' }, @@ -17454,7 +23545,52 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } + }, + 'metricDuration': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricSuccessPercent': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricFailed': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ] } }, 'aws-cdk-lib.core': { @@ -17464,9 +23600,24 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'properties': '*', 'resourceType': '*', 'removalPolicy': 'RemovalPolicy', - 'pascalCaseProperties': '*' + 'pascalCaseProperties': 'boolean', + 'getAtt': [ + '*' + ], + 'getAttString': [ + '*' + ] } }, + 'aws-cdk-lib.lambda-layer-awscli': { + 'AwsCliLayer': {} + }, + 'aws-cdk-lib.lambda-layer-kubectl': { + 'KubectlLayer': {} + }, + 'aws-cdk-lib.lambda-layer-node-proxy-agent': { + 'NodeProxyAgentLayer': {} + }, 'aws-cdk-lib.triggers': { 'TriggerFunction': { 'runtime': '*', @@ -17518,13 +23669,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'ipv6AllowedForDualStack': '*', + 'ipv6AllowedForDualStack': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -17544,33 +23695,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'allowAllOutbound': '*', - 'allowAllIpv6Outbound': '*', - 'deadLetterQueueEnabled': '*', + 'allowAllOutbound': 'boolean', + 'allowAllIpv6Outbound': 'boolean', + 'deadLetterQueueEnabled': 'boolean', 'deadLetterQueue': { 'queueArn': '*', 'queueUrl': '*', @@ -17585,14 +23736,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' }, 'deadLetterTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -17602,7 +23753,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tracing': 'Tracing', 'snapStart': '*', - 'profiling': '*', + 'profiling': 'boolean', 'profilingGroup': { 'profilingGroupName': '*', 'profilingGroupArn': '*', @@ -17663,7 +23814,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'retryAttempts': '*' }, 'filesystem': '*', - 'allowPublicSubnet': '*', + 'allowPublicSubnet': 'boolean', 'environmentEncryption': { 'keyArn': '*', 'keyId': '*', @@ -17708,9 +23859,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'onSuccess': '*', 'maxEventAge': '*', 'retryAttempts': '*', - 'executeAfter': '*', - 'executeBefore': '*', - 'executeOnHandlerChange': '*' + 'executeAfter': [ + '*' + ], + 'executeBefore': [ + '*' + ], + 'executeOnHandlerChange': 'boolean' } }, 'aws-glue-alpha.lib': { @@ -17724,7 +23879,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -17739,11 +23894,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'replicationRoleArn': '*' }, 'prefix': '*', - 'jobRunQueuingEnabled': '*' + 'jobRunQueuingEnabled': 'boolean' }, 'extraPythonFiles': '*', 'extraFiles': '*', - 'jobRunQueuingEnabled': '*', + 'jobRunQueuingEnabled': 'boolean', 'script': '*', 'role': { 'roleArn': '*', @@ -17791,9 +23946,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tags': '*', 'glueVersion': 'GlueVersion', - 'enableProfilingMetrics': '*', + 'enableProfilingMetrics': 'boolean', 'continuousLogging': { - 'enabled': '*', + 'enabled': 'boolean', 'logGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -17805,7 +23960,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'logStreamPrefix': '*', - 'quiet': '*', + 'quiet': 'boolean', 'conversionPattern': '*' } }, @@ -17819,7 +23974,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -17834,7 +23989,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'replicationRoleArn': '*' }, 'prefix': '*', - 'jobRunQueuingEnabled': '*' + 'jobRunQueuingEnabled': 'boolean' }, 'notifyDelayAfter': '*', 'extraPythonFiles': '*', @@ -17886,9 +24041,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tags': '*', 'glueVersion': 'GlueVersion', - 'enableProfilingMetrics': '*', + 'enableProfilingMetrics': 'boolean', 'continuousLogging': { - 'enabled': '*', + 'enabled': 'boolean', 'logGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -17900,7 +24055,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'logStreamPrefix': '*', - 'quiet': '*', + 'quiet': 'boolean', 'conversionPattern': '*' } }, @@ -17914,7 +24069,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -17929,11 +24084,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'replicationRoleArn': '*' }, 'prefix': '*', - 'jobRunQueuingEnabled': '*' + 'jobRunQueuingEnabled': 'boolean' }, 'extraPythonFiles': '*', 'extraFiles': '*', - 'jobRunQueuingEnabled': '*', + 'jobRunQueuingEnabled': 'boolean', 'script': '*', 'role': { 'roleArn': '*', @@ -17981,9 +24136,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tags': '*', 'glueVersion': 'GlueVersion', - 'enableProfilingMetrics': '*', + 'enableProfilingMetrics': 'boolean', 'continuousLogging': { - 'enabled': '*', + 'enabled': 'boolean', 'logGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -17995,14 +24150,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'logStreamPrefix': '*', - 'quiet': '*', + 'quiet': 'boolean', 'conversionPattern': '*' } }, 'PythonShellJob': { 'pythonVersion': 'PythonVersion', 'maxCapacity': 'MaxCapacity', - 'jobRunQueuingEnabled': '*', + 'jobRunQueuingEnabled': 'boolean', 'script': '*', 'role': { 'roleArn': '*', @@ -18050,9 +24205,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tags': '*', 'glueVersion': 'GlueVersion', - 'enableProfilingMetrics': '*', + 'enableProfilingMetrics': 'boolean', 'continuousLogging': { - 'enabled': '*', + 'enabled': 'boolean', 'logGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -18064,13 +24219,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'logStreamPrefix': '*', - 'quiet': '*', + 'quiet': 'boolean', 'conversionPattern': '*' } }, 'RayJob': { 'runtime': 'Runtime', - 'jobRunQueuingEnabled': '*', + 'jobRunQueuingEnabled': 'boolean', 'script': '*', 'role': { 'roleArn': '*', @@ -18118,9 +24273,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tags': '*', 'glueVersion': 'GlueVersion', - 'enableProfilingMetrics': '*', + 'enableProfilingMetrics': 'boolean', 'continuousLogging': { - 'enabled': '*', + 'enabled': 'boolean', 'logGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -18132,7 +24287,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'logStreamPrefix': '*', - 'quiet': '*', + 'quiet': 'boolean', 'conversionPattern': '*' } }, @@ -18146,7 +24301,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -18161,11 +24316,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'replicationRoleArn': '*' }, 'prefix': '*', - 'jobRunQueuingEnabled': '*' + 'jobRunQueuingEnabled': 'boolean' }, 'className': '*', 'extraJars': '*', - 'jobRunQueuingEnabled': '*', + 'jobRunQueuingEnabled': 'boolean', 'script': '*', 'role': { 'roleArn': '*', @@ -18213,9 +24368,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tags': '*', 'glueVersion': 'GlueVersion', - 'enableProfilingMetrics': '*', + 'enableProfilingMetrics': 'boolean', 'continuousLogging': { - 'enabled': '*', + 'enabled': 'boolean', 'logGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -18227,7 +24382,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'logStreamPrefix': '*', - 'quiet': '*', + 'quiet': 'boolean', 'conversionPattern': '*' } }, @@ -18241,7 +24396,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -18256,12 +24411,12 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'replicationRoleArn': '*' }, 'prefix': '*', - 'jobRunQueuingEnabled': '*' + 'jobRunQueuingEnabled': 'boolean' }, 'notifyDelayAfter': '*', 'className': '*', 'extraJars': '*', - 'extraJarsFirst': '*', + 'extraJarsFirst': 'boolean', 'extraFiles': '*', 'script': '*', 'role': { @@ -18310,9 +24465,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tags': '*', 'glueVersion': 'GlueVersion', - 'enableProfilingMetrics': '*', + 'enableProfilingMetrics': 'boolean', 'continuousLogging': { - 'enabled': '*', + 'enabled': 'boolean', 'logGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -18324,7 +24479,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'logStreamPrefix': '*', - 'quiet': '*', + 'quiet': 'boolean', 'conversionPattern': '*' } }, @@ -18338,7 +24493,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -18353,11 +24508,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'replicationRoleArn': '*' }, 'prefix': '*', - 'jobRunQueuingEnabled': '*' + 'jobRunQueuingEnabled': 'boolean' }, 'className': '*', 'extraJars': '*', - 'jobRunQueuingEnabled': '*', + 'jobRunQueuingEnabled': 'boolean', 'script': '*', 'role': { 'roleArn': '*', @@ -18405,9 +24560,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tags': '*', 'glueVersion': 'GlueVersion', - 'enableProfilingMetrics': '*', + 'enableProfilingMetrics': 'boolean', 'continuousLogging': { - 'enabled': '*', + 'enabled': 'boolean', 'logGroup': { 'logGroupArn': '*', 'logGroupName': '*', @@ -18419,10 +24574,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'logStreamPrefix': '*', - 'quiet': '*', + 'quiet': 'boolean', 'conversionPattern': '*' } - } + }, + 'Workflow': {} }, 'aws-apigateway.lib': { 'CognitoUserPoolsAuthorizer': { @@ -18442,7 +24598,63 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } }, 'resultsCacheTtl': '*', - 'identitySource': '*' + 'identitySource': '*', + '_attachToApi': [ + { + 'restApiId': '*', + 'restApiName': '*', + 'restApiRootResourceId': '*', + 'latestDeployment': '*', + 'deploymentStage': '*', + 'root': { + 'restApi': '*', + 'resourceId': '*', + 'path': '*', + 'defaultIntegration': '*', + 'defaultMethodOptions': { + 'operationName': '*', + 'authorizationType': 'AuthorizationType', + 'authorizer': { + 'authorizerId': '*', + 'authorizationType': 'AuthorizationType' + }, + 'apiKeyRequired': 'boolean', + 'methodResponses': { + 'statusCode': '*', + 'responseParameters': '*', + 'responseModels': '*' + }, + 'requestParameters': '*', + 'requestModels': '*', + 'requestValidator': { + 'requestValidatorId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'authorizationScopes': '*', + 'requestValidatorOptions': { + 'requestValidatorName': '*', + 'validateRequestBody': 'boolean', + 'validateRequestParameters': 'boolean' + } + }, + 'defaultCorsPreflightOptions': { + 'statusCode': '*', + 'allowOrigins': '*', + 'allowHeaders': '*', + 'allowMethods': '*', + 'allowCredentials': 'boolean', + 'maxAge': '*', + 'disableCache': 'boolean', + 'exposeHeaders': '*' + } + } + } + ] }, 'TokenAuthorizer': { 'validationRegex': '*', @@ -18468,13 +24680,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -18523,13 +24735,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -18602,7 +24814,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -18639,7 +24851,60 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'region': '*' }, 'node': '*' - } + }, + 'addEndpoint': [ + { + 'certificate': { + 'certificateArn': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'certificateName': '*', + 'endpointType': 'EndpointType', + 'securityPolicy': 'SecurityPolicy' + } + ] + }, + 'HttpApi': { + 'addStage': [ + '*', + { + 'stageName': '*', + 'autoDeploy': 'boolean', + 'domainMapping': { + 'domainName': { + 'name': '*', + 'regionalDomainName': '*', + 'regionalHostedZoneId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'mappingKey': '*' + }, + 'throttle': { + 'rateLimit': '*', + 'burstLimit': '*' + }, + 'description': '*' + } + ], + 'addRoutes': [ + { + 'path': '*', + 'methods': 'HttpMethod', + 'authorizer': '*', + 'authorizationScopes': '*', + 'integration': '*' + } + ] }, 'HttpAuthorizer': { 'authorizerName': '*', @@ -18659,7 +24924,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'identitySource': '*', 'jwtAudience': '*', 'jwtIssuer': '*', - 'enableSimpleResponses': '*', + 'enableSimpleResponses': 'boolean', 'payloadFormatVersion': 'AuthorizerPayloadVersion', 'authorizerUri': '*', 'resultsCacheTtl': '*' @@ -18705,7 +24970,19 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'routeKey': '*', 'authorizer': '*', 'authorizationScopes': '*', - 'integration': '*' + 'integration': '*', + 'grantInvoke': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + { + 'httpMethods': 'HttpMethod' + } + ] }, 'HttpStage': { 'httpApi': { @@ -18721,7 +24998,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'stageName': '*', - 'autoDeploy': '*', + 'autoDeploy': 'boolean', 'domainMapping': { 'domainName': { 'name': '*', @@ -18771,7 +25048,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -18791,17 +25068,77 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' - } + }, + 'addSubnets': [ + { + 'availabilityZone': '*', + 'subnetId': '*', + 'internetConnectivityEstablished': '*', + 'ipv4CidrBlock': '*', + 'routeTable': { + 'routeTableId': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'addSecurityGroups': [ + { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + ] + }, + 'WebSocketApi': { + 'addRoute': [ + '*', + { + 'integration': '*', + 'authorizer': '*', + 'returnResponse': 'boolean' + } + ], + 'grantManageConnections': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'arnForExecuteApi': [ + '*', + '*', + '*' + ], + 'arnForExecuteApiV2': [ + '*', + '*' + ] }, 'WebSocketAuthorizer': { 'authorizerName': '*', @@ -18869,10 +25206,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'routeKey': '*', - 'apiKeyRequired': '*', + 'apiKeyRequired': 'boolean', 'integration': '*', 'authorizer': '*', - 'returnResponse': '*' + 'returnResponse': 'boolean' }, 'WebSocketStage': { 'webSocketApi': { @@ -18886,7 +25223,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'stageName': '*', - 'autoDeploy': '*', + 'autoDeploy': 'boolean', 'domainMapping': { 'domainName': { 'name': '*', @@ -18905,7 +25242,16 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'rateLimit': '*', 'burstLimit': '*' }, - 'description': '*' + 'description': '*', + 'grantManagementApiAccess': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] } }, 'aws-cloudfront.lib': { @@ -18960,13 +25306,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'ipv6AllowedForDualStack': '*', + 'ipv6AllowedForDualStack': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -18986,33 +25332,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, - 'allowAllOutbound': '*', - 'allowAllIpv6Outbound': '*', - 'deadLetterQueueEnabled': '*', + 'allowAllOutbound': 'boolean', + 'allowAllIpv6Outbound': 'boolean', + 'deadLetterQueueEnabled': 'boolean', 'deadLetterQueue': { 'queueArn': '*', 'queueUrl': '*', @@ -19027,14 +25373,14 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'fifo': '*', + 'fifo': 'boolean', 'encryptionType': 'QueueEncryption' }, 'deadLetterTopic': { 'topicArn': '*', 'topicName': '*', - 'contentBasedDeduplication': '*', - 'fifo': '*', + 'contentBasedDeduplication': 'boolean', + 'fifo': 'boolean', 'stack': '*', 'env': { 'account': '*', @@ -19044,7 +25390,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'tracing': 'Tracing', 'snapStart': '*', - 'profiling': '*', + 'profiling': 'boolean', 'profilingGroup': { 'profilingGroupName': '*', 'profilingGroupArn': '*', @@ -19105,7 +25451,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'retryAttempts': '*' }, 'filesystem': '*', - 'allowPublicSubnet': '*', + 'allowPublicSubnet': 'boolean', 'environmentEncryption': { 'keyArn': '*', 'keyId': '*', @@ -19137,25 +25483,307 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'account': '*', 'region': '*' }, - 'node': '*' - }, - 'logFormat': '*', - 'loggingFormat': 'LoggingFormat', - 'recursiveLoop': 'RecursiveLoop', - 'applicationLogLevel': '*', - 'applicationLogLevelV2': 'ApplicationLogLevel', - 'systemLogLevel': '*', - 'systemLogLevelV2': 'SystemLogLevel', - 'onFailure': '*', - 'onSuccess': '*', - 'maxEventAge': '*', - 'retryAttempts': '*' + 'node': '*' + }, + 'logFormat': '*', + 'loggingFormat': 'LoggingFormat', + 'recursiveLoop': 'RecursiveLoop', + 'applicationLogLevel': '*', + 'applicationLogLevelV2': 'ApplicationLogLevel', + 'systemLogLevel': '*', + 'systemLogLevelV2': 'SystemLogLevel', + 'onFailure': '*', + 'onSuccess': '*', + 'maxEventAge': '*', + 'retryAttempts': '*', + 'addAlias': [ + '*', + { + 'description': '*', + 'additionalVersions': { + 'version': { + 'version': '*', + 'lambda': { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'resourceArnsForGrantInvoke': '*' + }, + 'weight': '*' + }, + 'provisionedConcurrentExecutions': '*', + 'onFailure': '*', + 'maxEventAge': '*', + 'retryAttempts': '*' + } + ], + 'addEventSourceMapping': [ + '*', + { + 'eventSourceArn': '*', + 'batchSize': '*', + 'bisectBatchOnError': 'boolean', + 'onFailure': '*', + 'enabled': 'boolean', + 'startingPosition': 'StartingPosition', + 'startingPositionTimestamp': '*', + 'reportBatchItemFailures': 'boolean', + 'maxBatchingWindow': '*', + 'maxConcurrency': '*', + 'retryAttempts': '*', + 'parallelizationFactor': '*', + 'kafkaTopic': '*', + 'kafkaBootstrapServers': '*', + 'kafkaConsumerGroupId': '*', + 'sourceAccessConfigurations': { + 'type': '*', + 'uri': '*' + }, + 'filters': '*', + 'filterEncryption': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'supportS3OnFailureDestination': 'boolean', + 'provisionedPollerConfig': { + 'minimumPollers': '*', + 'maximumPollers': '*' + }, + 'metricsConfig': { + 'metrics': 'MetricType' + } + } + ], + 'addPermission': [ + '*', + { + 'action': '*', + 'eventSourceToken': '*', + 'principal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + }, + 'scope': '*', + 'sourceAccount': '*', + 'sourceArn': '*', + 'organizationId': '*', + 'functionUrlAuthType': 'FunctionUrlAuthType' + } + ], + 'addToRolePolicy': [ + '*' + ], + 'grantInvoke': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'grantInvokeLatestVersion': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'grantInvokeVersion': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + }, + { + 'version': '*', + 'lambda': { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'resourceArnsForGrantInvoke': '*' + } + ], + 'grantInvokeUrl': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'grantInvokeCompositePrincipal': [ + '*' + ], + 'metric': [ + '*', + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricDuration': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricErrors': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricInvocations': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricThrottles': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'addEventSource': [ + '*' + ], + 'configureAsyncInvoke': [ + { + 'onFailure': '*', + 'maxEventAge': '*', + 'retryAttempts': '*' + } + ], + 'addFunctionUrl': [ + { + 'authType': 'FunctionUrlAuthType', + 'cors': { + 'allowCredentials': 'boolean', + 'allowedHeaders': '*', + 'allowedMethods': 'HttpMethod', + 'allowedOrigins': '*', + 'exposedHeaders': '*', + 'maxAge': '*' + }, + 'invokeMode': 'InvokeMode' + } + ] } }, 'aws-codedeploy.lib': { 'EcsApplication': { 'applicationName': '*' }, + 'EcsDeploymentConfig': {}, 'EcsDeploymentGroup': { 'application': { 'applicationArn': '*', @@ -19226,7 +25854,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'vpnGatewayId': '*' }, 'connections': '*', - 'hasEc2Capacity': '*', + 'hasEc2Capacity': 'boolean', 'defaultCloudMapNamespace': { 'namespaceName': '*', 'namespaceId': '*', @@ -19249,7 +25877,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'keyId': '*' }, 'logConfiguration': { - 'cloudWatchEncryptionEnabled': '*', + 'cloudWatchEncryptionEnabled': 'boolean', 'cloudWatchLogGroup': { 'logGroupArn': '*', 'logGroupName': '*' @@ -19262,11 +25890,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'policy': '*', 'replicationRoleArn': '*' }, - 's3EncryptionEnabled': '*', + 's3EncryptionEnabled': 'boolean', 's3KeyPrefix': '*' }, 'logging': 'ExecuteCommandLogging' @@ -19293,13 +25921,25 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'deploymentApprovalWaitTime': '*' }, - 'ignorePollAlarmsFailure': '*', + 'ignorePollAlarmsFailure': 'boolean', 'autoRollback': { - 'failedDeployment': '*', - 'stoppedDeployment': '*', - 'deploymentInAlarm': '*' + 'failedDeployment': 'boolean', + 'stoppedDeployment': 'boolean', + 'deploymentInAlarm': 'boolean' }, - 'ignoreAlarmConfiguration': '*' + 'ignoreAlarmConfiguration': 'boolean', + 'addAlarm': [ + { + 'alarmArn': '*', + 'alarmName': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] }, 'ImportedEcsDeploymentGroup': { 'application': { @@ -19327,6 +25967,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'interval': '*', 'deploymentConfigName': '*' }, + 'LambdaDeploymentConfig': {}, 'LambdaDeploymentGroup': { 'application': { 'applicationArn': '*', @@ -19391,13 +26032,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' @@ -19424,26 +26065,117 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'latestVersion': { 'version': '*', 'edgeArn': '*', 'functionName': '*', 'functionArn': '*', - 'isBoundToVpc': '*', + 'isBoundToVpc': 'boolean', 'architecture': '*', 'resourceArnsForGrantInvoke': '*', 'connections': '*' }, 'resourceArnsForGrantInvoke': '*' }, - 'ignorePollAlarmsFailure': '*', + 'ignorePollAlarmsFailure': 'boolean', 'autoRollback': { - 'failedDeployment': '*', - 'stoppedDeployment': '*', - 'deploymentInAlarm': '*' + 'failedDeployment': 'boolean', + 'stoppedDeployment': 'boolean', + 'deploymentInAlarm': 'boolean' }, - 'ignoreAlarmConfiguration': '*' + 'ignoreAlarmConfiguration': 'boolean', + 'addAlarm': [ + { + 'alarmArn': '*', + 'alarmName': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ], + 'addPreHook': [ + { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'isBoundToVpc': 'boolean', + 'latestVersion': { + 'version': '*', + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'resourceArnsForGrantInvoke': '*' + } + ], + 'addPostHook': [ + { + 'functionName': '*', + 'functionArn': '*', + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + }, + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'isBoundToVpc': 'boolean', + 'latestVersion': { + 'version': '*', + 'edgeArn': '*', + 'functionName': '*', + 'functionArn': '*', + 'isBoundToVpc': 'boolean', + 'architecture': '*', + 'resourceArnsForGrantInvoke': '*', + 'connections': '*' + }, + 'resourceArnsForGrantInvoke': '*' + } + ], + 'grantPutLifecycleEventHookExecutionStatus': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ] }, 'ImportedLambdaDeploymentGroup': { 'application': { @@ -19573,7 +26305,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'principalAccount': '*' } }, - 'installAgent': '*', + 'installAgent': 'boolean', 'loadBalancer': '*', 'loadBalancers': '*', 'ec2InstanceTags': '*', @@ -19588,16 +26320,34 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'ignorePollAlarmsFailure': '*', + 'ignorePollAlarmsFailure': 'boolean', 'autoRollback': { - 'failedDeployment': '*', - 'stoppedDeployment': '*', - 'deploymentInAlarm': '*' + 'failedDeployment': 'boolean', + 'stoppedDeployment': 'boolean', + 'deploymentInAlarm': 'boolean' }, - 'ignoreAlarmConfiguration': '*', - 'terminationHook': '*' + 'ignoreAlarmConfiguration': 'boolean', + 'terminationHook': 'boolean', + 'addAutoScalingGroup': [ + '*' + ], + 'addAlarm': [ + { + 'alarmArn': '*', + 'alarmName': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + } + ] } }, + 'aws-codepipeline.lib': { + 'AliasWithShorterGeneratedName': {} + }, 'aws-cognito.lib': { 'UserPoolIdentityProviderAmazon': { 'clientId': '*', @@ -19733,10 +26483,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'name': '*', 'identifiers': '*', 'metadata': '*', - 'idpSignout': '*', - 'encryptedResponses': '*', + 'idpSignout': 'boolean', + 'encryptedResponses': 'boolean', 'requestSigningAlgorithm': 'SigningAlgorithm', - 'idpInitiated': '*', + 'idpInitiated': 'boolean', 'userPool': { 'userPoolId': '*', 'userPoolArn': '*', @@ -19855,9 +26605,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'sourcePath': '*' }, 'name': '*', - 'configuredAtLaunch': '*', + 'configuredAtLaunch': 'boolean', 'dockerVolumeConfiguration': { - 'autoprovision': '*', + 'autoprovision': 'boolean', 'driver': '*', 'driverOpts': '*', 'labels': '*', @@ -19874,17 +26624,223 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } } }, - 'enableFaultInjection': '*' + 'enableFaultInjection': 'boolean', + '_validateTarget': [ + { + 'containerName': '*', + 'containerPort': '*', + 'protocol': 'Protocol' + } + ], + '_portRangeFromPortMapping': [ + { + 'containerPort': '*', + 'containerPortRange': '*', + 'hostPort': '*', + 'protocol': 'Protocol', + 'name': '*', + 'appProtocol': '*' + } + ], + 'addToTaskRolePolicy': [ + '*' + ], + 'addToExecutionRolePolicy': [ + '*' + ], + 'addContainer': [ + '*', + { + 'image': '*', + 'containerName': '*', + 'command': '*', + 'credentialSpecs': '*', + 'cpu': '*', + 'disableNetworking': 'boolean', + 'dnsSearchDomains': '*', + 'dnsServers': '*', + 'dockerLabels': '*', + 'dockerSecurityOptions': '*', + 'entryPoint': '*', + 'environment': '*', + 'environmentFiles': '*', + 'secrets': '*', + 'startTimeout': '*', + 'essential': 'boolean', + 'extraHosts': '*', + 'healthCheck': { + 'command': '*', + 'retries': '*' + }, + 'hostname': '*', + 'interactive': 'boolean', + 'memoryLimitMiB': '*', + 'memoryReservationMiB': '*', + 'privileged': 'boolean', + 'readonlyRootFilesystem': 'boolean', + 'user': '*', + 'versionConsistency': 'VersionConsistency', + 'workingDirectory': '*', + 'logging': '*', + 'linuxParameters': '*', + 'gpuCount': '*', + 'portMappings': { + 'containerPort': '*', + 'containerPortRange': '*', + 'hostPort': '*', + 'protocol': 'Protocol', + 'name': '*', + 'appProtocol': '*' + }, + 'inferenceAcceleratorResources': '*', + 'systemControls': { + 'namespace': '*', + 'value': '*' + }, + 'pseudoTerminal': 'boolean', + 'ulimits': { + 'name': 'UlimitName', + 'softLimit': '*', + 'hardLimit': '*' + }, + 'enableRestartPolicy': 'boolean', + 'restartIgnoredExitCodes': '*' + } + ], + 'addFirelensLogRouter': [ + '*', + { + 'firelensConfig': { + 'type': 'FirelensLogRouterType', + 'options': { + 'enableECSLogMetadata': 'boolean', + 'configFileType': 'FirelensConfigFileType', + 'configFileValue': '*' + } + }, + 'image': '*', + 'containerName': '*', + 'command': '*', + 'credentialSpecs': '*', + 'cpu': '*', + 'disableNetworking': 'boolean', + 'dnsSearchDomains': '*', + 'dnsServers': '*', + 'dockerLabels': '*', + 'dockerSecurityOptions': '*', + 'entryPoint': '*', + 'environment': '*', + 'environmentFiles': '*', + 'secrets': '*', + 'startTimeout': '*', + 'essential': 'boolean', + 'extraHosts': '*', + 'healthCheck': { + 'command': '*', + 'retries': '*' + }, + 'hostname': '*', + 'interactive': 'boolean', + 'memoryLimitMiB': '*', + 'memoryReservationMiB': '*', + 'privileged': 'boolean', + 'readonlyRootFilesystem': 'boolean', + 'user': '*', + 'versionConsistency': 'VersionConsistency', + 'workingDirectory': '*', + 'logging': '*', + 'linuxParameters': '*', + 'gpuCount': '*', + 'portMappings': { + 'containerPort': '*', + 'containerPortRange': '*', + 'hostPort': '*', + 'protocol': 'Protocol', + 'name': '*', + 'appProtocol': '*' + }, + 'inferenceAcceleratorResources': '*', + 'systemControls': { + 'namespace': '*', + 'value': '*' + }, + 'pseudoTerminal': 'boolean', + 'ulimits': { + 'name': 'UlimitName', + 'softLimit': '*', + 'hardLimit': '*' + }, + 'enableRestartPolicy': 'boolean', + 'restartIgnoredExitCodes': '*' + } + ], + '_linkContainer': [ + '*' + ], + 'addVolume': [ + { + 'host': { + 'sourcePath': '*' + }, + 'name': '*', + 'configuredAtLaunch': 'boolean', + 'dockerVolumeConfiguration': { + 'autoprovision': 'boolean', + 'driver': '*', + 'driverOpts': '*', + 'labels': '*', + 'scope': 'Scope' + }, + 'efsVolumeConfiguration': { + 'fileSystemId': '*', + 'rootDirectory': '*', + 'transitEncryption': '*', + 'transitEncryptionPort': '*', + 'authorizationConfig': { + 'accessPointId': '*', + 'iam': '*' + } + } + } + ], + 'addPlacementConstraint': [ + '*' + ], + 'addExtension': [ + '*' + ], + 'addInferenceAccelerator': [ + { + 'deviceName': '*', + 'deviceType': '*' + } + ], + 'grantRun': [ + { + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + } + ], + 'obtainExecutionRole': [], + 'findPortMappingByName': [ + '*' + ], + 'findContainer': [ + '*' + ] }, 'Ec2Service': { 'taskDefinition': '*', - 'assignPublicIp': '*', + 'assignPublicIp': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -19904,33 +26860,33 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'placementConstraints': '*', 'placementStrategies': '*', - 'daemon': '*', + 'daemon': 'boolean', 'cluster': { 'clusterName': '*', 'clusterArn': '*', @@ -19957,7 +26913,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'vpnGatewayId': '*' }, 'connections': '*', - 'hasEc2Capacity': '*', + 'hasEc2Capacity': 'boolean', 'defaultCloudMapNamespace': { 'namespaceName': '*', 'namespaceId': '*', @@ -19980,7 +26936,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'keyId': '*' }, 'logConfiguration': { - 'cloudWatchEncryptionEnabled': '*', + 'cloudWatchEncryptionEnabled': 'boolean', 'cloudWatchLogGroup': { 'logGroupArn': '*', 'logGroupName': '*' @@ -19993,11 +26949,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'policy': '*', 'replicationRoleArn': '*' }, - 's3EncryptionEnabled': '*', + 's3EncryptionEnabled': 'boolean', 's3KeyPrefix': '*' }, 'logging': 'ExecuteCommandLogging' @@ -20030,13 +26986,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'propagateTags': 'PropagatedTagSource', 'propagateTaskTagsFrom': 'PropagatedTagSource', - 'enableECSManagedTags': '*', + 'enableECSManagedTags': 'boolean', 'deploymentController': { 'type': 'DeploymentControllerType' }, 'circuitBreaker': { - 'enable': '*', - 'rollback': '*' + 'enable': 'boolean', + 'rollback': 'boolean' }, 'deploymentAlarms': { 'alarmNames': '*', @@ -20047,7 +27003,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'base': '*', 'weight': '*' }, - 'enableExecuteCommand': '*', + 'enableExecuteCommand': 'boolean', 'serviceConnectConfiguration': { 'namespace': '*', 'services': { @@ -20056,12 +27012,42 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'dnsName': '*', 'port': '*', 'ingressPortOverride': '*', - 'idleTimeout': '*' + 'idleTimeout': '*', + 'tls': { + 'awsPcaAuthorityArn': '*', + 'kmsKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + } + } }, 'logDriver': '*' }, 'taskDefinitionRevision': '*', - 'volumeConfigurations': '*' + 'volumeConfigurations': '*', + 'addPlacementStrategies': [ + '*' + ], + 'addPlacementConstraints': [ + '*' + ] }, 'Ec2TaskDefinition': { 'networkMode': 'NetworkMode', @@ -20113,9 +27099,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'sourcePath': '*' }, 'name': '*', - 'configuredAtLaunch': '*', + 'configuredAtLaunch': 'boolean', 'dockerVolumeConfiguration': { - 'autoprovision': '*', + 'autoprovision': 'boolean', 'driver': '*', 'driverOpts': '*', 'labels': '*', @@ -20132,20 +27118,20 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } } }, - 'enableFaultInjection': '*' + 'enableFaultInjection': 'boolean' }, 'ExternalService': { 'taskDefinition': '*', 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -20175,7 +27161,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'vpnGatewayId': '*' }, 'connections': '*', - 'hasEc2Capacity': '*', + 'hasEc2Capacity': 'boolean', 'defaultCloudMapNamespace': { 'namespaceName': '*', 'namespaceId': '*', @@ -20198,7 +27184,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'keyId': '*' }, 'logConfiguration': { - 'cloudWatchEncryptionEnabled': '*', + 'cloudWatchEncryptionEnabled': 'boolean', 'cloudWatchLogGroup': { 'logGroupArn': '*', 'logGroupName': '*' @@ -20211,11 +27197,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'policy': '*', 'replicationRoleArn': '*' }, - 's3EncryptionEnabled': '*', + 's3EncryptionEnabled': 'boolean', 's3KeyPrefix': '*' }, 'logging': 'ExecuteCommandLogging' @@ -20248,13 +27234,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'propagateTags': 'PropagatedTagSource', 'propagateTaskTagsFrom': 'PropagatedTagSource', - 'enableECSManagedTags': '*', + 'enableECSManagedTags': 'boolean', 'deploymentController': { 'type': 'DeploymentControllerType' }, 'circuitBreaker': { - 'enable': '*', - 'rollback': '*' + 'enable': 'boolean', + 'rollback': 'boolean' }, 'deploymentAlarms': { 'alarmNames': '*', @@ -20265,7 +27251,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'base': '*', 'weight': '*' }, - 'enableExecuteCommand': '*', + 'enableExecuteCommand': 'boolean', 'serviceConnectConfiguration': { 'namespace': '*', 'services': { @@ -20274,12 +27260,116 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'dnsName': '*', 'port': '*', 'ingressPortOverride': '*', - 'idleTimeout': '*' + 'idleTimeout': '*', + 'tls': { + 'awsPcaAuthorityArn': '*', + 'kmsKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + } + } }, 'logDriver': '*' }, 'taskDefinitionRevision': '*', - 'volumeConfigurations': '*' + 'volumeConfigurations': '*', + 'attachToApplicationTargetGroup': [ + { + 'metrics': '*', + 'targetGroupName': '*', + 'targetGroupArn': '*', + 'loadBalancerArns': '*', + 'loadBalancerAttached': '*', + 'node': '*' + } + ], + 'loadBalancerTarget': [ + { + 'containerName': '*', + 'containerPort': '*', + 'protocol': 'Protocol' + } + ], + 'registerLoadBalancerTargets': [ + { + 'containerName': '*', + 'containerPort': '*', + 'protocol': 'Protocol', + 'newTargetGroupId': '*', + 'listener': '*' + } + ], + 'autoScaleTaskCount': [ + { + 'minCapacity': '*', + 'maxCapacity': '*' + } + ], + 'enableCloudMap': [ + { + 'name': '*', + 'cloudMapNamespace': { + 'namespaceName': '*', + 'namespaceId': '*', + 'namespaceArn': '*', + 'type': 'NamespaceType', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'dnsRecordType': 'DnsRecordType', + 'dnsTtl': '*', + 'failureThreshold': '*', + 'container': '*', + 'containerPort': '*' + } + ], + 'associateCloudMapService': [ + { + 'service': { + 'serviceName': '*', + 'namespace': { + 'namespaceName': '*', + 'namespaceId': '*', + 'namespaceArn': '*', + 'type': 'NamespaceType', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'serviceId': '*', + 'serviceArn': '*', + 'dnsRecordType': 'DnsRecordType', + 'routingPolicy': 'RoutingPolicy', + 'discoveryType': 'DiscoveryType' + }, + 'container': '*', + 'containerPort': '*' + } + ] }, 'ExternalTaskDefinition': { 'networkMode': 'NetworkMode', @@ -20324,9 +27414,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'sourcePath': '*' }, 'name': '*', - 'configuredAtLaunch': '*', + 'configuredAtLaunch': 'boolean', 'dockerVolumeConfiguration': { - 'autoprovision': '*', + 'autoprovision': 'boolean', 'driver': '*', 'driverOpts': '*', 'labels': '*', @@ -20343,17 +27433,23 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } } }, - 'enableFaultInjection': '*' + 'enableFaultInjection': 'boolean', + 'addInferenceAccelerator': [ + { + 'deviceName': '*', + 'deviceType': '*' + } + ] }, 'FargateService': { 'taskDefinition': '*', - 'assignPublicIp': '*', + 'assignPublicIp': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -20373,27 +27469,27 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, @@ -20424,7 +27520,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'vpnGatewayId': '*' }, 'connections': '*', - 'hasEc2Capacity': '*', + 'hasEc2Capacity': 'boolean', 'defaultCloudMapNamespace': { 'namespaceName': '*', 'namespaceId': '*', @@ -20447,7 +27543,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'keyId': '*' }, 'logConfiguration': { - 'cloudWatchEncryptionEnabled': '*', + 'cloudWatchEncryptionEnabled': 'boolean', 'cloudWatchLogGroup': { 'logGroupArn': '*', 'logGroupName': '*' @@ -20460,11 +27556,11 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'policy': '*', 'replicationRoleArn': '*' }, - 's3EncryptionEnabled': '*', + 's3EncryptionEnabled': 'boolean', 's3KeyPrefix': '*' }, 'logging': 'ExecuteCommandLogging' @@ -20497,13 +27593,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'propagateTags': 'PropagatedTagSource', 'propagateTaskTagsFrom': 'PropagatedTagSource', - 'enableECSManagedTags': '*', + 'enableECSManagedTags': 'boolean', 'deploymentController': { 'type': 'DeploymentControllerType' }, 'circuitBreaker': { - 'enable': '*', - 'rollback': '*' + 'enable': 'boolean', + 'rollback': 'boolean' }, 'deploymentAlarms': { 'alarmNames': '*', @@ -20514,7 +27610,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'base': '*', 'weight': '*' }, - 'enableExecuteCommand': '*', + 'enableExecuteCommand': 'boolean', 'serviceConnectConfiguration': { 'namespace': '*', 'services': { @@ -20523,7 +27619,31 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'dnsName': '*', 'port': '*', 'ingressPortOverride': '*', - 'idleTimeout': '*' + 'idleTimeout': '*', + 'tls': { + 'awsPcaAuthorityArn': '*', + 'kmsKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'role': { + 'roleArn': '*', + 'roleName': '*', + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*', + 'grantPrincipal': { + 'assumeRoleAction': '*', + 'principalAccount': '*' + } + } + } }, 'logDriver': '*' }, @@ -20580,9 +27700,9 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'sourcePath': '*' }, 'name': '*', - 'configuredAtLaunch': '*', + 'configuredAtLaunch': 'boolean', 'dockerVolumeConfiguration': { - 'autoprovision': '*', + 'autoprovision': 'boolean', 'driver': '*', 'driverOpts': '*', 'labels': '*', @@ -20599,7 +27719,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { } } }, - 'enableFaultInjection': '*' + 'enableFaultInjection': 'boolean' } }, 'aws-elasticloadbalancingv2.lib': { @@ -20651,7 +27771,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'defaultAction': '*', - 'open': '*', + 'open': 'boolean', 'mutualAuthentication': { 'mutualAuthenticationMode': 'MutualAuthenticationMode', 'trustStore': { @@ -20664,26 +27784,130 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'node': '*' }, - 'ignoreClientCertificateExpiry': '*' - } + 'ignoreClientCertificateExpiry': 'boolean' + }, + 'addCertificateArns': [ + '*', + '*' + ], + 'addCertificates': [ + '*', + { + 'certificateArn': '*' + } + ], + 'addAction': [ + '*', + { + 'action': '*', + 'removeSuffix': 'boolean', + 'priority': '*', + 'conditions': '*', + 'hostHeader': '*', + 'pathPattern': '*', + 'pathPatterns': '*' + } + ], + 'addTargetGroups': [ + '*', + { + 'targetGroups': { + 'metrics': '*', + 'targetGroupName': '*', + 'targetGroupArn': '*', + 'loadBalancerArns': '*', + 'loadBalancerAttached': '*', + 'node': '*' + }, + 'priority': '*', + 'conditions': '*', + 'hostHeader': '*', + 'pathPattern': '*', + 'pathPatterns': '*' + } + ], + 'addTargets': [ + '*', + { + 'protocol': 'ApplicationProtocol', + 'protocolVersion': 'ApplicationProtocolVersion', + 'port': '*', + 'slowStart': '*', + 'stickinessCookieName': '*', + 'targets': '*', + 'targetGroupName': '*', + 'healthCheck': { + 'enabled': 'boolean', + 'path': '*', + 'port': '*', + 'protocol': 'Protocol', + 'healthyThresholdCount': '*', + 'unhealthyThresholdCount': '*', + 'healthyGrpcCodes': '*', + 'healthyHttpCodes': '*' + }, + 'loadBalancingAlgorithmType': 'TargetGroupLoadBalancingAlgorithmType', + 'enableAnomalyMitigation': 'boolean', + 'priority': '*', + 'conditions': '*', + 'hostHeader': '*', + 'pathPattern': '*', + 'pathPatterns': '*' + } + ], + 'addFixedResponse': [ + '*', + { + 'priority': '*', + 'conditions': '*', + 'hostHeader': '*', + 'pathPattern': '*', + 'pathPatterns': '*', + 'statusCode': '*', + 'contentType': 'ContentType', + 'messageBody': '*' + } + ], + 'addRedirectResponse': [ + '*', + { + 'priority': '*', + 'conditions': '*', + 'hostHeader': '*', + 'pathPattern': '*', + 'pathPatterns': '*', + 'host': '*', + 'path': '*', + 'port': '*', + 'protocol': '*', + 'query': '*', + 'statusCode': '*' + } + ], + 'registerConnectable': [ + { + 'connections': '*' + }, + '*' + ] }, 'ImportedApplicationListener': { 'listenerArn': '*', 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'defaultPort': '*', - 'securityGroupAllowsAllOutbound': '*' + 'securityGroupAllowsAllOutbound': 'boolean' }, 'LookedUpApplicationListener': { 'listenerArn': '*', @@ -20693,28 +27917,28 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'ApplicationLoadBalancer': { 'securityGroup': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'ipAddressType': 'IpAddressType', - 'http2Enabled': '*', + 'http2Enabled': 'boolean', 'idleTimeout': '*', - 'dropInvalidHeaderFields': '*', + 'dropInvalidHeaderFields': 'boolean', 'desyncMitigationMode': 'DesyncMitigationMode', 'clientKeepAlive': '*', - 'preserveHostHeader': '*', - 'xAmznTlsVersionAndCipherSuiteHeaders': '*', - 'preserveXffClientPort': '*', + 'preserveHostHeader': 'boolean', + 'xAmznTlsVersionAndCipherSuiteHeaders': 'boolean', + 'preserveXffClientPort': 'boolean', 'xffHeaderProcessingMode': 'XffHeaderProcessingMode', - 'wafFailOpen': '*', + 'wafFailOpen': 'boolean', 'loadBalancerName': '*', 'vpc': { 'vpcId': '*', @@ -20738,13 +27962,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'internetFacing': '*', + 'internetFacing': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -20762,16 +27986,473 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'deletionProtection': '*', - 'crossZoneEnabled': '*', - 'denyAllIgwTraffic': '*' + 'deletionProtection': 'boolean', + 'crossZoneEnabled': 'boolean', + 'denyAllIgwTraffic': 'boolean', + 'addListener': [ + '*', + { + 'protocol': 'ApplicationProtocol', + 'port': '*', + 'certificateArns': '*', + 'certificates': { + 'certificateArn': '*' + }, + 'sslPolicy': 'SslPolicy', + 'defaultTargetGroups': { + 'metrics': '*', + 'targetGroupName': '*', + 'targetGroupArn': '*', + 'loadBalancerArns': '*', + 'loadBalancerAttached': '*', + 'node': '*' + }, + 'defaultAction': '*', + 'open': 'boolean', + 'mutualAuthentication': { + 'mutualAuthenticationMode': 'MutualAuthenticationMode', + 'trustStore': { + 'trustStoreName': '*', + 'trustStoreArn': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + } + }, + 'ignoreClientCertificateExpiry': 'boolean' + } + } + ], + 'addRedirect': [ + { + 'sourceProtocol': 'ApplicationProtocol', + 'sourcePort': '*', + 'targetProtocol': 'ApplicationProtocol', + 'targetPort': '*', + 'open': 'boolean' + } + ], + 'logAccessLogs': [ + { + 'bucketArn': '*', + 'bucketName': '*', + 'bucketWebsiteUrl': '*', + 'bucketWebsiteDomainName': '*', + 'bucketDomainName': '*', + 'bucketDualStackDomainName': '*', + 'bucketRegionalDomainName': '*', + 'isWebsite': 'boolean', + 'encryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'policy': '*', + 'replicationRoleArn': '*' + }, + '*' + ], + 'logConnectionLogs': [ + { + 'bucketArn': '*', + 'bucketName': '*', + 'bucketWebsiteUrl': '*', + 'bucketWebsiteDomainName': '*', + 'bucketDomainName': '*', + 'bucketDualStackDomainName': '*', + 'bucketRegionalDomainName': '*', + 'isWebsite': 'boolean', + 'encryptionKey': { + 'keyArn': '*', + 'keyId': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*' + }, + 'policy': '*', + 'replicationRoleArn': '*' + }, + '*' + ], + 'addSecurityGroup': [ + { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + ], + 'metric': [ + '*', + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricActiveConnectionCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricClientTlsNegotiationErrorCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricConsumedLCUs': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricHttpFixedResponseCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricHttpRedirectCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricHttpRedirectUrlLimitExceededCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricHttpCodeElb': [ + 'HttpCodeElb', + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricHttpCodeTarget': [ + 'HttpCodeTarget', + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricIpv6ProcessedBytes': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricIpv6RequestCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricNewConnectionCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricProcessedBytes': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricRejectedConnectionCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricRequestCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricRuleEvaluations': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricTargetConnectionErrorCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricTargetResponseTime': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricTargetTLSNegotiationErrorCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricElbAuthError': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricElbAuthFailure': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricElbAuthLatency': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricElbAuthSuccess': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ] }, 'ImportedApplicationLoadBalancer': { 'loadBalancerArn': '*', 'securityGroupId': '*', 'loadBalancerCanonicalHostedZoneId': '*', 'loadBalancerDnsName': '*', - 'securityGroupAllowsAllOutbound': '*', + 'securityGroupAllowsAllOutbound': 'boolean', 'vpc': { 'vpcId': '*', 'vpcArn': '*', @@ -20793,7 +28474,42 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'availabilityZones': '*', 'vpnGatewayId': '*' - } + }, + 'addListener': [ + '*', + { + 'protocol': 'ApplicationProtocol', + 'port': '*', + 'certificateArns': '*', + 'certificates': { + 'certificateArn': '*' + }, + 'sslPolicy': 'SslPolicy', + 'defaultTargetGroups': { + 'metrics': '*', + 'targetGroupName': '*', + 'targetGroupArn': '*', + 'loadBalancerArns': '*', + 'loadBalancerAttached': '*', + 'node': '*' + }, + 'defaultAction': '*', + 'open': 'boolean', + 'mutualAuthentication': { + 'mutualAuthenticationMode': 'MutualAuthenticationMode', + 'trustStore': { + 'trustStoreName': '*', + 'trustStoreArn': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + } + }, + 'ignoreClientCertificateExpiry': 'boolean' + } + } + ] }, 'LookedUpApplicationLoadBalancer': { 'loadBalancerArn': '*', @@ -20801,7 +28517,42 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'loadBalancerDnsName': '*', 'ipAddressType': 'LoadBalancerIpAddressType', 'securityGroupIds': '*', - 'vpcId': '*' + 'vpcId': '*', + 'addListener': [ + '*', + { + 'protocol': 'ApplicationProtocol', + 'port': '*', + 'certificateArns': '*', + 'certificates': { + 'certificateArn': '*' + }, + 'sslPolicy': 'SslPolicy', + 'defaultTargetGroups': { + 'metrics': '*', + 'targetGroupName': '*', + 'targetGroupArn': '*', + 'loadBalancerArns': '*', + 'loadBalancerAttached': '*', + 'node': '*' + }, + 'defaultAction': '*', + 'open': 'boolean', + 'mutualAuthentication': { + 'mutualAuthenticationMode': 'MutualAuthenticationMode', + 'trustStore': { + 'trustStoreName': '*', + 'trustStoreArn': '*', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + } + }, + 'ignoreClientCertificateExpiry': 'boolean' + } + } + ] }, 'TrustStoreRevocation': { 'trustStore': { @@ -20824,7 +28575,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -20852,7 +28603,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'bucketDomainName': '*', 'bucketDualStackDomainName': '*', 'bucketRegionalDomainName': '*', - 'isWebsite': '*', + 'isWebsite': 'boolean', 'encryptionKey': { 'keyArn': '*', 'keyId': '*', @@ -20918,27 +28669,72 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'sslPolicy': 'SslPolicy', 'alpnPolicy': 'AlpnPolicy', - 'tcpIdleTimeout': '*' + 'tcpIdleTimeout': '*', + 'addCertificates': [ + '*', + { + 'certificateArn': '*' + } + ], + 'addTargetGroups': [ + '*', + { + 'metrics': '*', + 'targetGroupName': '*', + 'targetGroupArn': '*', + 'loadBalancerArns': '*', + 'loadBalancerAttached': '*', + 'node': '*' + } + ], + 'addAction': [ + '*', + { + 'action': '*' + } + ], + 'addTargets': [ + '*', + { + 'port': '*', + 'protocol': 'Protocol', + 'targets': '*', + 'targetGroupName': '*', + 'deregistrationDelay': '*', + 'proxyProtocolV2': 'boolean', + 'preserveClientIp': 'boolean', + 'healthCheck': { + 'enabled': 'boolean', + 'path': '*', + 'port': '*', + 'protocol': 'Protocol', + 'healthyThresholdCount': '*', + 'unhealthyThresholdCount': '*', + 'healthyGrpcCodes': '*', + 'healthyHttpCodes': '*' + } + } + ] }, 'NetworkLoadBalancer': { 'securityGroups': { 'securityGroupId': '*', - 'allowAllOutbound': '*', + 'allowAllOutbound': 'boolean', 'stack': '*', 'env': { 'account': '*', 'region': '*' }, 'node': '*', - 'canInlineRule': '*', + 'canInlineRule': 'boolean', 'uniqueId': '*', 'connections': '*' }, 'ipAddressType': 'IpAddressType', 'clientRoutingPolicy': 'ClientRoutingPolicy', - 'enforceSecurityGroupInboundRulesOnPrivateLinkTraffic': '*', - 'zonalShift': '*', - 'enablePrefixForIpv6SourceNat': '*', + 'enforceSecurityGroupInboundRulesOnPrivateLinkTraffic': 'boolean', + 'zonalShift': 'boolean', + 'enablePrefixForIpv6SourceNat': 'boolean', 'loadBalancerName': '*', 'vpc': { 'vpcId': '*', @@ -20962,13 +28758,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'availabilityZones': '*', 'vpnGatewayId': '*' }, - 'internetFacing': '*', + 'internetFacing': 'boolean', 'vpcSubnets': { 'subnetType': 'SubnetType', 'availabilityZones': '*', 'subnetGroupName': '*', 'subnetName': '*', - 'onePerAz': '*', + 'onePerAz': 'boolean', 'subnetFilters': '*', 'subnets': { 'availabilityZone': '*', @@ -20986,9 +28782,197 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' } }, - 'deletionProtection': '*', - 'crossZoneEnabled': '*', - 'denyAllIgwTraffic': '*' + 'deletionProtection': 'boolean', + 'crossZoneEnabled': 'boolean', + 'denyAllIgwTraffic': 'boolean', + 'addListener': [ + '*', + { + 'port': '*', + 'defaultTargetGroups': { + 'metrics': '*', + 'targetGroupName': '*', + 'targetGroupArn': '*', + 'loadBalancerArns': '*', + 'loadBalancerAttached': '*', + 'node': '*' + }, + 'defaultAction': '*', + 'protocol': 'Protocol', + 'certificates': { + 'certificateArn': '*' + }, + 'sslPolicy': 'SslPolicy', + 'alpnPolicy': 'AlpnPolicy', + 'tcpIdleTimeout': '*' + } + ], + 'addSecurityGroup': [ + { + 'securityGroupId': '*', + 'allowAllOutbound': 'boolean', + 'stack': '*', + 'env': { + 'account': '*', + 'region': '*' + }, + 'node': '*', + 'canInlineRule': 'boolean', + 'uniqueId': '*', + 'connections': '*' + } + ], + 'metric': [ + '*', + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricActiveFlowCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricConsumedLCUs': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricHealthyHostCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricUnHealthyHostCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricNewFlowCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricProcessedBytes': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricTcpClientResetCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricTcpElbResetCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ], + 'metricTcpTargetResetCount': [ + { + 'period': '*', + 'statistic': '*', + 'dimensions': '*', + 'dimensionsMap': '*', + 'unit': 'Unit', + 'label': '*', + 'color': '*', + 'account': '*', + 'region': '*', + 'stackAccount': '*', + 'stackRegion': '*' + } + ] }, 'LookedUpNetworkLoadBalancer': { 'loadBalancerArn': '*', @@ -20996,23 +28980,74 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'loadBalancerDnsName': '*', 'ipAddressType': 'LoadBalancerIpAddressType', 'securityGroupIds': '*', - 'vpcId': '*' + 'vpcId': '*', + 'addListener': [ + '*', + { + 'port': '*', + 'defaultTargetGroups': { + 'metrics': '*', + 'targetGroupName': '*', + 'targetGroupArn': '*', + 'loadBalancerArns': '*', + 'loadBalancerAttached': '*', + 'node': '*' + }, + 'defaultAction': '*', + 'protocol': 'Protocol', + 'certificates': { + 'certificateArn': '*' + }, + 'sslPolicy': 'SslPolicy', + 'alpnPolicy': 'AlpnPolicy', + 'tcpIdleTimeout': '*' + } + ] } }, 'aws-iam.lib': { 'ImmutableRole': { 'roleArn': '*', 'roleName': '*', - 'grant': '*', - 'grantPassRole': '*', - 'grantAssumeRole': '*', - 'attachInlinePolicy': '*', - 'addManagedPolicy': '*', + 'grant': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + }, + '*' + ], + 'grantPassRole': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + ], + 'grantAssumeRole': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + ], + 'attachInlinePolicy': [ + '*' + ], + 'addManagedPolicy': [ + { + 'managedPolicyArn': '*' + } + ], 'assumeRoleAction': '*', 'policyFragment': '*', 'principalAccount': '*', - 'addToPolicy': '*', - 'addToPrincipalPolicy': '*', + 'addToPolicy': [ + '*' + ], + 'addToPrincipalPolicy': [ + '*' + ], 'grantPrincipal': { 'assumeRoleAction': '*', 'policyFragment': '*', @@ -21030,9 +29065,46 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'roleArn': '*', 'roleName': '*', 'account': '*', - 'mutable': '*', - 'addGrantsToResources': '*', - 'defaultPolicyName': '*' + 'mutable': 'boolean', + 'addGrantsToResources': 'boolean', + 'defaultPolicyName': '*', + 'addToPolicy': [ + '*' + ], + 'addToPrincipalPolicy': [ + '*' + ], + 'attachInlinePolicy': [ + '*' + ], + 'addManagedPolicy': [ + { + 'managedPolicyArn': '*' + } + ], + 'grantPassRole': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + ], + 'grantAssumeRole': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + ], + 'grant': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + }, + '*' + ], + 'dedupeString': [] }, 'PrecreatedRole': { 'role': { @@ -21053,8 +29125,44 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { 'node': '*' }, 'assumeRolePolicy': '*', - 'missing': '*', - 'rolePath': '*' + 'missing': 'boolean', + 'rolePath': '*', + 'attachInlinePolicy': [ + '*' + ], + 'addManagedPolicy': [ + { + 'managedPolicyArn': '*' + } + ], + 'addToPolicy': [ + '*' + ], + 'addToPrincipalPolicy': [ + '*' + ], + 'grant': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + }, + '*' + ], + 'grantPassRole': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + ], + 'grantAssumeRole': [ + { + 'assumeRoleAction': '*', + 'policyFragment': '*', + 'principalAccount': '*' + } + ] } }, 'pipelines.lib': { @@ -21076,7 +29184,13 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = { }, 'roleName': '*', 'maxSessionDuration': '*', - 'description': '*' + 'description': '*', + 'addToPrincipalPolicy': [ + '*' + ], + 'addAssumeRole': [ + '*' + ] } } }; diff --git a/packages/aws-cdk-lib/core/lib/analytics-data-source/enums.ts b/packages/aws-cdk-lib/core/lib/analytics-data-source/enums.ts index b8966a5f85085..797627ddc4b5a 100644 --- a/packages/aws-cdk-lib/core/lib/analytics-data-source/enums.ts +++ b/packages/aws-cdk-lib/core/lib/analytics-data-source/enums.ts @@ -1,6 +1,6 @@ -/* eslint-disable @cdklabs/no-literal-partition */ /* eslint-disable quote-props */ /* eslint-disable @stylistic/comma-dangle */ +/* eslint-disable @cdklabs/no-literal-partition */ /* * Do not edit this file manually. To prevent misconfiguration, this file * should only be modified by an automated GitHub workflow, that ensures @@ -9,10 +9,6 @@ */ export const AWS_CDK_ENUMS: { [key: string]: any } = { - 'AssetBuildTime': [ - 'all-before-deploy', - 'just-in-time' - ], 'RequireApproval': [ 'never', 'any-change', @@ -24,31 +20,6 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 'ERROR', 'FATAL' ], - 'Command': [ - 'ls', - 'list', - 'diff', - 'bootstrap', - 'deploy', - 'destroy', - 'synthesize', - 'synth', - 'metadata', - 'init', - 'version', - 'watch', - 'gc', - 'rollback', - 'import', - 'acknowledge', - 'ack', - 'notices', - 'migrate', - 'context', - 'docs', - 'doc', - 'doctor' - ], 'RedirectStatus': [ '200', '301', @@ -137,6 +108,10 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 'public', 'private' ], + 'TransitGatewayFeatureStatus': [ + 'enable', + 'disable' + ], 'OperatingSystem': [ 'AMAZON_LINUX', 'AMAZON_LINUX_2', @@ -594,6 +569,115 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 'aws-iso-f', 'aws-iso-e' ], + 'AccessScopeType': [ + 'namespace', + 'cluster' + ], + 'AccessEntryType': [ + 'STANDARD', + 'FARGATE_LINUX', + 'EC2_LINUX', + 'EC2_WINDOWS' + ], + 'AlbScheme': [ + 'internal', + 'internet-facing' + ], + 'ClusterLoggingTypes': [ + 'api', + 'audit', + 'authenticator', + 'controllerManager', + 'scheduler' + ], + 'IpFamily': [ + 'ipv4', + 'ipv6' + ], + 'CpuArch': [ + 'arm64', + 'x86_64' + ], + 'CoreDnsComputeType': [ + 'ec2', + 'fargate' + ], + 'DefaultCapacityType': [ + 0, + 1 + ], + 'MachineImageType': [ + 0, + 1 + ], + 'PatchType': [ + 'json', + 'merge', + 'strategic' + ], + 'NodegroupAmiType': [ + 'AL2_x86_64', + 'AL2_x86_64_GPU', + 'AL2_ARM_64', + 'BOTTLEROCKET_ARM_64', + 'BOTTLEROCKET_x86_64', + 'BOTTLEROCKET_ARM_64_NVIDIA', + 'BOTTLEROCKET_x86_64_NVIDIA', + 'WINDOWS_CORE_2019_x86_64', + 'WINDOWS_CORE_2022_x86_64', + 'WINDOWS_FULL_2019_x86_64', + 'WINDOWS_FULL_2022_x86_64', + 'AL2023_x86_64_STANDARD', + 'AL2023_x86_64_NEURON', + 'AL2023_x86_64_NVIDIA', + 'AL2023_ARM_64_STANDARD' + ], + 'CapacityType': [ + 'SPOT', + 'ON_DEMAND' + ], + 'TaintEffect': [ + 'NO_SCHEDULE', + 'PREFER_NO_SCHEDULE', + 'NO_EXECUTE' + ], + 'IdentityType': [ + 'IRSA', + 'POD_IDENTITY' + ], + 'LifecycleLabel': [ + 'OnDemand', + 'Ec2Spot' + ], + 'AssetBuildTime': [ + 'all-before-deploy', + 'just-in-time' + ], + 'Command': [ + 'ls', + 'list', + 'diff', + 'bootstrap', + 'deploy', + 'destroy', + 'synthesize', + 'synth', + 'metadata', + 'init', + 'version', + 'watch', + 'gc', + 'rollback', + 'import', + 'acknowledge', + 'ack', + 'notices', + 'migrate', + 'context', + 'docs', + 'doc', + 'doctor' + ], 'TemplateSourceOptions': [ 'path', 'stack', @@ -808,6 +892,20 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 'LOADBALANCER', 'ENDPOINTS' ], + 'AppSyncFieldLogLevel': [ + 'NONE', + 'ERROR', + 'INFO', + 'DEBUG', + 'ALL' + ], + 'AppSyncAuthorizationType': [ + 'API_KEY', + 'AWS_IAM', + 'AMAZON_COGNITO_USER_POOLS', + 'OPENID_CONNECT', + 'AWS_LAMBDA' + ], 'Visibility': [ 'GLOBAL', 'PRIVATE' @@ -1134,6 +1232,10 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 'SigningProtocol': [ 'sigv4' ], + 'OriginSelectionCriteria': [ + 'default', + 'media-quality-based' + ], 'HeadersFrameOption': [ 'DENY', 'SAMEORIGIN' @@ -1512,6 +1614,10 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 'BASIC', 'FULL' ], + 'ManagedLoginVersion': [ + 1, + 2 + ], 'VerificationEmailStyle': [ 'CONFIRM_WITH_CODE', 'CONFIRM_WITH_LINK' @@ -2461,10 +2567,6 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 'aws-ecs-2', 'aws-ecs-2-nvidia' ], - 'MachineImageType': [ - 0, - 1 - ], 'ContainerInsights': [ 'enabled', 'disabled', @@ -2481,6 +2583,10 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 'SUCCESS', 'HEALTHY' ], + 'VersionConsistency': [ + 'enabled', + 'disabled' + ], 'EnvironmentFileType': [ 's3' ], @@ -2568,87 +2674,11 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 'elasticfilesystem:ClientWrite', 'elasticfilesystem:ClientRootAccess' ], - 'AccessScopeType': [ - 'namespace', - 'cluster' - ], - 'AccessEntryType': [ - 'STANDARD', - 'FARGATE_LINUX', - 'EC2_LINUX', - 'EC2_WINDOWS' - ], - 'AlbScheme': [ - 'internal', - 'internet-facing' - ], - 'ClusterLoggingTypes': [ - 'api', - 'audit', - 'authenticator', - 'controllerManager', - 'scheduler' - ], - 'IpFamily': [ - 'ipv4', - 'ipv6' - ], 'AuthenticationMode': [ 'CONFIG_MAP', 'API_AND_CONFIG_MAP', 'API' ], - 'CpuArch': [ - 'arm64', - 'x86_64' - ], - 'CoreDnsComputeType': [ - 'ec2', - 'fargate' - ], - 'DefaultCapacityType': [ - 0, - 1 - ], - 'PatchType': [ - 'json', - 'merge', - 'strategic' - ], - 'NodegroupAmiType': [ - 'AL2_x86_64', - 'AL2_x86_64_GPU', - 'AL2_ARM_64', - 'BOTTLEROCKET_ARM_64', - 'BOTTLEROCKET_x86_64', - 'BOTTLEROCKET_ARM_64_NVIDIA', - 'BOTTLEROCKET_x86_64_NVIDIA', - 'WINDOWS_CORE_2019_x86_64', - 'WINDOWS_CORE_2022_x86_64', - 'WINDOWS_FULL_2019_x86_64', - 'WINDOWS_FULL_2022_x86_64', - 'AL2023_x86_64_STANDARD', - 'AL2023_x86_64_NEURON', - 'AL2023_x86_64_NVIDIA', - 'AL2023_ARM_64_STANDARD' - ], - 'CapacityType': [ - 'SPOT', - 'ON_DEMAND' - ], - 'TaintEffect': [ - 'NO_SCHEDULE', - 'PREFER_NO_SCHEDULE', - 'NO_EXECUTE' - ], - 'IdentityType': [ - 'IRSA', - 'POD_IDENTITY' - ], - 'LifecycleLabel': [ - 'OnDemand', - 'Ec2Spot' - ], 'LoadBalancingProtocol': [ 'tcp', 'ssl', @@ -3235,6 +3265,10 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 0, 1 ], + 'FifoThroughputScope': [ + 'Topic', + 'MessageGroup' + ], 'LoggingProtocol': [ 'http/s', 'sqs', @@ -3318,6 +3352,10 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = { 'STANDARD', 'EXPRESS' ], + 'QueryLanguage': [ + 'JSONPath', + 'JSONata' + ], 'Cleanup': [ 'nothing', 'lambda' diff --git a/packages/aws-cdk-lib/core/lib/custom-resource.ts b/packages/aws-cdk-lib/core/lib/custom-resource.ts index 833dc84bea1f3..3ae49c789c86d 100644 --- a/packages/aws-cdk-lib/core/lib/custom-resource.ts +++ b/packages/aws-cdk-lib/core/lib/custom-resource.ts @@ -1,7 +1,7 @@ import { Construct } from 'constructs'; import { CfnResource } from './cfn-resource'; import { Duration } from './duration'; -import { addConstructMetadata } from './metadata-resource'; +import { addConstructMetadata, MethodMetadata } from './metadata-resource'; import { RemovalPolicy } from './removal-policy'; import { Resource } from './resource'; import { Token } from './token'; @@ -184,6 +184,7 @@ export class CustomResource extends Resource { * @returns a token for `Fn::GetAtt`. Use `Token.asXxx` to encode the returned `Reference` as a specific type or * use the convenience `getAttString` for string attributes. */ + @MethodMetadata() public getAtt(attributeName: string) { return this.resource.getAtt(attributeName); } @@ -196,6 +197,7 @@ export class CustomResource extends Resource { * @param attributeName the name of the attribute * @returns a token for `Fn::GetAtt` encoded as a string. */ + @MethodMetadata() public getAttString(attributeName: string): string { return Token.asString(this.getAtt(attributeName)); } diff --git a/packages/aws-cdk-lib/core/lib/metadata-resource.ts b/packages/aws-cdk-lib/core/lib/metadata-resource.ts index cef81f7d5e3cd..27424c46c0761 100644 --- a/packages/aws-cdk-lib/core/lib/metadata-resource.ts +++ b/packages/aws-cdk-lib/core/lib/metadata-resource.ts @@ -47,7 +47,50 @@ export function addConstructMetadata(scope: Construct, props: any): void { } } -function addMetadata(scope: Construct, type: MetadataType, props: any): void { +export function addMethodMetadata(scope: Construct, methodName: string, props: any): void { + try { + addMetadata(scope, MetadataType.METHOD, { + [methodName]: props, + }); + } catch (e) { + /** + * Errors are ignored here. + * We do not want the metadata parsing to block users to synth or + * deploy their CDK application. + * + * Without this, it will just fall back to the previous metadata + * collection strategy. + */ + Annotations.of(scope).addWarningV2('@aws-cdk/core:addMethodMetadataFailed', `Failed to add method metadata for node [${scope.node.id}], method name ${methodName}. Reason: ${e}`); + } +} + +/** + * Method decorator for tracking analytics metadata. + * This decorator is used to track method calls in the CDK. + */ +export function MethodMetadata(): MethodDecorator { + return function (_: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) { + // Ensure the Decorator is Only Applied to Methods + if (!descriptor || typeof descriptor.value !== 'function') { + return descriptor; + } + const originalMethod = descriptor.value; + + descriptor.value = function (...args: any[]) { + const scope = this as Construct; + if (scope instanceof Construct) { + addMethodMetadata(scope, propertyKey.toString(), args); + } + + return originalMethod.apply(this, args); + }; + + return descriptor; + }; +} + +export function addMetadata(scope: Construct, type: MetadataType, props: any): void { const telemetryEnabled = FeatureFlags.of(scope).isEnabled(ENABLE_ADDITIONAL_METADATA_COLLECTION) ?? false; if (!telemetryEnabled) { return; @@ -120,7 +163,14 @@ export function redactTelemetryDataHelper(allowedKeys: any, data: any): any { if (Array.isArray(data)) { // Handle arrays by recursively redacting each element - return data.map((item) => redactTelemetryDataHelper(allowedKeys, item)); + return data.map((item, index) => { + // If the 'allowedKeys' is an array of items, use the index + // to get the allowed key + if (Array.isArray(allowedKeys)) { + return redactTelemetryDataHelper(allowedKeys[index], item); + } + return redactTelemetryDataHelper(allowedKeys, item); + }); } // Handle objects by iterating over their key-value pairs diff --git a/packages/aws-cdk-lib/core/test/metadata.test.ts b/packages/aws-cdk-lib/core/test/metadata.test.ts index 39af66c577b9f..8f0143da391ad 100644 --- a/packages/aws-cdk-lib/core/test/metadata.test.ts +++ b/packages/aws-cdk-lib/core/test/metadata.test.ts @@ -1,3 +1,5 @@ +import { Construct } from 'constructs'; +import { Annotations } from '../lib/annotations'; import * as metadata from '../lib/metadata-resource'; import { Token } from '../lib/token'; @@ -5,7 +7,7 @@ describe('redactMetadata', () => { jest.mock('../lib/analytics-data-source/classes', () => ({ AWS_CDK_CONSTRUCTOR_PROPS: { 'aws-cdk-lib.aws-lambda': { - Function: { key1: '*', key2: '*' }, + Function: { key1: '*', key2: '*', myMethod: ['*', '*', { foo: 'boolean' }] }, }, 'aws-cdk-lib.aws-s3': { Bucket: { key1: '*', key2: '*' }, @@ -33,6 +35,13 @@ describe('redactMetadata', () => { spy.mockRestore(); }); + it('should redact method correctly', () => { + const data = { addEnvironment: ['foo', 'bar', { removeInEdge: true }] }; + expect(metadata.redactMetadata('aws-cdk-lib.aws-lambda.Function', data)).toEqual({ + addEnvironment: ['*', '*', { removeInEdge: true }], + }); + }); + it('should redact when class name is not found in module', () => { const data = { key1: 'value1' }; const spy = jest.spyOn(metadata, 'redactTelemetryDataHelper'); @@ -149,3 +158,66 @@ describe('isEnumValue', () => { expect(metadata.isEnumValue('AnotherEnum', 'OPTION_A')).toBe(true); }); }); + +// Mock Annotations +jest.mock('../lib/annotations', () => ({ + Annotations: { + of: jest.fn(), + }, +})); + +describe('addMethodMetadata & addConstructMetadata', () => { + let mockScope: Construct; + let mockAnnotations: { addWarningV2: jest.Mock }; + + beforeEach(() => { + jest.clearAllMocks(); // Reset mocks before each test + + // Create a mock Construct + mockScope = { + node: { + id: 'TestConstruct', + addMetadata: jest.fn(), + }, + } as unknown as Construct; + + mockAnnotations = { addWarningV2: jest.fn() }; + (Annotations.of as jest.Mock).mockReturnValue(mockAnnotations); + }); + + it('addMethodMetadata should trigger addWarningV2 when addMetadata throws an error', () => { + // Mock addMetadata to throw an error + jest.spyOn(metadata, 'addMetadata').mockImplementation(() => { + // eslint-disable-next-line @cdklabs/no-throw-default-error + throw new Error('Test Error'); + }); + + // Act + metadata.addMethodMetadata(mockScope, 'testMethod', { key: 'value' }); + + // Assert + expect(Annotations.of).toHaveBeenCalledWith(mockScope); + expect(mockAnnotations.addWarningV2).toHaveBeenCalledWith( + '@aws-cdk/core:addMethodMetadataFailed', + 'Failed to add method metadata for node [TestConstruct], method name testMethod. Reason: TypeError: constructs_1.Node.of(...).tryGetContext is not a function', + ); + }); + + it('addConstructMetadata should trigger addWarningV2 when addMetadata throws an error', () => { + // Mock addMetadata to throw an error + jest.spyOn(metadata, 'addMetadata').mockImplementation(() => { + // eslint-disable-next-line @cdklabs/no-throw-default-error + throw new Error('Test Error'); + }); + + // Act + metadata.addConstructMetadata(mockScope, { key: 'value' }); + + // Assert + expect(Annotations.of).toHaveBeenCalledWith(mockScope); + expect(mockAnnotations.addWarningV2).toHaveBeenCalledWith( + '@aws-cdk/core:addConstructMetadataFailed', + 'Failed to add construct metadata for node [TestConstruct]. Reason: TypeError: constructs_1.Node.of(...).tryGetContext is not a function', + ); + }); +}); diff --git a/packages/aws-cdk-lib/pipelines/lib/private/asset-singleton-role.ts b/packages/aws-cdk-lib/pipelines/lib/private/asset-singleton-role.ts index e97926c9e49d8..872948f78320d 100644 --- a/packages/aws-cdk-lib/pipelines/lib/private/asset-singleton-role.ts +++ b/packages/aws-cdk-lib/pipelines/lib/private/asset-singleton-role.ts @@ -2,7 +2,7 @@ import { Construct, IDependable } from 'constructs'; import * as iam from '../../../aws-iam'; import { PolicyStatement } from '../../../aws-iam'; import { ArnFormat, Stack } from '../../../core'; -import { addConstructMetadata } from '../../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; /** * Role which will be reused across asset jobs @@ -59,6 +59,7 @@ export class AssetSingletonRole extends iam.Role { this._rejectDuplicates = true; } + @MethodMetadata() public addToPrincipalPolicy(statement: PolicyStatement): iam.AddToPrincipalPolicyResult { const json = statement.toStatementJson(); const acts = JSON.stringify(json.Action); @@ -97,6 +98,7 @@ export class AssetSingletonRole extends iam.Role { * policy minimization logic), but we have to account for old pipelines that don't have policy * minimization enabled. */ + @MethodMetadata() public addAssumeRole(roleArn: string) { if (!this._assumeRoleStatement) { this._assumeRoleStatement = new iam.PolicyStatement({ diff --git a/packages/aws-cdk-lib/triggers/lib/trigger-function.ts b/packages/aws-cdk-lib/triggers/lib/trigger-function.ts index 4087e0ad20185..8371f3be10bf3 100644 --- a/packages/aws-cdk-lib/triggers/lib/trigger-function.ts +++ b/packages/aws-cdk-lib/triggers/lib/trigger-function.ts @@ -1,7 +1,7 @@ import { Construct } from 'constructs'; import { ITrigger, Trigger, TriggerOptions } from '.'; import * as lambda from '../../aws-lambda'; -import { addConstructMetadata } from '../../core/lib/metadata-resource'; +import { addConstructMetadata, MethodMetadata } from '../../core/lib/metadata-resource'; /** * Props for `InvokeFunction`. @@ -29,10 +29,12 @@ export class TriggerFunction extends lambda.Function implements ITrigger { }); } + @MethodMetadata() public executeAfter(...scopes: Construct[]): void { this.trigger.executeAfter(...scopes); } + @MethodMetadata() public executeBefore(...scopes: Construct[]): void { this.trigger.executeBefore(...scopes); } diff --git a/tools/@aws-cdk/construct-metadata-updater/README.md b/tools/@aws-cdk/construct-metadata-updater/README.md index 356af9345abf8..32786a5f0fc25 100644 --- a/tools/@aws-cdk/construct-metadata-updater/README.md +++ b/tools/@aws-cdk/construct-metadata-updater/README.md @@ -2,6 +2,7 @@ This tool updates will parse the entire `aws-cdk` repository and does the following things: -1. For any L2 construct class, add `addConstructMetadata` method call to track analytics usage and add necessary import statements if missing -2. Generate a JSON Blueprint file in `packages/aws-cdk-lib/core/lib/analytics-data-source/classes.ts` that contains all L2 construct class's props -3. Generate a JSON Blueprint file in `packages/aws-cdk-lib/core/lib/analytics-data-source/classes.ts` that gets all ENUMs type in `aws-cdk` repo. \ No newline at end of file +1. `ConstructUpdater`: For any non-abstract L2 construct class, add `addConstructMetadata` method call to the constructor to track analytics usage and add necessary import statements if missing +2. `PropertyUpdater`: Generate a JSON Blueprint file in `packages/aws-cdk-lib/core/lib/analytics-data-source/classes.ts` that contains all L2 construct class's props as well as public methods' props. +3. `EnumsUpdater`: Generate a JSON Blueprint file in `packages/aws-cdk-lib/core/lib/analytics-data-source/enums.ts` that gets all ENUMs type in `aws-cdk` repo. +4. `MethodsUpdater`: For any non-abstract L2 construct class, add `@MethodMetadata` decorator to public methods to track analytics usage and add necessary import statements if missing \ No newline at end of file diff --git a/tools/@aws-cdk/construct-metadata-updater/lib/index.ts b/tools/@aws-cdk/construct-metadata-updater/lib/index.ts index 3162c3b3e9099..1a1c2c94e8c04 100644 --- a/tools/@aws-cdk/construct-metadata-updater/lib/index.ts +++ b/tools/@aws-cdk/construct-metadata-updater/lib/index.ts @@ -1,14 +1,17 @@ -import { PropertyUpdater, ConstructsUpdater, EnumsUpdater } from './metadata-updater'; +import { ConstructsUpdater, EnumsUpdater, MethodsUpdater, PropertyUpdater } from './metadata-updater'; export function main() { const dir = '../../../../packages/' - new PropertyUpdater(dir).execute(); - console.log('Property updater finished.') - new ConstructsUpdater(dir).execute(); console.log('Constructs updater finished.'); + new PropertyUpdater(dir).execute(); + console.log('Property updater finished.') + new EnumsUpdater(dir).execute(); console.log('Enums updater finished.'); + + new MethodsUpdater(dir).execute(); + console.log('Methods updater finished.'); } \ No newline at end of file diff --git a/tools/@aws-cdk/construct-metadata-updater/lib/metadata-updater.ts b/tools/@aws-cdk/construct-metadata-updater/lib/metadata-updater.ts index 23f7647eef02c..8bdd410f1ed73 100644 --- a/tools/@aws-cdk/construct-metadata-updater/lib/metadata-updater.ts +++ b/tools/@aws-cdk/construct-metadata-updater/lib/metadata-updater.ts @@ -1,4 +1,4 @@ -import { ClassDeclaration, Project, QuoteKind, SourceFile, Symbol, SyntaxKind } from "ts-morph"; +import { ClassDeclaration, IndentationText, Project, QuoteKind, SourceFile, Symbol, SyntaxKind } from "ts-morph"; import * as path from "path"; import * as fs from "fs"; // import SyntaxKind = ts.SyntaxKind; @@ -31,6 +31,7 @@ export abstract class MetadataUpdater { tsConfigFilePath: path.resolve(__dirname, "../tsconfig.json"), manipulationSettings: { quoteKind: QuoteKind.Single, + indentationText: IndentationText.TwoSpaces }, }); this.project.addSourceFilesAtPaths(this.readTypescriptFiles(projectDir)); @@ -155,29 +156,42 @@ export class ConstructsUpdater extends MetadataUpdater { relativePath = 'aws-cdk-lib/core/lib/metadata-resource' } - // Check if the import already exists - if (sourceFile.getImportDeclarations().some((stmt: any) => stmt.getModuleSpecifier().getText().includes('/metadata-resource'))) { - return; - } + // Check if an import from 'metadata-resource' already exists + const existingImport = sourceFile.getImportDeclarations().find((stmt: any) => { + return stmt.getModuleSpecifier().getText().includes('/metadata-resource'); + }); - // Find the correct insertion point (after the last import before the new one) - const importDeclarations = sourceFile.getImportDeclarations(); - let insertIndex = importDeclarations.length; - for (let i = 0; i < importDeclarations.length; i++) { - const existingImport = importDeclarations[i].getModuleSpecifier().getText(); - if (existingImport.localeCompare(relativePath) > 0) { - insertIndex = i; - break; + if (existingImport) { + // Check if 'MethodMetadata' is already imported + const namedImports = existingImport.getNamedImports().map((imp: any) => imp.getName()); + if (!namedImports.includes("addConstructMetadata")) { + existingImport.addNamedImport({ name: "addConstructMetadata" }); + console.log(`Merged import for addConstructMetadata in file: ${filePath}`); } + } else { + // Find the correct insertion point (after the last import before the new one) + const importDeclarations = sourceFile.getImportDeclarations(); + let insertIndex = importDeclarations.length; // Default to appending + + for (let i = importDeclarations.length - 1; i >= 0; i--) { + const existingImport = importDeclarations[i].getModuleSpecifier().getLiteralText(); + + // Insert the new import before the first one that is lexicographically greater + if (existingImport.localeCompare(relativePath) > 0) { + insertIndex = i; + } else { + break; + } + } + + // Insert the new import at the correct index + sourceFile.insertImportDeclaration(insertIndex, { + moduleSpecifier: relativePath, + namedImports: [{ name: "addConstructMetadata" }], + }); + console.log(`Added import for addConstructMetadata in file: ${filePath} with relative path: ${relativePath}`); } - // Insert the new import at the appropriate position - sourceFile.insertImportDeclaration(insertIndex, { - moduleSpecifier: relativePath, - namedImports: [{ name: "addConstructMetadata" }], - }); - console.log(`Added import for MetadataType in file: ${filePath} with relative path: ${relativePath}`); - // Write the updated file back to disk sourceFile.saveSync(); } @@ -256,12 +270,41 @@ export class PropertyUpdater extends MetadataUpdater { for (const resource of classes) { this.extractConstructorProps(resource.filePath, resource.node, resource.className) + this.extractMethodProps(resource.filePath, resource.node, resource.className) } }); this.generateFileContent(); } + private extractMethodProps(filePath: string, classDeclaration: ClassDeclaration, className: string) { + // Get module name from file path + const moduleName = this.getModuleName(filePath); + const methods: Record = {}; + + classDeclaration.getMethods().forEach((method) => { + if (method.hasModifier(SyntaxKind.PublicKeyword) && !method.hasModifier(SyntaxKind.StaticKeyword)) { + const methodName = method.getName(); + + // Extract parameters with their types + const parameters = method.getParameters().map(param => this.getPropertyType(param.getType())); + + methods[methodName] = parameters; + console.log(`Module: ${moduleName}, Method: ${methodName}, Params:`, parameters); + } + }); + + if (!methods) { + return; + } + + this.classProps[moduleName] = this.classProps[moduleName] || {}; + // Ensure class exists within the module + this.classProps[moduleName][className] = { + ...this.classProps[moduleName][className], + ...methods, // Merge with new methods + }; + } private extractConstructorProps(filePath: string, node: ClassDeclaration, className: string) { // Get module name from file path @@ -321,6 +364,10 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = $PROPS; } private getPropertyType(type: any, processedTypes: Set = new Set()): any { + if (type.isBoolean()) { + return type.getText(); + } + if (type.isUnion()) { // Get all types in the union and find the first non-undefined type // CDK doesn't support complex union type so we can safely get the first @@ -329,7 +376,7 @@ export const AWS_CDK_CONSTRUCTOR_PROPS: { [key: string]: any } = $PROPS; type = unionTypes.find((t: any) => t.getText() !== 'undefined') || type; if (type.isLiteral() && (type.getText() === 'true' || type.getText() === 'false')) { - return '*'; + return 'boolean'; } } @@ -506,4 +553,107 @@ export const AWS_CDK_ENUMS: { [key: string]: any } = $ENUMS; // Replace the placeholder with the JSON object return template.replace("$ENUMS", jsonContent); } +} + +export class MethodsUpdater extends MetadataUpdater { + constructor(dir: string) { + super(dir); + } + + public execute() { + // Process each file in the project + this.project.getSourceFiles().forEach((sourceFile) => { + const classes = this.getCdkResourceClasses(sourceFile.getFilePath()); + for (const resource of classes) { + this.addImportsAndDecorators(resource.sourceFile, resource.filePath, resource.node); + } + }); + } + + + /** + * Add the import statement for MetadataType to the file. + * Add decorators @MetadataMethod() to public non-static methods + */ + private addImportsAndDecorators(sourceFile: any, filePath: string, node: any) { + const ret = this.addDecorators(sourceFile, node); + if (!ret) { + return; + } + + const absoluteFilePath = path.resolve(filePath); + const absoluteTargetPath = path.resolve(__dirname, '../../../../packages/aws-cdk-lib/core/lib/metadata-resource.ts'); + + let relativePath = path.relative(path.dirname(absoluteFilePath), absoluteTargetPath).replace(/\\/g, "/").replace(/.ts/, ""); + if (absoluteFilePath.includes('@aws-cdk')) { + relativePath = 'aws-cdk-lib/core/lib/metadata-resource' + } + + // Check if an import from 'metadata-resource' already exists + const existingImport = sourceFile.getImportDeclarations().find((stmt: any) => { + return stmt.getModuleSpecifier().getText().includes('/metadata-resource'); + }); + + if (existingImport) { + // Check if 'MethodMetadata' is already imported + const namedImports = existingImport.getNamedImports().map((imp: any) => imp.getName()); + if (!namedImports.includes("MethodMetadata")) { + existingImport.addNamedImport({ name: "MethodMetadata" }); + console.log(`Merged import for MethodMetadata in file: ${filePath}`); + } + } else { + // Find the correct insertion point (after the last import before the new one) + const importDeclarations = sourceFile.getImportDeclarations(); + let insertIndex = importDeclarations.length; // Default to appending + + for (let i = importDeclarations.length - 1; i >= 0; i--) { + const existingImport = importDeclarations[i].getModuleSpecifier().getLiteralText(); + + // Insert the new import before the first one that is lexicographically greater + if (existingImport.localeCompare(relativePath) > 0) { + insertIndex = i; + } else { + break; + } + } + + // Insert the new import at the correct index + sourceFile.insertImportDeclaration(insertIndex, { + moduleSpecifier: relativePath, + namedImports: [{ name: "MethodMetadata" }], + }); + console.log(`Added import for MetadataType in file: ${filePath} with relative path: ${relativePath}`); + } + + // Write the updated file back to disk + sourceFile.saveSync(); + } + + /** + * Add decorators @MetadataMethod() to public non-static methods + */ + private addDecorators(sourceFile: any, classDeclaration: ClassDeclaration): boolean { + let updated = false; + + classDeclaration.getMethods().forEach((method) => { + if (method.hasModifier(SyntaxKind.PublicKeyword) && !method.hasModifier(SyntaxKind.StaticKeyword)) { + // Check if the decorator already exists + const hasDecorator = method.getDecorators().some(decorator => decorator.getName() === "MethodMetadata"); + + // If method doesn't have decorator and the method doesn't start with '_' (assuming it's internal method) + if (!hasDecorator && !method.getName().startsWith('_')) { + method.addDecorator({ + name: "MethodMetadata", + arguments: [], + }); + + method.formatText(); + updated = true; + } + } + }); + + sourceFile.saveSync(); + return updated; + } } \ No newline at end of file diff --git a/tools/@aws-cdk/construct-metadata-updater/test/metadata-updater.test.ts b/tools/@aws-cdk/construct-metadata-updater/test/metadata-updater.test.ts index 7035bcce66416..eede18de56da4 100644 --- a/tools/@aws-cdk/construct-metadata-updater/test/metadata-updater.test.ts +++ b/tools/@aws-cdk/construct-metadata-updater/test/metadata-updater.test.ts @@ -1,5 +1,5 @@ import { ConstructsUpdater, PropertyUpdater } from '../lib/metadata-updater'; -import { Project, ClassDeclaration, SourceFile, QuoteKind } from 'ts-morph'; +import { Project, ClassDeclaration, SourceFile, QuoteKind, IndentationText } from 'ts-morph'; import * as path from 'path'; import * as fs from 'fs'; @@ -41,6 +41,7 @@ describe('ResourceMetadataUpdater', () => { expect(Project).toHaveBeenCalledWith({ tsConfigFilePath: expect.stringMatching(/tsconfig\.json$/), manipulationSettings: { + indentationText: IndentationText.TwoSpaces, quoteKind: QuoteKind.Single } }); @@ -208,7 +209,8 @@ describe('PropertyUpdater', () => { node: { getConstructors: () => [{ getParameters: () => [] - }] + }], + getMethods: () => [], }, className: 'Function' }]; @@ -336,12 +338,40 @@ describe('PropertyUpdater', () => { }); describe('getPropertyType', () => { - it('should handle union types', () => { + it('should handle union types of boolean', () => { const mockType = { isUnion: () => true, + isBoolean: () => false, getUnionTypes: () => [{ getText: () => 'true', isLiteral: () => true, + isBoolean: () => false, + isArray: () => false, + isClass: () => false, + isInterface: () => false, + }, { + getText: () => 'undefined', + isLiteral: () => true, + isArray: () => false, + isBoolean: () => false, + isClass: () => false, + isInterface: () => false, + }], + }; + + const result = propertyUpdater['getPropertyType'](mockType); + expect(result).toBe('boolean'); + }); + + it('should handle union types of string', () => { + const mockType = { + isUnion: () => true, + isBoolean: () => false, + getUnionTypes: () => [{ + getText: () => 'string', + isLiteral: () => true, + isBoolean: () => false, + getSymbol: () => undefined, isArray: () => false, isClass: () => false, isInterface: () => false, @@ -349,6 +379,7 @@ describe('PropertyUpdater', () => { getText: () => 'undefined', isLiteral: () => true, isArray: () => false, + isBoolean: () => false, isClass: () => false, isInterface: () => false, }], @@ -362,10 +393,12 @@ describe('PropertyUpdater', () => { const mockType = { isUnion: () => false, isArray: () => true, + isBoolean: () => false, getSymbol: () => false, getArrayElementType: () => ({ getText: () => 'string', isUnion: () => false, + isBoolean: () => false, getSymbol: () => false, isLiteral: () => false, isArray: () => false, @@ -384,6 +417,7 @@ describe('PropertyUpdater', () => { isUnion: () => false, isArray: () => false, isClass: () => true, + isBoolean: () => false, getSymbol: () => ({ getFullyQualifiedName: () => 'TestType', getDeclarations: () => [] diff --git a/tools/@aws-cdk/prlint/constants.ts b/tools/@aws-cdk/prlint/constants.ts index e0e92881a0e44..342b38124a51e 100644 --- a/tools/@aws-cdk/prlint/constants.ts +++ b/tools/@aws-cdk/prlint/constants.ts @@ -12,6 +12,7 @@ export enum Exemption { INTEG_TEST = 'pr-linter/exempt-integ-test', BREAKING_CHANGE = 'pr-linter/exempt-breaking-change', CLI_INTEG_TESTED = 'pr-linter/cli-integ-tested', + ANALYTICS_METADATA_CHANGE = 'pr-linter/analytics-metadata-change', REQUEST_CLARIFICATION = 'pr/reviewer-clarification-requested', REQUEST_EXEMPTION = 'pr-linter/exemption-requested', CODECOV = "pr-linter/exempt-codecov", diff --git a/tools/@aws-cdk/prlint/lint.ts b/tools/@aws-cdk/prlint/lint.ts index 6b53eff7c9eab..06482be3ec30e 100644 --- a/tools/@aws-cdk/prlint/lint.ts +++ b/tools/@aws-cdk/prlint/lint.ts @@ -239,7 +239,7 @@ export class PullRequestLinter extends PullRequestLinterBase { }); validationCollector.validateRuleSet({ - exemption: (pr) => pr.user?.login === 'aws-cdk-automation', + exemption: shouldExemptAnalyticsMetadataChange, testRuleSet: [ { test: noMetadataChanges }, { test: noAnalyticsClassesChanges }, @@ -421,6 +421,10 @@ function shouldExemptCliIntegTested(pr: GitHubPr): boolean { return (hasLabel(pr, Exemption.CLI_INTEG_TESTED) || pr.user?.login === 'aws-cdk-automation'); } +function shouldExemptAnalyticsMetadataChange(pr: GitHubPr): boolean { + return (hasLabel(pr, Exemption.ANALYTICS_METADATA_CHANGE) || pr.user?.login === 'aws-cdk-automation'); +} + function hasLabel(pr: GitHubPr, labelName: string): boolean { return pr.labels.some(function (l: any) { return l.name === labelName;