@intentius/chant-lexicon-aws 0.18.15 → 0.18.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -463,6 +463,23 @@ const realCloudFormation: CloudFormationClient = {
463
463
  },
464
464
  };
465
465
 
466
+ /** Deployment id from an ECS `update-service` response. Tolerant of Floci, whose
467
+ * `service` omits `deployments` entirely (real AWS always includes it) — guards
468
+ * the index, not just `.id` (#937). Exported for testing. */
469
+ export function ecsDeploymentId(described: { service: { deployments?: Array<{ id: string }> } }): string {
470
+ return described.service.deployments?.[0]?.id ?? "";
471
+ }
472
+
473
+ /** Whether an ECS service is steady (running == desired, ≤1 active deployment).
474
+ * Tolerant of Floci's missing `deployments` field. Exported for testing. */
475
+ export function ecsServiceStable(
476
+ svc: { runningCount?: number; desiredCount?: number; deployments?: unknown[] } | undefined,
477
+ ): boolean {
478
+ const running = svc?.runningCount ?? 0;
479
+ const desired = svc?.desiredCount ?? 0;
480
+ return running === desired && (svc?.deployments?.length ?? 0) <= 1;
481
+ }
482
+
466
483
  const realEcs: EcsClient = {
467
484
  async updateService(args) {
468
485
  const parts = [`aws ecs update-service`, `--cluster ${q(args.cluster)}`, `--service ${q(args.service)}`];
@@ -470,20 +487,18 @@ const realEcs: EcsClient = {
470
487
  if (args.desiredCount !== undefined) parts.push(`--desired-count ${args.desiredCount}`);
471
488
  if (args.forceNewDeployment) parts.push(`--force-new-deployment`);
472
489
  const { stdout } = await run(parts.join(" "));
473
- const described = JSON.parse(stdout) as { service: { deployments: Array<{ id: string }> } };
474
- return { deploymentId: described.service.deployments[0]?.id ?? "" };
490
+ const described = JSON.parse(stdout) as { service: { deployments?: Array<{ id: string }> } };
491
+ return { deploymentId: ecsDeploymentId(described) };
475
492
  },
476
493
  async describeService(cluster, service) {
477
494
  const { stdout } = await run(
478
495
  `aws ecs describe-services --cluster ${q(cluster)} --services ${q(service)}`,
479
496
  );
480
497
  const described = JSON.parse(stdout) as {
481
- services: Array<{ runningCount: number; desiredCount: number; deployments: unknown[] }>;
498
+ services: Array<{ runningCount: number; desiredCount: number; deployments?: unknown[] }>;
482
499
  };
483
500
  const svc = described.services[0];
484
- const running = svc?.runningCount ?? 0;
485
- const desired = svc?.desiredCount ?? 0;
486
- return { runningCount: running, desiredCount: desired, stable: running === desired && (svc?.deployments.length ?? 0) <= 1 };
501
+ return { runningCount: svc?.runningCount ?? 0, desiredCount: svc?.desiredCount ?? 0, stable: ecsServiceStable(svc) };
487
502
  },
488
503
  async rollbackService(args) {
489
504
  await realEcs.updateService(args);
@@ -7,6 +7,7 @@ import { AttrRef } from "@intentius/chant/attrref";
7
7
  // precedent for aws-lexicon integration-style tests.
8
8
  import { resolveAttrRefs } from "../../../../packages/core/src/discovery/resolve";
9
9
  import { AgentCoreAgent } from "./agentcore-agent";
10
+ import { Split, Ref } from "../intrinsics";
10
11
  import { awsSerializer } from "../serializer";
11
12
 
12
13
  const baseProps = {
@@ -104,6 +105,17 @@ describe("AgentCoreAgent", () => {
104
105
  );
105
106
  });
106
107
 
108
+ test("VPC mode accepts a cross-stack intrinsic (Fn::Split) — checks presence, not .length (#938)", () => {
109
+ // A cross-stack value (Split of a Parameter) is a truthy intrinsic with no
110
+ // `.length`; it WAS supplied, so the composite must not reject it.
111
+ const subnets = Split(",", Ref("SubnetIdsParam")) as unknown as string[];
112
+ const sgs = Split(",", Ref("SgIdsParam")) as unknown as string[];
113
+ const instance = AgentCoreAgent({ ...baseProps, networkMode: "VPC", vpcSubnetIds: subnets, vpcSecurityGroupIds: sgs });
114
+ const vpcConfigProps = ((instance.runtime as any).props.NetworkConfiguration as any).props.NetworkModeConfig.props;
115
+ expect(vpcConfigProps.Subnets).toBe(subnets);
116
+ expect(vpcConfigProps.SecurityGroups).toBe(sgs);
117
+ });
118
+
107
119
  test("throws when memoryEventExpiryDays is out of CFN bounds (3-365)", () => {
108
120
  expect(() => AgentCoreAgent({ ...baseProps, memoryEventExpiryDays: 1 })).toThrow(
109
121
  "AgentCoreAgent memoryEventExpiryDays must be between 3 and 365",
@@ -107,7 +107,11 @@ export type AgentCoreAgentResult = {
107
107
  export const AgentCoreAgent = Composite<AgentCoreAgentProps, AgentCoreAgentResult>((props) => {
108
108
  const { defaults } = props;
109
109
  const networkMode = props.networkMode ?? "PUBLIC";
110
- if (networkMode === "VPC" && (!props.vpcSubnetIds?.length || !props.vpcSecurityGroupIds?.length)) {
110
+ // Check presence, not `.length`: a cross-stack value (Fn::Split of a Parameter,
111
+ // the shape stackOutput/Ref/Split produce) is a truthy intrinsic object with no
112
+ // `.length`, so a `.length` check wrongly rejects a value that WAS supplied
113
+ // (#938). An actually-empty list is caught by CloudFormation at deploy time.
114
+ if (networkMode === "VPC" && (props.vpcSubnetIds === undefined || props.vpcSecurityGroupIds === undefined)) {
111
115
  throw new Error("AgentCoreAgent requires vpcSubnetIds and vpcSecurityGroupIds when networkMode is \"VPC\"");
112
116
  }
113
117
  const memoryEventExpiryDays = props.memoryEventExpiryDays ?? 30;
@@ -3071,7 +3071,7 @@ export declare class AutoScalingGroup {
3071
3071
  TrafficSources?: AutoScalingGroup_TrafficSourceIdentifier[];
3072
3072
  /** A list of subnet IDs for a virtual private cloud (VPC) where instances in the Auto Scaling group can be created.
3073
3073
  If this resource specifies public subnets and is also in a VPC that is defined in the same stack template, you must use the [DependsOn attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) to declare a dependency on the [VPC-gateway attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html).
3074
- When you update ``VPCZoneIdentifier``, this retains the same Auto Scaling group and replaces old instances with new ones, according to the specified subnets. You can optionally specify how CloudFormation handles these updates by using an [UpdatePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html).
3074
+ When you update ``VPCZoneIdentifier``, this retains the same Auto Scaling group and replaces old instances with new ones, according to the specified subnets. To control how CloudFormation replaces the instances, add an [UpdatePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html) to your stack. Set the update policy to ``AutoScalingInstanceRefresh``. For more information, see the [AutoScalingInstanceRefresh policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html#cfn-attributes-updatepolicy-instancerefresh).
3075
3075
  Required to launch instances into a nondefault VPC. If you specify ``VPCZoneIdentifier`` with ``AvailabilityZones``, the subnets that you specify for this property must reside in those Availability Zones. */
3076
3076
  VPCZoneIdentifier?: string[];
3077
3077
  }, attributes?: CFResourceAttributes);
@@ -17601,14 +17601,14 @@ export declare class InstanceGroupConfig {
17601
17601
  JobFlowId: string;
17602
17602
  AutoScalingPolicy?: InstanceGroupConfig_AutoScalingPolicy;
17603
17603
  BidPrice?: string;
17604
- Configurations?: InstanceGroupConfig_Configuration[];
17604
+ Configurations?: InstanceGroupConfig_AppConfiguration[];
17605
17605
  CustomAmiId?: string;
17606
17606
  EbsConfiguration?: InstanceGroupConfig_EbsConfiguration;
17607
- Id?: string;
17607
+ InstanceGroupId?: string;
17608
17608
  Market?: string;
17609
17609
  Name?: string;
17610
17610
  }, attributes?: CFResourceAttributes);
17611
- readonly Id: string;
17611
+ readonly InstanceGroupId: string;
17612
17612
  }
17613
17613
 
17614
17614
  export declare class InstanceProfile {
@@ -17804,6 +17804,30 @@ export declare class InterconnectConnection {
17804
17804
  readonly Type: string;
17805
17805
  }
17806
17806
 
17807
+ export declare class IntermediateTable {
17808
+ constructor(props: {
17809
+ MembershipIdentifier: string;
17810
+ Name: string;
17811
+ PopulationAnalysisConfiguration: IntermediateTable_PopulationAnalysisConfiguration;
17812
+ AnalysisRules?: IntermediateTable_IntermediateTableAnalysisRule[];
17813
+ Arn?: string;
17814
+ CollaborationArn?: string;
17815
+ CollaborationIdentifier?: string;
17816
+ Description?: string;
17817
+ IntermediateTableIdentifier?: string;
17818
+ KmsKeyArn?: string;
17819
+ MembershipArn?: string;
17820
+ Status?: IntermediateTable_IntermediateTableStatus;
17821
+ Tags?: IntermediateTable_Tag[];
17822
+ }, attributes?: CFResourceAttributes);
17823
+ readonly Arn: string;
17824
+ readonly CollaborationArn: string;
17825
+ readonly CollaborationIdentifier: string;
17826
+ readonly IntermediateTableIdentifier: string;
17827
+ readonly MembershipArn: string;
17828
+ readonly Status: IntermediateTable_IntermediateTableStatus;
17829
+ }
17830
+
17807
17831
  export declare class InternetGateway {
17808
17832
  constructor(props: {
17809
17833
  InternetGatewayId?: string;
@@ -20051,6 +20075,7 @@ export declare class Listener {
20051
20075
  /** [HTTPS and TLS listeners] The security policy that defines which protocols and ciphers are supported. For more information, see [Security policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/describe-ssl-policies.html) in the *Application Load Balancers Guide* and [Security policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/describe-ssl-policies.html) in the *Network Load Balancers Guide*.
20052
20076
  [HTTPS listeners] Updating the security policy can result in interruptions if the load balancer is handling a high volume of traffic. To decrease the possibility of an interruption if your load balancer is handling a high volume of traffic, create an additional load balancer or request an LCU reservation. */
20053
20077
  SslPolicy?: string;
20078
+ Tags?: Listener_Tag[];
20054
20079
  }, attributes?: CFResourceAttributes);
20055
20080
  readonly ListenerArn: string;
20056
20081
  }
@@ -41378,6 +41403,14 @@ export declare class AppConfigResourceObject {
41378
41403
  });
41379
41404
  }
41380
41405
 
41406
+ export declare class AppConfiguration {
41407
+ constructor(props: {
41408
+ Classification?: string;
41409
+ ConfigurationProperties?: Record<string, unknown>;
41410
+ Configurations?: InstanceGroupConfig_AppConfiguration[];
41411
+ });
41412
+ }
41413
+
41381
41414
  export declare class AppCookieStickinessPolicy {
41382
41415
  constructor(props: {
41383
41416
  /** The name of the application cookie used for stickiness. */
@@ -44843,7 +44876,8 @@ export declare class AutoScalingGroup_AvailabilityZoneDistribution {
44843
44876
  constructor(props: {
44844
44877
  /** If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``.
44845
44878
  + ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution.
44846
- + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead. */
44879
+ + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead.
44880
+ + ``reservations-then-balanced`` - Auto Scaling will first attempt to launch into your Capacity Reservations, and then balance any remaining capacity across healthy Availability Zones. */
44847
44881
  CapacityDistributionStrategy?: "balanced-best-effort" | "balanced-only" | "reservations-then-balanced";
44848
44882
  });
44849
44883
  }
@@ -45290,7 +45324,8 @@ export declare class AvailabilityZoneDistribution {
45290
45324
  constructor(props: {
45291
45325
  /** If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``.
45292
45326
  + ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution.
45293
- + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead. */
45327
+ + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead.
45328
+ + ``reservations-then-balanced`` - Auto Scaling will first attempt to launch into your Capacity Reservations, and then balance any remaining capacity across healthy Availability Zones. */
45294
45329
  CapacityDistributionStrategy?: "balanced-best-effort" | "balanced-only" | "reservations-then-balanced";
45295
45330
  });
45296
45331
  }
@@ -78908,24 +78943,26 @@ export declare class InstanceFleetConfig_SpotResizingSpecification {
78908
78943
  });
78909
78944
  }
78910
78945
 
78911
- export declare class InstanceGroupConfig_AutoScalingPolicy {
78946
+ export declare class InstanceGroupConfig_AppConfiguration {
78912
78947
  constructor(props: {
78913
- Constraints: InstanceGroupConfig_ScalingConstraints;
78914
- Rules: InstanceGroupConfig_ScalingRule[];
78948
+ Classification?: string;
78949
+ ConfigurationProperties?: Record<string, unknown>;
78950
+ Configurations?: InstanceGroupConfig_AppConfiguration[];
78915
78951
  });
78916
78952
  }
78917
78953
 
78918
- export declare class InstanceGroupConfig_Configuration {
78954
+ export declare class InstanceGroupConfig_AutoScalingPolicy {
78919
78955
  constructor(props: {
78920
- Classification?: string;
78921
- ConfigurationProperties?: Record<string, unknown>;
78922
- Configurations?: InstanceGroupConfig_Configuration[];
78956
+ Constraints: InstanceGroupConfig_ScalingConstraints;
78957
+ Rules: InstanceGroupConfig_ScalingRule[];
78923
78958
  });
78924
78959
  }
78925
78960
 
78926
78961
  export declare class InstanceGroupConfig_EbsBlockDeviceConfig {
78927
78962
  constructor(props: {
78928
78963
  VolumeSpecification: InstanceGroupConfig_VolumeSpecification;
78964
+ /** Use of this property can confuse CloudFormation drift detection. The EbsBlockDeviceConfigs read from the system may return a list with one entry per volume, replacing any entry specified in the template with a VolumesPerInstance greater than one by that many entries containing only the VolumeSpecification. Thus to avoid false drift detection, it is recommended to supply repeated entries in EbsBlockDeviceConfigs for any VolumeSpecification which is intended to be repeated and not to use this property.
78965
+ */
78929
78966
  VolumesPerInstance?: number;
78930
78967
  });
78931
78968
  }
@@ -79394,6 +79431,52 @@ export declare class IntermediateStorage {
79394
79431
  });
79395
79432
  }
79396
79433
 
79434
+ export declare class IntermediateTable_IntermediateTableAnalysisRule {
79435
+ constructor(props: {
79436
+ Policy: IntermediateTable_IntermediateTableAnalysisRulePolicy;
79437
+ Type: IntermediateTable_IntermediateTableAnalysisRuleType;
79438
+ });
79439
+ }
79440
+
79441
+ export declare class IntermediateTable_IntermediateTableAnalysisRulePolicy {
79442
+ constructor(props: {
79443
+ V1: any;
79444
+ });
79445
+ }
79446
+
79447
+ export declare class IntermediateTable_PopulationAnalysisConfiguration {
79448
+ constructor(props: {
79449
+ SqlParameters?: IntermediateTable_PopulationAnalysisSqlParameters;
79450
+ });
79451
+ }
79452
+
79453
+ export declare class IntermediateTable_PopulationAnalysisSqlParameters {
79454
+ constructor(props: {
79455
+ AnalysisTemplateArn?: string;
79456
+ QueryString?: string;
79457
+ });
79458
+ }
79459
+
79460
+ export declare class IntermediateTable_Tag {
79461
+ constructor(props: {
79462
+ Key: string;
79463
+ Value: string;
79464
+ });
79465
+ }
79466
+
79467
+ export declare class IntermediateTableAnalysisRule {
79468
+ constructor(props: {
79469
+ Policy: IntermediateTable_IntermediateTableAnalysisRulePolicy;
79470
+ Type: IntermediateTable_IntermediateTableAnalysisRuleType;
79471
+ });
79472
+ }
79473
+
79474
+ export declare class IntermediateTableAnalysisRulePolicy {
79475
+ constructor(props: {
79476
+ V1: any;
79477
+ });
79478
+ }
79479
+
79397
79480
  export declare class InternetGateway_Tag {
79398
79481
  constructor(props: {
79399
79482
  /** The tag key. */
@@ -84843,6 +84926,13 @@ export declare class Listener_RedirectConfig {
84843
84926
  });
84844
84927
  }
84845
84928
 
84929
+ export declare class Listener_Tag {
84930
+ constructor(props: {
84931
+ Key: string;
84932
+ Value: string;
84933
+ });
84934
+ }
84935
+
84846
84936
  export declare class Listener_TargetGroupStickinessConfig {
84847
84937
  constructor(props: {
84848
84938
  /** [Application Load Balancers] The time period, in seconds, during which requests from a client should be routed to the same target group. The range is 1-604800 seconds (7 days). You must specify this value when enabling target group stickiness. */
@@ -85869,10 +85959,10 @@ export declare class LogAlarm_ScheduleConfiguration {
85869
85959
  constructor(props: {
85870
85960
  /** The expression that defines when the scheduled query runs, e.g. rate(1 minute). */
85871
85961
  ScheduleExpression: string;
85872
- /** The number of seconds into the past to end the query window. */
85962
+ /** The number of seconds into the past to start the query window. Must be a positive value and cannot exceed 2592000 seconds (30 days). */
85963
+ StartTimeOffset: number;
85964
+ /** The number of seconds into the past to end the query window. Must be a non-negative value and cannot exceed 2592000 seconds (30 days). */
85873
85965
  EndTimeOffset?: number;
85874
- /** The number of seconds into the past to start the query window. */
85875
- StartTimeOffset?: number;
85876
85966
  });
85877
85967
  }
85878
85968
 
@@ -85880,14 +85970,16 @@ export declare class LogAlarm_ScheduledQueryConfiguration {
85880
85970
  constructor(props: {
85881
85971
  /** The aggregation expression for the scheduled query, e.g. count(*) or avg(latency) by host. */
85882
85972
  AggregationExpression: string;
85883
- /** The log groups to query. */
85884
- LogGroupIdentifiers: string[];
85885
85973
  /** The query string to execute against the specified log groups. */
85886
85974
  QueryString: string;
85887
85975
  /** The schedule configuration. */
85888
85976
  ScheduleConfiguration: LogAlarm_ScheduleConfiguration;
85889
85977
  /** The ARN of the IAM role that grants permissions to execute the scheduled query. */
85890
85978
  ScheduledQueryRoleARN: string;
85979
+ /** The log groups to query. */
85980
+ LogGroupIdentifiers?: string[];
85981
+ /** A list of key-value pairs to associate with the scheduled query that backs the log alarm. */
85982
+ Tags?: LogAlarm_Tag[];
85891
85983
  });
85892
85984
  }
85893
85985
 
@@ -98971,6 +99063,19 @@ export declare class Pool_Tag {
98971
99063
  });
98972
99064
  }
98973
99065
 
99066
+ export declare class PopulationAnalysisConfiguration {
99067
+ constructor(props: {
99068
+ SqlParameters?: IntermediateTable_PopulationAnalysisSqlParameters;
99069
+ });
99070
+ }
99071
+
99072
+ export declare class PopulationAnalysisSqlParameters {
99073
+ constructor(props: {
99074
+ AnalysisTemplateArn?: string;
99075
+ QueryString?: string;
99076
+ });
99077
+ }
99078
+
98974
99079
  export declare class Port {
98975
99080
  constructor(props: {
98976
99081
  /** Access Direction for Protocol of the Instance(inbound/outbound). */
@@ -109362,14 +109467,16 @@ export declare class ScheduledQueryConfiguration {
109362
109467
  constructor(props: {
109363
109468
  /** The aggregation expression for the scheduled query, e.g. count(*) or avg(latency) by host. */
109364
109469
  AggregationExpression: string;
109365
- /** The log groups to query. */
109366
- LogGroupIdentifiers: string[];
109367
109470
  /** The query string to execute against the specified log groups. */
109368
109471
  QueryString: string;
109369
109472
  /** The schedule configuration. */
109370
109473
  ScheduleConfiguration: LogAlarm_ScheduleConfiguration;
109371
109474
  /** The ARN of the IAM role that grants permissions to execute the scheduled query. */
109372
109475
  ScheduledQueryRoleARN: string;
109476
+ /** The log groups to query. */
109477
+ LogGroupIdentifiers?: string[];
109478
+ /** A list of key-value pairs to associate with the scheduled query that backs the log alarm. */
109479
+ Tags?: LogAlarm_Tag[];
109373
109480
  });
109374
109481
  }
109375
109482
 
@@ -127874,6 +127981,18 @@ export type IntelligentPromptRouter_PromptRouterStatus = "AVAILABLE";
127874
127981
 
127875
127982
  export type IntelligentPromptRouter_PromptRouterType = "custom" | "default";
127876
127983
 
127984
+ export type IntermediateTable_AdditionalAnalyses = "ALLOWED" | "NOT_ALLOWED" | "REQUIRED";
127985
+
127986
+ export type IntermediateTable_IntermediateTableAnalysisRuleType = "CUSTOM";
127987
+
127988
+ export type IntermediateTable_IntermediateTableStatus =
127989
+ | "BASE_TABLE_REMOVED"
127990
+ | "CREATED"
127991
+ | "DISALLOWED_BY_DATA_PROVIDER"
127992
+ | "POPULATE_FAILED"
127993
+ | "POPULATE_STARTED"
127994
+ | "POPULATE_SUCCESS";
127995
+
127877
127996
  export type InternetMonitorMonitor_MonitorConfigState =
127878
127997
  | "ACTIVE"
127879
127998
  | "ERROR"
@@ -688,7 +688,7 @@ export const Instance = createResource("AWS::EC2::Instance", "aws", {"InstanceId
688
688
  export const InstanceAccessControlAttributeConfiguration = createResource("AWS::SSO::InstanceAccessControlAttributeConfiguration", "aws", {});
689
689
  export const InstanceConnectEndpoint = createResource("AWS::EC2::InstanceConnectEndpoint", "aws", {"Id":"Id","AvailabilityZone":"AvailabilityZone","AvailabilityZoneId":"AvailabilityZoneId","CreatedAt":"CreatedAt","InstanceConnectEndpointArn":"InstanceConnectEndpointArn","NetworkInterfaceIds":"NetworkInterfaceIds","OwnerId":"OwnerId","PublicDnsNames":"PublicDnsNames","State":"State","StateMessage":"StateMessage","VpcId":"VpcId"});
690
690
  export const InstanceFleetConfig = createResource("AWS::EMR::InstanceFleetConfig", "aws", {"Id":"Id"});
691
- export const InstanceGroupConfig = createResource("AWS::EMR::InstanceGroupConfig", "aws", {"Id":"Id"});
691
+ export const InstanceGroupConfig = createResource("AWS::EMR::InstanceGroupConfig", "aws", {"InstanceGroupId":"InstanceGroupId"});
692
692
  export const InstanceProfile = createResource("AWS::IAM::InstanceProfile", "aws", {"Arn":"Arn"});
693
693
  export const InstanceSnapshot = createResource("AWS::Lightsail::InstanceSnapshot", "aws", {"Arn":"Arn","IsFromAutoSnapshot":"IsFromAutoSnapshot","Location":"Location","FromInstanceName":"FromInstanceName","FromInstanceArn":"FromInstanceArn","ResourceType":"ResourceType","SizeInGb":"SizeInGb","State":"State","SupportCode":"SupportCode"});
694
694
  export const InstanceStorageConfig = createResource("AWS::Connect::InstanceStorageConfig", "aws", {"AssociationId":"AssociationId"});
@@ -697,6 +697,7 @@ export const IntegrationResourceProperty = createResource("AWS::Glue::Integratio
697
697
  export const IntegrationResponse = createResource("AWS::ApiGatewayV2::IntegrationResponse", "aws", {"IntegrationResponseId":"IntegrationResponseId"});
698
698
  export const IntelligentPromptRouter = createResource("AWS::Bedrock::IntelligentPromptRouter", "aws", {"CreatedAt":"CreatedAt","PromptRouterArn":"PromptRouterArn","Status":"Status","Type":"Type","UpdatedAt":"UpdatedAt"});
699
699
  export const InterconnectConnection = createResource("AWS::Interconnect::Connection", "aws", {"ConnectionId":"ConnectionId","Arn":"Arn","Provider":"Provider","Type":"Type","State":"State","SharedId":"SharedId","OwnerAccount":"OwnerAccount","BillingTier":"BillingTier"});
700
+ export const IntermediateTable = createResource("AWS::CleanRooms::IntermediateTable", "aws", {"IntermediateTableIdentifier":"IntermediateTableIdentifier","Arn":"Arn","MembershipArn":"MembershipArn","CollaborationIdentifier":"CollaborationIdentifier","CollaborationArn":"CollaborationArn","Status":"Status"});
700
701
  export const InternetGateway = createResource("AWS::EC2::InternetGateway", "aws", {"InternetGatewayId":"InternetGatewayId"});
701
702
  export const InternetMonitorMonitor = createResource("AWS::InternetMonitor::Monitor", "aws", {"CreatedAt":"CreatedAt","ModifiedAt":"ModifiedAt","MonitorArn":"MonitorArn","ProcessingStatus":"ProcessingStatus","ProcessingStatusInfo":"ProcessingStatusInfo"});
702
703
  export const InvestigationGroup = createResource("AWS::AIOps::InvestigationGroup", "aws", {"CreatedBy":"CreatedBy","CreatedAt":"CreatedAt","LastModifiedBy":"LastModifiedBy","LastModifiedAt":"LastModifiedAt","Arn":"Arn"});
@@ -1984,6 +1985,7 @@ export const AppConfigDeployment_Tag = createProperty("AWS::AppConfig::Deploymen
1984
1985
  export const AppConfigEnvironment_Monitor = createProperty("AWS::AppConfig::Environment.Monitor", "aws");
1985
1986
  export const AppConfigEnvironment_Tag = createProperty("AWS::AppConfig::Environment.Tag", "aws");
1986
1987
  export const AppConfigResourceObject = createProperty("AWS::Evidently::Project.AppConfigResourceObject", "aws");
1988
+ export const AppConfiguration = createProperty("AWS::EMR::InstanceGroupConfig.AppConfiguration", "aws");
1987
1989
  export const AppCookieStickinessPolicy = createProperty("AWS::ElasticLoadBalancing::LoadBalancer.AppCookieStickinessPolicy", "aws");
1988
1990
  export const AppFlowConnector_ConnectorProvisioningConfig = createProperty("AWS::AppFlow::Connector.ConnectorProvisioningConfig", "aws");
1989
1991
  export const AppFlowConnector_LambdaConnectorProvisioningConfig = createProperty("AWS::AppFlow::Connector.LambdaConnectorProvisioningConfig", "aws");
@@ -5822,8 +5824,8 @@ export const InstanceFleetConfig_OnDemandProvisioningSpecification = createPrope
5822
5824
  export const InstanceFleetConfig_OnDemandResizingSpecification = createProperty("AWS::EMR::InstanceFleetConfig.OnDemandResizingSpecification", "aws");
5823
5825
  export const InstanceFleetConfig_SpotProvisioningSpecification = createProperty("AWS::EMR::InstanceFleetConfig.SpotProvisioningSpecification", "aws");
5824
5826
  export const InstanceFleetConfig_SpotResizingSpecification = createProperty("AWS::EMR::InstanceFleetConfig.SpotResizingSpecification", "aws");
5827
+ export const InstanceGroupConfig_AppConfiguration = createProperty("AWS::EMR::InstanceGroupConfig.AppConfiguration", "aws");
5825
5828
  export const InstanceGroupConfig_AutoScalingPolicy = createProperty("AWS::EMR::InstanceGroupConfig.AutoScalingPolicy", "aws");
5826
- export const InstanceGroupConfig_Configuration = createProperty("AWS::EMR::InstanceGroupConfig.Configuration", "aws");
5827
5829
  export const InstanceGroupConfig_EbsBlockDeviceConfig = createProperty("AWS::EMR::InstanceGroupConfig.EbsBlockDeviceConfig", "aws");
5828
5830
  export const InstanceGroupConfig_EbsConfiguration = createProperty("AWS::EMR::InstanceGroupConfig.EbsConfiguration", "aws");
5829
5831
  export const InstanceGroupConfig_ScalingAction = createProperty("AWS::EMR::InstanceGroupConfig.ScalingAction", "aws");
@@ -5873,6 +5875,13 @@ export const InterconnectConnection_Tag = createProperty("AWS::Interconnect::Con
5873
5875
  export const Interface = createProperty("AWS::MediaConnect::FlowOutput.Interface", "aws");
5874
5876
  export const InterfaceMapping = createProperty("AWS::MediaLive::Cluster.InterfaceMapping", "aws");
5875
5877
  export const IntermediateStorage = createProperty("AWS::Bedrock::DataSource.IntermediateStorage", "aws");
5878
+ export const IntermediateTable_IntermediateTableAnalysisRule = createProperty("AWS::CleanRooms::IntermediateTable.IntermediateTableAnalysisRule", "aws");
5879
+ export const IntermediateTable_IntermediateTableAnalysisRulePolicy = createProperty("AWS::CleanRooms::IntermediateTable.IntermediateTableAnalysisRulePolicy", "aws");
5880
+ export const IntermediateTable_PopulationAnalysisConfiguration = createProperty("AWS::CleanRooms::IntermediateTable.PopulationAnalysisConfiguration", "aws");
5881
+ export const IntermediateTable_PopulationAnalysisSqlParameters = createProperty("AWS::CleanRooms::IntermediateTable.PopulationAnalysisSqlParameters", "aws");
5882
+ export const IntermediateTable_Tag = createProperty("AWS::CleanRooms::IntermediateTable.Tag", "aws");
5883
+ export const IntermediateTableAnalysisRule = createProperty("AWS::CleanRooms::IntermediateTable.IntermediateTableAnalysisRule", "aws");
5884
+ export const IntermediateTableAnalysisRulePolicy = createProperty("AWS::CleanRooms::IntermediateTable.IntermediateTableAnalysisRulePolicy", "aws");
5876
5885
  export const InternetGateway_Tag = createProperty("AWS::EC2::InternetGateway.Tag", "aws");
5877
5886
  export const InternetMeasurementsLogDelivery = createProperty("AWS::InternetMonitor::Monitor.InternetMeasurementsLogDelivery", "aws");
5878
5887
  export const InternetMonitorMonitor_HealthEventsConfig = createProperty("AWS::InternetMonitor::Monitor.HealthEventsConfig", "aws");
@@ -6427,6 +6436,7 @@ export const Listener_JwtValidationConfig = createProperty("AWS::ElasticLoadBala
6427
6436
  export const Listener_ListenerAttribute = createProperty("AWS::ElasticLoadBalancingV2::Listener.ListenerAttribute", "aws");
6428
6437
  export const Listener_MutualAuthentication = createProperty("AWS::ElasticLoadBalancingV2::Listener.MutualAuthentication", "aws");
6429
6438
  export const Listener_RedirectConfig = createProperty("AWS::ElasticLoadBalancingV2::Listener.RedirectConfig", "aws");
6439
+ export const Listener_Tag = createProperty("AWS::ElasticLoadBalancingV2::Listener.Tag", "aws");
6430
6440
  export const Listener_TargetGroupStickinessConfig = createProperty("AWS::ElasticLoadBalancingV2::Listener.TargetGroupStickinessConfig", "aws");
6431
6441
  export const Listener_TargetGroupTuple = createProperty("AWS::ElasticLoadBalancingV2::Listener.TargetGroupTuple", "aws");
6432
6442
  export const ListenerAttribute = createProperty("AWS::ElasticLoadBalancingV2::Listener.ListenerAttribute", "aws");
@@ -7919,6 +7929,8 @@ export const PolicyStore_ValidationSettings = createProperty("AWS::VerifiedPermi
7919
7929
  export const PolicyTag = createProperty("AWS::FMS::Policy.PolicyTag", "aws");
7920
7930
  export const Pool_OptionalKeyword = createProperty("AWS::SMSVOICE::Pool.OptionalKeyword", "aws");
7921
7931
  export const Pool_Tag = createProperty("AWS::SMSVOICE::Pool.Tag", "aws");
7932
+ export const PopulationAnalysisConfiguration = createProperty("AWS::CleanRooms::IntermediateTable.PopulationAnalysisConfiguration", "aws");
7933
+ export const PopulationAnalysisSqlParameters = createProperty("AWS::CleanRooms::IntermediateTable.PopulationAnalysisSqlParameters", "aws");
7922
7934
  export const Port = createProperty("AWS::Lightsail::Instance.Port", "aws");
7923
7935
  export const Portal = createProperty("AWS::IoTSiteWise::AccessPolicy.Portal", "aws");
7924
7936
  export const PortalOptionsConfiguration = createProperty("AWS::SSO::Application.PortalOptionsConfiguration", "aws");
@@ -5045,6 +5045,11 @@
5045
5045
  "kind": "property",
5046
5046
  "lexicon": "aws"
5047
5047
  },
5048
+ "AppConfiguration": {
5049
+ "resourceType": "AWS::EMR::InstanceGroupConfig.AppConfiguration",
5050
+ "kind": "property",
5051
+ "lexicon": "aws"
5052
+ },
5048
5053
  "AppCookieStickinessPolicy": {
5049
5054
  "resourceType": "AWS::ElasticLoadBalancing::LoadBalancer.AppCookieStickinessPolicy",
5050
5055
  "kind": "property",
@@ -8347,8 +8352,7 @@
8347
8352
  "KmsKeyArn": "KmsKeyArn"
8348
8353
  },
8349
8354
  "createOnly": [
8350
- "KmsKeyId",
8351
- "ForceDelete"
8355
+ "KmsKeyId"
8352
8356
  ],
8353
8357
  "writeOnly": [
8354
8358
  "KmsKeyId",
@@ -48825,7 +48829,7 @@
48825
48829
  "kind": "resource",
48826
48830
  "lexicon": "aws",
48827
48831
  "attrs": {
48828
- "Id": "Id"
48832
+ "InstanceGroupId": "InstanceGroupId"
48829
48833
  },
48830
48834
  "createOnly": [
48831
48835
  "InstanceRole",
@@ -48838,17 +48842,21 @@
48838
48842
  "Market",
48839
48843
  "BidPrice"
48840
48844
  ],
48845
+ "writeOnly": [
48846
+ "EbsConfiguration/EbsBlockDeviceConfigs/*/VolumesPerInstance"
48847
+ ],
48841
48848
  "primaryIdentifier": [
48842
- "Id"
48849
+ "InstanceGroupId",
48850
+ "JobFlowId"
48843
48851
  ]
48844
48852
  },
48845
- "InstanceGroupConfig_AutoScalingPolicy": {
48846
- "resourceType": "AWS::EMR::InstanceGroupConfig.AutoScalingPolicy",
48853
+ "InstanceGroupConfig_AppConfiguration": {
48854
+ "resourceType": "AWS::EMR::InstanceGroupConfig.AppConfiguration",
48847
48855
  "kind": "property",
48848
48856
  "lexicon": "aws"
48849
48857
  },
48850
- "InstanceGroupConfig_Configuration": {
48851
- "resourceType": "AWS::EMR::InstanceGroupConfig.Configuration",
48858
+ "InstanceGroupConfig_AutoScalingPolicy": {
48859
+ "resourceType": "AWS::EMR::InstanceGroupConfig.AutoScalingPolicy",
48852
48860
  "kind": "property",
48853
48861
  "lexicon": "aws"
48854
48862
  },
@@ -49451,6 +49459,92 @@
49451
49459
  "kind": "property",
49452
49460
  "lexicon": "aws"
49453
49461
  },
49462
+ "IntermediateTable": {
49463
+ "resourceType": "AWS::CleanRooms::IntermediateTable",
49464
+ "kind": "resource",
49465
+ "lexicon": "aws",
49466
+ "attrs": {
49467
+ "IntermediateTableIdentifier": "IntermediateTableIdentifier",
49468
+ "Arn": "Arn",
49469
+ "MembershipArn": "MembershipArn",
49470
+ "CollaborationIdentifier": "CollaborationIdentifier",
49471
+ "CollaborationArn": "CollaborationArn",
49472
+ "Status": "Status"
49473
+ },
49474
+ "propertyConstraints": {
49475
+ "Arn": {
49476
+ "maxLength": 256
49477
+ },
49478
+ "MembershipArn": {
49479
+ "maxLength": 100
49480
+ },
49481
+ "CollaborationArn": {
49482
+ "maxLength": 100
49483
+ },
49484
+ "Name": {
49485
+ "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$",
49486
+ "minLength": 1,
49487
+ "maxLength": 100
49488
+ },
49489
+ "Description": {
49490
+ "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$",
49491
+ "maxLength": 255
49492
+ },
49493
+ "KmsKeyArn": {
49494
+ "minLength": 4,
49495
+ "maxLength": 2048
49496
+ }
49497
+ },
49498
+ "createOnly": [
49499
+ "MembershipIdentifier",
49500
+ "Name",
49501
+ "PopulationAnalysisConfiguration"
49502
+ ],
49503
+ "primaryIdentifier": [
49504
+ "IntermediateTableIdentifier",
49505
+ "MembershipIdentifier"
49506
+ ],
49507
+ "tagging": {
49508
+ "taggable": true,
49509
+ "tagOnCreate": true,
49510
+ "tagUpdatable": true
49511
+ }
49512
+ },
49513
+ "IntermediateTableAnalysisRule": {
49514
+ "resourceType": "AWS::CleanRooms::IntermediateTable.IntermediateTableAnalysisRule",
49515
+ "kind": "property",
49516
+ "lexicon": "aws"
49517
+ },
49518
+ "IntermediateTableAnalysisRulePolicy": {
49519
+ "resourceType": "AWS::CleanRooms::IntermediateTable.IntermediateTableAnalysisRulePolicy",
49520
+ "kind": "property",
49521
+ "lexicon": "aws"
49522
+ },
49523
+ "IntermediateTable_IntermediateTableAnalysisRule": {
49524
+ "resourceType": "AWS::CleanRooms::IntermediateTable.IntermediateTableAnalysisRule",
49525
+ "kind": "property",
49526
+ "lexicon": "aws"
49527
+ },
49528
+ "IntermediateTable_IntermediateTableAnalysisRulePolicy": {
49529
+ "resourceType": "AWS::CleanRooms::IntermediateTable.IntermediateTableAnalysisRulePolicy",
49530
+ "kind": "property",
49531
+ "lexicon": "aws"
49532
+ },
49533
+ "IntermediateTable_PopulationAnalysisConfiguration": {
49534
+ "resourceType": "AWS::CleanRooms::IntermediateTable.PopulationAnalysisConfiguration",
49535
+ "kind": "property",
49536
+ "lexicon": "aws"
49537
+ },
49538
+ "IntermediateTable_PopulationAnalysisSqlParameters": {
49539
+ "resourceType": "AWS::CleanRooms::IntermediateTable.PopulationAnalysisSqlParameters",
49540
+ "kind": "property",
49541
+ "lexicon": "aws"
49542
+ },
49543
+ "IntermediateTable_Tag": {
49544
+ "resourceType": "AWS::CleanRooms::IntermediateTable.Tag",
49545
+ "kind": "property",
49546
+ "lexicon": "aws"
49547
+ },
49454
49548
  "InternetGateway": {
49455
49549
  "resourceType": "AWS::EC2::InternetGateway",
49456
49550
  "kind": "resource",
@@ -54791,7 +54885,12 @@
54791
54885
  ],
54792
54886
  "primaryIdentifier": [
54793
54887
  "ListenerArn"
54794
- ]
54888
+ ],
54889
+ "tagging": {
54890
+ "taggable": true,
54891
+ "tagOnCreate": true,
54892
+ "tagUpdatable": true
54893
+ }
54795
54894
  },
54796
54895
  "ListenerAttribute": {
54797
54896
  "resourceType": "AWS::ElasticLoadBalancingV2::Listener.ListenerAttribute",
@@ -55022,6 +55121,11 @@
55022
55121
  "kind": "property",
55023
55122
  "lexicon": "aws"
55024
55123
  },
55124
+ "Listener_Tag": {
55125
+ "resourceType": "AWS::ElasticLoadBalancingV2::Listener.Tag",
55126
+ "kind": "property",
55127
+ "lexicon": "aws"
55128
+ },
55025
55129
  "Listener_TargetGroupStickinessConfig": {
55026
55130
  "resourceType": "AWS::ElasticLoadBalancingV2::Listener.TargetGroupStickinessConfig",
55027
55131
  "kind": "property",
@@ -71684,6 +71788,16 @@
71684
71788
  "kind": "property",
71685
71789
  "lexicon": "aws"
71686
71790
  },
71791
+ "PopulationAnalysisConfiguration": {
71792
+ "resourceType": "AWS::CleanRooms::IntermediateTable.PopulationAnalysisConfiguration",
71793
+ "kind": "property",
71794
+ "lexicon": "aws"
71795
+ },
71796
+ "PopulationAnalysisSqlParameters": {
71797
+ "resourceType": "AWS::CleanRooms::IntermediateTable.PopulationAnalysisSqlParameters",
71798
+ "kind": "property",
71799
+ "lexicon": "aws"
71800
+ },
71687
71801
  "Port": {
71688
71802
  "resourceType": "AWS::Lightsail::Instance.Port",
71689
71803
  "kind": "property",