Skip to content

Commit 1de5aa3

Browse files
authored
Merge pull request #3640 from aws/tmp/1724090200/main
Merge main to develop
2 parents dd8056a + 5e55b37 commit 1de5aa3

16 files changed

+437
-26
lines changed

.cfnlintrc.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ ignore_templates:
130130
- tests/translator/output/**/managed_policies_minimal.json # Intentionally has non-existent managed policy name
131131
- tests/translator/output/**/function_with_mq.json # Property "EventSourceArn" can Fn::GetAtt to a resource of types [AWS::DynamoDB::GlobalTable, AWS::DynamoDB::Table, AWS::Kinesis::Stream, AWS::Kinesis::StreamConsumer, AWS::SQS::Queue]
132132
- tests/translator/output/**/function_with_mq_using_autogen_role.json # Property "EventSourceArn" can Fn::GetAtt to a resource of types [AWS::DynamoDB::GlobalTable, AWS::DynamoDB::Table, AWS::Kinesis::Stream, AWS::Kinesis::StreamConsumer, AWS::SQS::Queue]
133+
- tests/translator/output/**/function_with_recursive_loop.json # Invalid Property Resources/RecursiveLoopParameterFunction/Properties/RecursiveLoop
133134
- tests/translator/output/**/function_with_tracing.json # Obsolete DependsOn on resource
134135
- tests/translator/output/**/api_with_propagate_tags.json # TODO: Intentional error transform tests. Will be updated.
135136
- tests/translator/output/**/function_with_intrinsics_resource_attribute.json # CFN now supports intrinsics in DeletionPolicy

samtranslator/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "1.90.0"
1+
__version__ = "1.91.0"

samtranslator/internal/schema_source/aws_serverless_function.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,7 @@ class ScheduleV2Event(BaseModel):
512512
SnapStart = Optional[PassThroughProp] # TODO: check the type
513513
RuntimeManagementConfig = Optional[PassThroughProp] # TODO: check the type
514514
LoggingConfig = Optional[PassThroughProp] # TODO: add documentation
515+
RecursiveLoop = Optional[PassThroughProp]
515516

516517

517518
class Properties(BaseModel):
@@ -638,6 +639,7 @@ class Properties(BaseModel):
638639
VersionDescription: Optional[PassThroughProp] = prop("VersionDescription")
639640
VpcConfig: Optional[VpcConfig] = prop("VpcConfig")
640641
LoggingConfig: Optional[PassThroughProp] # TODO: add documentation
642+
RecursiveLoop: Optional[PassThroughProp] # TODO: add documentation
641643

642644

643645
class Globals(BaseModel):
@@ -696,6 +698,7 @@ class Globals(BaseModel):
696698
SnapStart: Optional[SnapStart] = prop("SnapStart")
697699
RuntimeManagementConfig: Optional[RuntimeManagementConfig] = prop("RuntimeManagementConfig")
698700
LoggingConfig: Optional[PassThroughProp] # TODO: add documentation
701+
RecursiveLoop: Optional[PassThroughProp] # TODO: add documentation
699702

700703

701704
class Resource(ResourceAttributes):

samtranslator/model/lambda_.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class LambdaFunction(Resource):
3535
"EphemeralStorage": GeneratedProperty(),
3636
"RuntimeManagementConfig": GeneratedProperty(),
3737
"LoggingConfig": GeneratedProperty(),
38+
"RecursiveLoop": GeneratedProperty(),
3839
}
3940

4041
Code: Dict[str, Any]
@@ -62,6 +63,7 @@ class LambdaFunction(Resource):
6263
EphemeralStorage: Optional[Dict[str, Any]]
6364
RuntimeManagementConfig: Optional[Dict[str, Any]]
6465
LoggingConfig: Optional[Dict[str, Any]]
66+
RecursiveLoop: Optional[str]
6567

6668
runtime_attrs = {"name": lambda self: ref(self.logical_id), "arn": lambda self: fnGetAtt(self.logical_id, "Arn")}
6769

samtranslator/model/sam_resources.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ class SamFunction(SamResourceMacro):
179179
"FunctionUrlConfig": PropertyType(False, IS_DICT),
180180
"RuntimeManagementConfig": PassThroughProperty(False),
181181
"LoggingConfig": PassThroughProperty(False),
182+
"RecursiveLoop": PassThroughProperty(False),
182183
}
183184

184185
FunctionName: Optional[Intrinsicable[str]]
@@ -221,6 +222,7 @@ class SamFunction(SamResourceMacro):
221222
SnapStart: Optional[Dict[str, Any]]
222223
FunctionUrlConfig: Optional[Dict[str, Any]]
223224
LoggingConfig: Optional[Dict[str, Any]]
225+
RecursiveLoop: Optional[str]
224226

