| 
9 | 9 |       "ConstraintDescription": "Must be a valid S3 Bucket.",  | 
10 | 10 |       "MinLength": "1",  | 
11 | 11 |       "MaxLength": "64",  | 
12 |  | -      "AllowedPattern": "[a-zA-Z][a-zA-Z0-9-]*"  | 
 | 12 | +      "AllowedPattern": "[a-zA-Z][a-zA-Z0-9-.]*"  | 
13 | 13 |     },  | 
14 | 14 |     "OriginS3BucketRegion": {  | 
15 | 15 |       "Description": "S3 bucket Region that will source your images.",  | 
 | 
32 | 32 |         "us-west-2"  | 
33 | 33 |       ]  | 
34 | 34 |     },  | 
 | 35 | +    "EnableCors": {  | 
 | 36 | +      "Description": "Will this API require Cross-Origin Resource Sharing (CORS) support?",  | 
 | 37 | +      "Default": "No",  | 
 | 38 | +      "Type": "String",  | 
 | 39 | +      "AllowedValues": [  | 
 | 40 | +        "Yes",  | 
 | 41 | +        "No"  | 
 | 42 | +      ]  | 
 | 43 | +    },  | 
 | 44 | +    "CorsOrig": {  | 
 | 45 | +      "Description": "This value will be returned by the API in the Access-Control-Allow-Origin header. A star (*) value will support any origin. We recommend specifying a specific origin (e.g. http://example.domain) to restrict cross-site access to your API.",  | 
 | 46 | +      "Default": "*",  | 
 | 47 | +      "Type": "String"  | 
 | 48 | +    },  | 
35 | 49 |     "LambdaLogRetention": {  | 
36 | 50 |       "Description": "Retain Lambda CloudWatch Logs by days.",  | 
37 | 51 |       "Type": "Number",  | 
 | 
63 | 77 |      "ParameterGroups" : [  | 
64 | 78 |       {  | 
65 | 79 |         "Label" : { "default":"Image Handler API Configuration" },  | 
66 |  | -        "Parameters" : [ "OriginS3Bucket", "OriginS3BucketRegion", "LambdaLogRetention" ]  | 
 | 80 | +        "Parameters" : [ "OriginS3Bucket", "OriginS3BucketRegion", "EnableCors", "CorsOrig","LambdaLogRetention" ]  | 
67 | 81 |       },  | 
68 | 82 |       {  | 
69 | 83 |         "Label" : { "default":"Image Handler UI Configuration" },  | 
 | 
73 | 87 |      "ParameterLabels" : {  | 
74 | 88 |       "OriginS3Bucket" : { "default" : "Origin S3 Bucket" },  | 
75 | 89 |       "OriginS3BucketRegion" : { "default" : "Origin S3 Bucket Region" },  | 
 | 90 | +      "EnableCors" : { "default" : "Enable CORS?" },  | 
 | 91 | +      "CorsOrig" : { "default" : "CORS Origin" },  | 
76 | 92 |       "LambdaLogRetention" : { "default" : "Lambda Log Retention" },  | 
77 | 93 |       "DeployUI" : { "default" : "Deploy UI?" },  | 
78 | 94 |       "UIDestPrefix" : { "default" : "UI Prefix" },  | 
 | 
260 | 276 |             },  | 
261 | 277 |             "TC_AWS_REGION":{ "Ref": "OriginS3BucketRegion" },  | 
262 | 278 |             "TC_AWS_STORAGE_BUCKET":{ "Ref": "OriginS3Bucket" },  | 
 | 279 | +            "ENABLE_CORS":{ "Ref" : "EnableCors"},  | 
 | 280 | +            "CORS_ORIGIN":{ "Ref" : "CorsOrig"},  | 
263 | 281 |             "SEND_ANONYMOUS_DATA":{ "Fn::FindInMap" : [ "Send", "AnonymousUsage", "Data"]},  | 
264 | 282 |             "UUID":{"Fn::GetAtt": ["CreateUniqueID", "UUID"]},  | 
265 | 283 |             "LOG_LEVEL":"INFO"  | 
 | 
608 | 626 |     }  | 
609 | 627 |   },  | 
610 | 628 |   "Outputs": {  | 
611 |  | -    "CloudFrontURL": {  | 
612 |  | -      "Description": "URL for new CloudFront distribution",  | 
613 |  | -      "Value": { "Fn::Sub": [ "https://${Domain}", { "Domain": {"Fn::GetAtt": ["ImageHandlerDistribution", "DomainName"]}} ]}  | 
614 |  | -    },  | 
615 |  | -    "CloudFrontSampleRequest": {  | 
616 |  | -      "Description": "Sample URL calling origin image key through CloudFront",  | 
617 |  | -      "Value": { "Fn::Sub": [ "https://${Domain}/fit-in/100x100/image-name.jpg", { "Domain": {"Fn::GetAtt": ["ImageHandlerDistribution", "DomainName"]}} ]}  | 
618 |  | -    },  | 
619 | 629 |     "SolutionUI": {  | 
620 | 630 |       "Description": "If enabled, the URL for the UI.",  | 
621 | 631 |       "Value": { "Fn::Sub": [  | 
 | 
624 | 634 |                     "Bucket": { "Ref" : "OriginS3Bucket"},  | 
625 | 635 |                     "Prefix": { "Ref" : "UIDestPrefix" } }  | 
626 | 636 |                ] }  | 
 | 637 | +    },  | 
 | 638 | +    "CloudFrontURL": {  | 
 | 639 | +      "Description": "URL for new CloudFront distribution",  | 
 | 640 | +      "Value": { "Fn::Sub": [ "https://${Domain}", { "Domain": {"Fn::GetAtt": ["ImageHandlerDistribution", "DomainName"]}} ]}  | 
 | 641 | +    },  | 
 | 642 | +    "CloudFrontSampleRequest": {  | 
 | 643 | +      "Description": "Sample URL calling origin image key through CloudFront",  | 
 | 644 | +      "Value": { "Fn::Sub": [ "https://${Domain}/fit-in/100x100/image-name.jpg", { "Domain": {"Fn::GetAtt": ["ImageHandlerDistribution", "DomainName"]}} ]}  | 
 | 645 | +    },  | 
 | 646 | +    "CorsEnabled": {  | 
 | 647 | +      "Description": "Was CORS support enabled?",  | 
 | 648 | +      "Value": { "Ref" : "EnableCors"}  | 
 | 649 | +    },  | 
 | 650 | +    "CorsOrigin": {  | 
 | 651 | +      "Description": "If enabled, allow CORS from this origin.",  | 
 | 652 | +      "Value": { "Ref" : "CorsOrig"}  | 
627 | 653 |     }  | 
628 | 654 |   }  | 
629 | 655 | }  | 
0 commit comments