AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Globals: Function: Timeout: 50 MemorySize: 5000 Resources: ModelBucket: Type: AWS::S3::Bucket InferenceFunction: Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: PackageType: Image Events: Inference: Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api Properties: Path: /inference Method: post Policies: - S3ReadPolicy: BucketName: !Ref ModelBucket Environment: Variables: BUCKET_NAME: !Ref ModelBucket Metadata: Dockerfile: Dockerfile DockerContext: ./app/lambda_inference DockerTag: python3.8-v1 TrainingFunction: Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: PackageType: Image Events: Inference: Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api Properties: Path: /training Method: post Policies: - S3WritePolicy: BucketName: !Ref ModelBucket Environment: Variables: BUCKET_NAME: !Ref ModelBucket ReservedConcurrentExecutions: 1 Metadata: Dockerfile: Dockerfile DockerContext: ./app/lambda_training DockerTag: python3.8-v1 Outputs: # ServerlessRestApi is an implicit API created out of Events key under Serverless::Function # Find out more about other implicit resources you can reference within SAM # https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api InferenceApi: Description: "API Gateway endpoint URL for Prod stage for Inference function" Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/inference/" InferenceFunction: Description: "Inference Lambda Function ARN" Value: !GetAtt InferenceFunction.Arn InferenceFunctionIamRole: Description: "Implicit IAM Role created for Inference function" Value: !GetAtt InferenceFunction.Arn TrainingApi: Description: "API Gateway endpoint URL for Prod stage for Training function" Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/training/" TrainingFunction: Description: "Training Lambda Function ARN" Value: !GetAtt TrainingFunction.Arn TrainingFunctionIamRole: Description: "Implicit IAM Role created for Training function" Value: !GetAtt TrainingFunction.Arn