{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Description": "An AWS Serverless Application that uses the ASP.NET Core framework running in Amazon Lambda.", "Parameters" : { "ParameterCloudFrontDistribution":{ "Type": "AWS::SSM::Parameter::Value", "Default": "/ImageRecognition/AWS/CloudFrontDomain" } }, "Globals":{ "Api" : { "Cors" : { "AllowMethods" : "'GET,POST,PUT,OPTIONS,DELETE'", "AllowOrigin": { "Fn::Sub": "'${ParameterCloudFrontDistribution}'" }, "AllowHeaders": "'Content-type, authorization, X-Forwarded-For'" } } }, "Conditions": {}, "Resources": { "LambdaRole": { "Type": "AWS::IAM::Role", "Description" : "", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] } } ] }, "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", "arn:aws:iam::aws:policy/AmazonSSMFullAccess", "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess", "arn:aws:iam::aws:policy/AmazonS3FullAccess", "arn:aws:iam::aws:policy/AWSStepFunctionsFullAccess", "arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess" ], "Policies" : [ ] } }, "ImageRecognitionAPI" : { "Type" : "AWS::Serverless::Api", "Properties" : { "StageName" : "Prod", "TracingEnabled": true } }, "AspNetCoreFunction": { "Type": "AWS::Serverless::Function", "Properties": { "Role": { "Fn::GetAtt": [ "LambdaRole", "Arn" ] }, "Handler": "ImageRecognition.API::ImageRecognition.API.LambdaEntryPoint::FunctionHandlerAsync", "MemorySize": 1024, "Timeout": 30, "Runtime":"dotnet6", "CodeUri": "", "Tracing": "Active", "Events":{ "AnyResource": { "Type": "Api", "Properties": { "Path": "/{proxy+}", "Method": "ANY", "RestApiId" : {"Ref": "ImageRecognitionAPI"} } } } } }, "ParameterImageRecognitionApiUrl": { "Type": "AWS::SSM::Parameter", "Description": "", "Properties": { "Type": "String", "Value": { "Fn::Sub": "https://${ImageRecognitionAPI}.execute-api.${AWS::Region}.amazonaws.com/Prod/" }, "Name": "/ImageRecognition/AppOptions/ImageRecognitionApiGatewayUrl" } } }, "Outputs" : { "ApiURL": { "Description": "API endpoint URL for Prod environment", "Value": { "Fn::Sub": "https://${ImageRecognitionAPI}.execute-api.${AWS::Region}.amazonaws.com/Prod/" } } } }