225227
event_resolver = ResourceTypeResolver(
226228
samtranslator.model.eventsources,
@@ -605,6 +607,7 @@ def _construct_lambda_function(self, intrinsics_resolver: IntrinsicsResolver) ->
605607

606608
lambda_function.RuntimeManagementConfig = self.RuntimeManagementConfig # type: ignore[attr-defined]
607609
lambda_function.LoggingConfig = self.LoggingConfig
610+
lambda_function.RecursiveLoop = self.RecursiveLoop
608611
self._validate_package_type(lambda_function)
609612
return lambda_function
610613

samtranslator/plugins/globals/globals.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class Globals:
5454
"FunctionUrlConfig",
5555
"RuntimeManagementConfig",
5656
"LoggingConfig",
57+
"RecursiveLoop",
5758
],
5859
# Everything except
5960
# DefinitionBody: because its hard to reason about merge of Swagger dictionaries
@@ -98,7 +99,7 @@ class Globals:
9899
}
99100
# unreleased_properties *must be* part of supported_properties too
100101
unreleased_properties: Dict[str, List[str]] = {
101-
SamResourceType.Function.value: ["RuntimeManagementConfig"],
102+
SamResourceType.Function.value: ["RuntimeManagementConfig", "RecursiveLoop"],
102103
}
103104

104105
def __init__(self, template: Dict[str, Any]) -> None:

samtranslator/schema/schema.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278758,6 +278758,9 @@
278758278758
"markdownDescription": "The provisioned concurrency configuration of a function's alias\\. \n`ProvisionedConcurrencyConfig` can be specified only if the `AutoPublishAlias` is set\\. Otherwise, an error results\\.\n*Type*: [ProvisionedConcurrencyConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-provisionedconcurrencyconfig) \n*Required*: No \n*AWS CloudFormation compatibility*: This property is passed directly to the [`ProvisionedConcurrencyConfig`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-provisionedconcurrencyconfig) property of an `AWS::Lambda::Alias` resource\\.",
278759278759
"title": "ProvisionedConcurrencyConfig"
278760278760
},
278761+
"RecursiveLoop": {
278762+
"$ref": "#/definitions/PassThroughProp"
278763+
},
278761278764
"ReservedConcurrentExecutions": {
278762278765
"allOf": [
278763278766
{
@@ -279137,6 +279140,9 @@
279137279140
"markdownDescription": "The provisioned concurrency configuration of a function's alias\\. \n`ProvisionedConcurrencyConfig` can be specified only if the `AutoPublishAlias` is set\\. Otherwise, an error results\\.\n*Type*: [ProvisionedConcurrencyConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-provisionedconcurrencyconfig) \n*Required*: No \n*AWS CloudFormation compatibility*: This property is passed directly to the [`ProvisionedConcurrencyConfig`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-provisionedconcurrencyconfig) property of an `AWS::Lambda::Alias` resource\\.",
279138279141
"title": "ProvisionedConcurrencyConfig"
279139279142
},
279143+
"RecursiveLoop": {
279144+
"$ref": "#/definitions/PassThroughProp"
279145+
},
279140279146
"ReservedConcurrentExecutions": {
279141279147
"allOf": [
279142279148
{

schema_source/sam.schema.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5457,6 +5457,9 @@
54575457
"markdownDescription": "The provisioned concurrency configuration of a function's alias\\. \n`ProvisionedConcurrencyConfig` can be specified only if the `AutoPublishAlias` is set\\. Otherwise, an error results\\.\n*Type*: [ProvisionedConcurrencyConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-provisionedconcurrencyconfig) \n*Required*: No \n*AWS CloudFormation compatibility*: This property is passed directly to the [`ProvisionedConcurrencyConfig`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-provisionedconcurrencyconfig) property of an `AWS::Lambda::Alias` resource\\.",
54585458
"title": "ProvisionedConcurrencyConfig"
54595459
},
5460+
"RecursiveLoop": {
5461+
"$ref": "#/definitions/PassThroughProp"
5462+
},
54605463
"ReservedConcurrentExecutions": {
54615464
"allOf": [
54625465
{
@@ -6027,6 +6030,9 @@
60276030
],
60286031
"title": "ProvisionedConcurrencyConfig"
60296032
},
6033+
"RecursiveLoop": {
6034+
"$ref": "#/definitions/PassThroughProp"
6035+
},
60306036
"ReservedConcurrentExecutions": {
60316037
"allOf": [
60326038
{
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
Parameters:
2+
RecursiveLoopParam:
3+
Type: String
4+
Default: ALLOW
5+
6+
Resources:
7+
RecursiveLoopFunction:
8+
Type: AWS::Serverless::Function
9+
Properties:
10+
CodeUri: s3://sam-demo-bucket/hello.zip
11+
Handler: hello.handler
12+
Runtime: python3.9
13+
RecursiveLoop: TERMINATE
14+
15+
RecursiveLoopParameterFunction:
16+
Type: AWS::Serverless::Function
17+
Properties:
18+
CodeUri: s3://sam-demo-bucket/hello.zip
19+
Handler: hello.handler
20+
Runtime: python3.9
21+
RecursiveLoop: !Ref RecursiveLoopParam

tests/translator/input/globals_for_function.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Globals:
3232
UpdateRuntimeOn: Auto
3333
LoggingConfig:
3434
LogGroup: myJsonStructuredLogs
35+
RecursiveLoop: ALLOW
3536

3637

3738

@@ -65,3 +66,4 @@ Resources:
6566
ReservedConcurrentExecutions: 100
6667
RuntimeManagementConfig:
6768
UpdateRuntimeOn: FunctionChange
69+
RecursiveLoop: TERMINATE

0 commit comments

Comments
 (0)