Skip to content

Commit 9096602

Browse files
feat(cfnspec): cloudformation spec v120.0.0 (#25354)
1 parent ecf92a7 commit 9096602

File tree

221 files changed

+2409
-379
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

221 files changed

+2409
-379
lines changed

packages/@aws-cdk/cfnspec/CHANGELOG.md

+286
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,289 @@
1+
# CloudFormation Resource Specification v120.0.0
2+
3+
## New Resource Types
4+
5+
* AWS::AppConfig::Extension
6+
* AWS::AppConfig::ExtensionAssociation
7+
* AWS::DataSync::StorageSystem
8+
* AWS::DevOpsGuru::LogAnomalyDetectionIntegration
9+
* AWS::FraudDetector::List
10+
* AWS::IoTWireless::WirelessDeviceImportTask
11+
* AWS::MSK::ClusterPolicy
12+
* AWS::MSK::VpcConnection
13+
* AWS::QuickSight::RefreshSchedule
14+
* AWS::RAM::Permission
15+
* AWS::SSMContacts::Plan
16+
* AWS::SSMContacts::Rotation
17+
18+
## Attribute Changes
19+
20+
* AWS::ApiGatewayV2::IntegrationResponse IntegrationResponseId (__added__)
21+
* AWS::ApiGatewayV2::Route RouteId (__added__)
22+
* AWS::IoTTwinMaker::Scene GeneratedSceneMetadata (__added__)
23+
* AWS::Macie::FindingsFilter FindingsFilterListItems (__deleted__)
24+
* AWS::StepFunctions::StateMachine StateMachineRevisionId (__added__)
25+
26+
## Property Changes
27+
28+
* AWS::ApiGatewayV2::IntegrationResponse ApiId.UpdateType (__changed__)
29+
* Old: Mutable
30+
* New: Immutable
31+
* AWS::ApiGatewayV2::IntegrationResponse IntegrationId.UpdateType (__changed__)
32+
* Old: Mutable
33+
* New: Immutable
34+
* AWS::ApiGatewayV2::Route AuthorizationScopes.DuplicatesAllowed (__added__)
35+
* AWS::AppFlow::ConnectorProfile ConnectorLabel.UpdateType (__changed__)
36+
* Old: Mutable
37+
* New: Immutable
38+
* AWS::AppFlow::ConnectorProfile KMSArn.UpdateType (__changed__)
39+
* Old: Immutable
40+
* New: Mutable
41+
* AWS::EC2::Host HostMaintenance (__added__)
42+
* AWS::EC2::VPCEndpointServicePermissions AllowedPrincipals.DuplicatesAllowed (__added__)
43+
* AWS::GameLift::GameServerGroup LaunchTemplate.Required (__changed__)
44+
* Old: true
45+
* New: false
46+
* AWS::Grafana::Workspace NetworkAccessControl (__added__)
47+
* AWS::Grafana::Workspace AccountAccessType.Required (__changed__)
48+
* Old: false
49+
* New: true
50+
* AWS::Grafana::Workspace AuthenticationProviders.Required (__changed__)
51+
* Old: false
52+
* New: true
53+
* AWS::Grafana::Workspace PermissionType.Required (__changed__)
54+
* Old: false
55+
* New: true
56+
* AWS::GroundStation::MissionProfile StreamsKmsKey (__added__)
57+
* AWS::GroundStation::MissionProfile StreamsKmsRole (__added__)
58+
* AWS::IVS::Channel InsecureIngest (__added__)
59+
* AWS::InternetMonitor::Monitor InternetMeasurementsLogDelivery (__added__)
60+
* AWS::InternetMonitor::Monitor TrafficPercentageToMonitor (__added__)
61+
* AWS::IoT::DomainConfiguration TlsConfig (__added__)
62+
* AWS::IoTTwinMaker::Scene SceneMetadata (__added__)
63+
* AWS::LakeFormation::DataLakeSettings AllowExternalDataFiltering (__added__)
64+
* AWS::LakeFormation::DataLakeSettings AuthorizedSessionTagValueList (__added__)
65+
* AWS::LakeFormation::DataLakeSettings CreateDatabaseDefaultPermissions (__added__)
66+
* AWS::LakeFormation::DataLakeSettings CreateTableDefaultPermissions (__added__)
67+
* AWS::LakeFormation::DataLakeSettings ExternalDataFilteringAllowList (__added__)
68+
* AWS::LakeFormation::DataLakeSettings Parameters (__added__)
69+
* AWS::Location::Tracker PricingPlan (__deleted__)
70+
* AWS::Location::Tracker PricingPlanDataSource (__deleted__)
71+
* AWS::Logs::SubscriptionFilter DestinationArn.UpdateType (__changed__)
72+
* Old: Immutable
73+
* New: Mutable
74+
* AWS::Logs::SubscriptionFilter Distribution.UpdateType (__changed__)
75+
* Old: Immutable
76+
* New: Mutable
77+
* AWS::Logs::SubscriptionFilter FilterPattern.UpdateType (__changed__)
78+
* Old: Immutable
79+
* New: Mutable
80+
* AWS::Logs::SubscriptionFilter RoleArn.UpdateType (__changed__)
81+
* Old: Immutable
82+
* New: Mutable
83+
* AWS::MWAA::Environment StartupScriptS3ObjectVersion (__added__)
84+
* AWS::MWAA::Environment StartupScriptS3Path (__added__)
85+
* AWS::MediaLive::Channel Maintenance (__added__)
86+
* AWS::MemoryDB::Cluster SubnetGroupName.UpdateType (__changed__)
87+
* Old: Mutable
88+
* New: Immutable
89+
* AWS::MemoryDB::User AccessString.Required (__changed__)
90+
* Old: true
91+
* New: false
92+
* AWS::MemoryDB::User AuthenticationMode.Required (__changed__)
93+
* Old: true
94+
* New: false
95+
* AWS::Neptune::DBCluster Port (__deleted__)
96+
* AWS::Neptune::DBCluster AssociatedRoles.DuplicatesAllowed (__added__)
97+
* AWS::Neptune::DBCluster AvailabilityZones.DuplicatesAllowed (__added__)
98+
* AWS::Neptune::DBCluster EnableCloudwatchLogsExports.DuplicatesAllowed (__added__)
99+
* AWS::Neptune::DBCluster Tags.DuplicatesAllowed (__added__)
100+
* AWS::Neptune::DBCluster VpcSecurityGroupIds.DuplicatesAllowed (__added__)
101+
* AWS::OpenSearchServerless::AccessPolicy Name.Required (__changed__)
102+
* Old: false
103+
* New: true
104+
* AWS::OpenSearchServerless::AccessPolicy Policy.Required (__changed__)
105+
* Old: false
106+
* New: true
107+
* AWS::OpenSearchServerless::AccessPolicy Type.Required (__changed__)
108+
* Old: false
109+
* New: true
110+
* AWS::OpenSearchServerless::SecurityPolicy Name.Required (__changed__)
111+
* Old: false
112+
* New: true
113+
* AWS::OpenSearchServerless::SecurityPolicy Type.Required (__changed__)
114+
* Old: false
115+
* New: true
116+
* AWS::RDS::DBCluster RestoreToTime (__added__)
117+
* AWS::RDS::DBInstance SourceDBClusterIdentifier (__added__)
118+
* AWS::RDS::GlobalCluster EngineVersion.UpdateType (__changed__)
119+
* Old: Immutable
120+
* New: Mutable
121+
* AWS::XRay::Group Tags.ItemType (__changed__)
122+
* Old: TagsItems
123+
* New: Tag
124+
* AWS::XRay::SamplingRule SamplingRuleRecord (__deleted__)
125+
* AWS::XRay::SamplingRule SamplingRuleUpdate (__deleted__)
126+
* AWS::XRay::SamplingRule Tags.ItemType (__changed__)
127+
* Old: TagsItems
128+
* New: Tag
129+
130+
## Property Type Changes
131+
132+
* AWS::ApiGatewayV2::Route.ParameterConstraints (__removed__)
133+
* AWS::Batch::JobDefinition.EmptyDir (__removed__)
134+
* AWS::Batch::JobDefinition.HostPath (__removed__)
135+
* AWS::Batch::JobDefinition.Resources (__removed__)
136+
* AWS::Batch::JobDefinition.SecurityContext (__removed__)
137+
* AWS::Macie::FindingsFilter.FindingsFilterListItem (__removed__)
138+
* AWS::XRay::Group.TagsItems (__removed__)
139+
* AWS::XRay::SamplingRule.SamplingRuleRecord (__removed__)
140+
* AWS::XRay::SamplingRule.SamplingRuleUpdate (__removed__)
141+
* AWS::XRay::SamplingRule.TagsItems (__removed__)
142+
* AWS::Batch::JobDefinition.EksContainerResourceRequirements (__added__)
143+
* AWS::Batch::JobDefinition.EksContainerSecurityContext (__added__)
144+
* AWS::Batch::JobDefinition.EksEmptyDir (__added__)
145+
* AWS::Batch::JobDefinition.EksHostPath (__added__)
146+
* AWS::Batch::JobDefinition.EksSecret (__added__)
147+
* AWS::Batch::JobDefinition.EphemeralStorage (__added__)
148+
* AWS::Batch::JobDefinition.Metadata (__added__)
149+
* AWS::Glue::Crawler.DeltaTarget (__added__)
150+
* AWS::Glue::Database.FederatedDatabase (__added__)
151+
* AWS::Grafana::Workspace.NetworkAccessControl (__added__)
152+
* AWS::GroundStation::DataflowEndpointGroup.AwsGroundStationAgentEndpoint (__added__)
153+
* AWS::GroundStation::DataflowEndpointGroup.ConnectionDetails (__added__)
154+
* AWS::GroundStation::DataflowEndpointGroup.IntegerRange (__added__)
155+
* AWS::GroundStation::DataflowEndpointGroup.RangedConnectionDetails (__added__)
156+
* AWS::GroundStation::DataflowEndpointGroup.RangedSocketAddress (__added__)
157+
* AWS::GroundStation::MissionProfile.StreamsKmsKey (__added__)
158+
* AWS::InternetMonitor::Monitor.InternetMeasurementsLogDelivery (__added__)
159+
* AWS::InternetMonitor::Monitor.S3Config (__added__)
160+
* AWS::IoT::DomainConfiguration.TlsConfig (__added__)
161+
* AWS::LakeFormation::DataLakeSettings.CreateDatabaseDefaultPermissions (__added__)
162+
* AWS::LakeFormation::DataLakeSettings.CreateTableDefaultPermissions (__added__)
163+
* AWS::LakeFormation::DataLakeSettings.ExternalDataFilteringAllowList (__added__)
164+
* AWS::LakeFormation::DataLakeSettings.Permissions (__added__)
165+
* AWS::LakeFormation::DataLakeSettings.PrincipalPermissions (__added__)
166+
* AWS::MediaLive::Channel.AudioDolbyEDecode (__added__)
167+
* AWS::MediaLive::Channel.DolbyVision81Settings (__added__)
168+
* AWS::MediaLive::Channel.Eac3AtmosSettings (__added__)
169+
* AWS::MediaLive::Channel.Esam (__added__)
170+
* AWS::MediaLive::Channel.MaintenanceCreateSettings (__added__)
171+
* AWS::MediaLive::Channel.MaintenanceUpdateSettings (__added__)
172+
* AWS::MediaLive::Channel.TimecodeBurninSettings (__added__)
173+
* AWS::VpcLattice::Listener.FixedResponse (__added__)
174+
* AWS::VpcLattice::Rule.FixedResponse (__added__)
175+
* AWS::Batch::JobDefinition.ContainerProperties EphemeralStorage (__added__)
176+
* AWS::Batch::JobDefinition.EksContainer Resources.Type (__changed__)
177+
* Old: Resources
178+
* New: EksContainerResourceRequirements
179+
* AWS::Batch::JobDefinition.EksContainer SecurityContext.Type (__changed__)
180+
* Old: SecurityContext
181+
* New: EksContainerSecurityContext
182+
* AWS::Batch::JobDefinition.EksVolume EmptyDir.Type (__changed__)
183+
* Old: EmptyDir
184+
* New: EksEmptyDir
185+
* AWS::Batch::JobDefinition.EksVolume HostPath.Type (__changed__)
186+
* Old: HostPath
187+
* New: EksHostPath
188+
* AWS::Batch::JobDefinition.EksVolume Secret.Type (__changed__)
189+
* Old: Secret
190+
* New: EksSecret
191+
* AWS::Batch::JobDefinition.PodProperties Metadata (__added__)
192+
* AWS::DMS::Endpoint.PostgreSqlSettings MapBooleanAsBoolean (__added__)
193+
* AWS::DMS::Endpoint.RedshiftSettings MapBooleanAsBoolean (__added__)
194+
* AWS::Glue::Crawler.Targets DeltaTargets (__added__)
195+
* AWS::Glue::Database.DatabaseInput FederatedDatabase (__added__)
196+
* AWS::GroundStation::DataflowEndpointGroup.EndpointDetails AwsGroundStationAgentEndpoint (__added__)
197+
* AWS::MediaLive::Channel.AudioCodecSettings Eac3AtmosSettings (__added__)
198+
* AWS::MediaLive::Channel.AudioTrackSelection DolbyEDecode (__added__)
199+
* AWS::MediaLive::Channel.AvailSettings Esam (__added__)
200+
* AWS::MediaLive::Channel.CaptionDescription Accessibility (__added__)
201+
* AWS::MediaLive::Channel.FrameCaptureSettings TimecodeBurninSettings (__added__)
202+
* AWS::MediaLive::Channel.H264Settings TimecodeBurninSettings (__added__)
203+
* AWS::MediaLive::Channel.H265ColorSpaceSettings DolbyVision81Settings (__added__)
204+
* AWS::MediaLive::Channel.H265Settings TimecodeBurninSettings (__added__)
205+
* AWS::MediaLive::Channel.M2tsSettings Scte35PrerollPullupMilliseconds (__added__)
206+
* AWS::MediaLive::Channel.Mpeg2Settings TimecodeBurninSettings (__added__)
207+
* AWS::MediaLive::Channel.NielsenNaesIiNw Timezone (__added__)
208+
* AWS::SSMContacts::Contact.Stage RotationIds (__added__)
209+
* AWS::SSMContacts::Contact.Stage DurationInMinutes.Required (__changed__)
210+
* Old: true
211+
* New: false
212+
* AWS::SageMaker::EndpointConfig.AsyncInferenceNotificationConfig IncludeInferenceResponseIn (__added__)
213+
* AWS::SageMaker::EndpointConfig.AsyncInferenceOutputConfig S3FailurePath (__added__)
214+
* AWS::SageMaker::EndpointConfig.AsyncInferenceOutputConfig S3OutputPath.Required (__changed__)
215+
* Old: true
216+
* New: false
217+
* AWS::SageMaker::EndpointConfig.ProductionVariant EnableSSMAccess (__added__)
218+
* AWS::VpcLattice::Listener.DefaultAction FixedResponse (__added__)
219+
* AWS::VpcLattice::Listener.DefaultAction Forward.Required (__changed__)
220+
* Old: true
221+
* New: false
222+
* AWS::VpcLattice::Rule.Action FixedResponse (__added__)
223+
* AWS::VpcLattice::Rule.Action Forward.Required (__changed__)
224+
* Old: true
225+
* New: false
226+
* AWS::VpcLattice::TargetGroup.HealthCheckConfig ProtocolVersion (__added__)
227+
* AWS::VpcLattice::TargetGroup.TargetGroupConfig IpAddressType (__added__)
228+
* AWS::XRay::SamplingRule.SamplingRule FixedRate.Required (__changed__)
229+
* Old: false
230+
* New: true
231+
* AWS::XRay::SamplingRule.SamplingRule HTTPMethod.Required (__changed__)
232+
* Old: false
233+
* New: true
234+
* AWS::XRay::SamplingRule.SamplingRule Host.Required (__changed__)
235+
* Old: false
236+
* New: true
237+
* AWS::XRay::SamplingRule.SamplingRule Priority.Required (__changed__)
238+
* Old: false
239+
* New: true
240+
* AWS::XRay::SamplingRule.SamplingRule ReservoirSize.Required (__changed__)
241+
* Old: false
242+
* New: true
243+
* AWS::XRay::SamplingRule.SamplingRule ResourceARN.Required (__changed__)
244+
* Old: false
245+
* New: true
246+
* AWS::XRay::SamplingRule.SamplingRule ServiceName.Required (__changed__)
247+
* Old: false
248+
* New: true
249+
* AWS::XRay::SamplingRule.SamplingRule ServiceType.Required (__changed__)
250+
* Old: false
251+
* New: true
252+
* AWS::XRay::SamplingRule.SamplingRule URLPath.Required (__changed__)
253+
* Old: false
254+
* New: true
255+
256+
# CloudFormation Resource Specification (us-west-2) v120.0.0
257+
258+
## New Resource Types
259+
260+
261+
## Attribute Changes
262+
263+
264+
## Property Changes
265+
266+
267+
## Property Type Changes
268+
269+
270+
# Serverless Application Model (SAM) Resource Specification v2016-10-31
271+
272+
## New Resource Types
273+
274+
275+
## Attribute Changes
276+
277+
278+
## Property Changes
279+
280+
281+
## Property Type Changes
282+
283+
* AWS::Serverless::Function.CognitoEvent (__added__)
284+
* AWS::Serverless::Function.EventSource Properties.Types (__changed__)
285+
* Added CognitoEvent
286+
1287
# CloudFormation Resource Specification v117.0.0
2288

3289
## New Resource Types

packages/@aws-cdk/cfnspec/build-tools/validate-evolution.ts

+58-6
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,41 @@ function validatePropertyTypeNameConsistency(oldSpec: any, newSpec: any) {
6565
return;
6666
}
6767

68+
const operations: any[] = [];
69+
70+
for (const key of disappearedKeys) {
71+
const [cfnResource, typeName] = key.split('.');
72+
const usages = findTypeUsages(oldSpec, cfnResource, typeName);
73+
if (usages.length === 0) {
74+
// Might have disappeared, but no one should have been using this
75+
continue;
76+
}
77+
78+
operations.push({
79+
op: 'move',
80+
from: `/PropertyTypes/${cfnResource}.<NEW_TYPE_NAME_HERE>`,
81+
path: `/PropertyTypes/${cfnResource}.${typeName}`,
82+
});
83+
84+
operations.push(...usages.map((path) => ({
85+
op: 'replace',
86+
path,
87+
value: typeName,
88+
})));
89+
}
90+
6891
const exampleJsonPatch = {
6992
patch: {
7093
description: 'Undoing upstream property type renames of <SERVICE> because <REASON>',
71-
operations: disappearedKeys.map((key) => ({
72-
op: 'move',
73-
from: `/PropertyTypes/${key.split('.')[0]}.<NEW_TYPE_NAME_HERE>`,
74-
path: `/PropertyTypes/${key}`,
75-
})),
94+
operations,
7695
},
7796
};
7897

98+
const now = new Date();
99+
const YYYY = `${now.getFullYear()}`;
100+
const MM = `0${now.getMonth() + 1}`.slice(-2);
101+
const DD = `0${now.getDate()}`.slice(-2);
102+
79103
process.stderr.write([
80104
'┌───────────────────────────────────────────────────────────────────────────────────────┐',
81105
'│ ▐█',
@@ -91,10 +115,38 @@ function validatePropertyTypeNameConsistency(oldSpec: any, newSpec: any) {
91115
'',
92116
'See what the renames were, check out this PR locally and add a JSON patch file for these types:',
93117
'',
94-
'(Example)',
118+
`(Example 600_Renames_${YYYY}${MM}${DD}_patch.json)`,
95119
'',
96120
JSON.stringify(exampleJsonPatch, undefined, 2),
97121
'\n',
98122
].join('\n'));
99123
process.exitCode = 1;
100124
}
125+
126+
function findTypeUsages(spec: any, cfnResource: string, typeName: string): string[] {
127+
const ret = new Array<string>();
128+
129+
const typesToInspect: Array<readonly [string, string]> = [
130+
...Object.keys(spec.PropertyTypes ?? {})
131+
.filter((propTypeName) => propTypeName.startsWith(`${cfnResource}.`))
132+
.map((propTypeName) => ['PropertyTypes', propTypeName] as const),
133+
...spec.ResourceTypes?.[cfnResource] ? [['ResourceTypes', cfnResource] as const] : [],
134+
];
135+
136+
for (const [topKey, typeKey] of typesToInspect) {
137+
const propType = spec[topKey][typeKey];
138+
139+
for (const innerKey of ['Properties', 'Attributes']) {
140+
141+
for (const [propName, propDef] of Object.entries(propType?.[innerKey] ?? {})) {
142+
for (const [fieldName, fieldType] of Object.entries(propDef as any)) {
143+
if (fieldType === typeName) {
144+
ret.push(`/${topKey}/${typeKey}/${innerKey}/${propName}/${fieldName}`);
145+
}
146+
}
147+
}
148+
}
149+
}
150+
151+
return ret;
152+
}

packages/@aws-cdk/cfnspec/cfn.version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
117.0.0
1+
120.0.0

packages/@aws-cdk/cfnspec/spec-source/specification/000_cfn/000_official/000_AWS_ACMPCA.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$version": "117.0.0",
2+
"$version": "120.0.0",
33
"PropertyTypes": {
44
"AWS::ACMPCA::Certificate.ApiPassthrough": {
55
"Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificate-apipassthrough.html",

packages/@aws-cdk/cfnspec/spec-source/specification/000_cfn/000_official/000_AWS_APS.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$version": "117.0.0",
2+
"$version": "120.0.0",
33
"PropertyTypes": {
44
"AWS::APS::Workspace.LoggingConfiguration": {
55
"Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-aps-workspace-loggingconfiguration.html",

0 commit comments

Comments
 (0)