diff --git a/awscli/customizations/cloudformation/artifact_exporter.py b/awscli/customizations/cloudformation/artifact_exporter.py index a1e61bf27ee5..cba80c609aef 100644 --- a/awscli/customizations/cloudformation/artifact_exporter.py +++ b/awscli/customizations/cloudformation/artifact_exporter.py @@ -344,6 +344,22 @@ class AppSyncResolverResponseTemplateResource(Resource): PACKAGE_NULL_PROPERTY = False +class AppSyncFunctionConfigurationRequestTemplateResource(Resource): + RESOURCE_TYPE = "AWS::AppSync::FunctionConfiguration" + PROPERTY_NAME = "RequestMappingTemplateS3Location" + # Don't package the directory if RequestMappingTemplateS3Location is omitted. + # Necessary to support RequestMappingTemplate + PACKAGE_NULL_PROPERTY = False + + +class AppSyncFunctionConfigurationResponseTemplateResource(Resource): + RESOURCE_TYPE = "AWS::AppSync::FunctionConfiguration" + PROPERTY_NAME = "ResponseMappingTemplateS3Location" + # Don't package the directory if ResponseMappingTemplateS3Location is omitted. + # Necessary to support ResponseMappingTemplate + PACKAGE_NULL_PROPERTY = False + + class LambdaFunctionResource(ResourceWithS3UrlDict): RESOURCE_TYPE = "AWS::Lambda::Function" PROPERTY_NAME = "Code" @@ -462,6 +478,8 @@ class ServerlessApplicationResource(CloudFormationStackResource): GraphQLSchemaResource, AppSyncResolverRequestTemplateResource, AppSyncResolverResponseTemplateResource, + AppSyncFunctionConfigurationRequestTemplateResource, + AppSyncFunctionConfigurationResponseTemplateResource, ApiGatewayRestApiResource, LambdaFunctionResource, ElasticBeanstalkApplicationVersion, diff --git a/tests/unit/customizations/cloudformation/test_artifact_exporter.py b/tests/unit/customizations/cloudformation/test_artifact_exporter.py index e93d14575073..8964b6c97056 100644 --- a/tests/unit/customizations/cloudformation/test_artifact_exporter.py +++ b/tests/unit/customizations/cloudformation/test_artifact_exporter.py @@ -22,7 +22,11 @@ ServerlessApplicationResource, LambdaLayerVersionResource, \ copy_to_temp_dir, include_transform_export_handler, GLOBAL_EXPORT_DICT, \ ServerlessLayerVersionResource, ServerlessRepoApplicationLicense, \ - ServerlessRepoApplicationReadme + ServerlessRepoApplicationReadme, \ + AppSyncResolverRequestTemplateResource, \ + AppSyncResolverResponseTemplateResource, \ + AppSyncFunctionConfigurationRequestTemplateResource, \ + AppSyncFunctionConfigurationResponseTemplateResource def test_is_s3_url(): @@ -78,6 +82,26 @@ def test_all_resources_export(): "expected_result": uploaded_s3_url }, + { + "class": AppSyncResolverRequestTemplateResource, + "expected_result": uploaded_s3_url + }, + + { + "class": AppSyncResolverResponseTemplateResource, + "expected_result": uploaded_s3_url + }, + + { + "class": AppSyncFunctionConfigurationRequestTemplateResource, + "expected_result": uploaded_s3_url + }, + + { + "class": AppSyncFunctionConfigurationResponseTemplateResource, + "expected_result": uploaded_s3_url + }, + { "class": ApiGatewayRestApiResource, "expected_result": { @@ -112,6 +136,10 @@ def test_all_resources_export(): "class": ServerlessRepoApplicationReadme, "expected_result": uploaded_s3_url }, + { + "class": ServerlessRepoApplicationLicense, + "expected_result": uploaded_s3_url + }, { "class": ServerlessRepoApplicationLicense, "expected_result": uploaded_s3_url