-
Notifications
You must be signed in to change notification settings - Fork 0
/
template.yaml
executable file
·174 lines (157 loc) · 5.96 KB
/
template.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: FastAPI on Lambda for MusicFlow
# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
Function:
Timeout: 30
MemorySize: 4096
Resources:
# MusicFlowModelRegistry:
# Type: AWS::S3::Bucket
# Properties:
# BucketName: musicflow-registry-398212703914
# AccessControl: Private
# CorsConfiguration:
# CorsRules:
# - AllowedOrigins:
# - "*"
# AllowedMethods:
# - GET
# - PUT
# - POST
MusicFlowS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: musicflow-data-store
AccessControl: Private
CorsConfiguration:
CorsRules:
- AllowedOrigins:
- "*"
AllowedMethods:
- GET
- PUT
- POST
MusicFlowFunctionRole:
Type: AWS::IAM::Role
Properties:
RoleName: my-music-flow-role
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
- arn:aws:iam::aws:policy/AmazonS3FullAccess
MusicFlowAPI:
Type: AWS::Serverless::Api
Properties:
Name: Music Flow API
StageName: Prod
MusicFlowFunction:
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:
Role: !GetAtt MusicFlowFunctionRole.Arn
PackageType: Image
Events:
MusicFlow:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
RestApiId: !Ref MusicFlowAPI
Path: /info
Method: get
Health:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
RestApiId: !Ref MusicFlowAPI
Path: /api/health
Method: get
Features:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
RestApiId: !Ref MusicFlowAPI
Path: /api/features
Method: get
RawFeatures:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
RestApiId: !Ref MusicFlowAPI
Path: /api/raw_features
Method: get
Prediction:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
RestApiId: !Ref MusicFlowAPI
Path: /api/prediction
Method: get
APIDocumentation:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
RestApiId: !Ref MusicFlowAPI
Path: /api
Method: get
Documentation:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
RestApiId: !Ref MusicFlowAPI
Path: /docs
Method: get
FormGet:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
RestApiId: !Ref MusicFlowAPI
Path: /
Method: get
SearchSong:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
RestApiId: !Ref MusicFlowAPI
Path: /search_song
Method: post
About:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
RestApiId: !Ref MusicFlowAPI
Path: /about
Method: get
Metadata:
Dockerfile: Dockerfile
DockerContext: .
DockerTag: v1
ApplicationResourceGroup:
Type: AWS::ResourceGroups::Group
Properties:
Name:
Fn::Join:
- ''
- - ApplicationInsights-SAM-
- Ref: AWS::StackName
ResourceQuery:
Type: CLOUDFORMATION_STACK_1_0
ApplicationInsightsMonitoring:
Type: AWS::ApplicationInsights::Application
Properties:
ResourceGroupName:
Fn::Join:
- ''
- - ApplicationInsights-SAM-
- Ref: AWS::StackName
AutoConfigurationEnabled: 'true'
DependsOn: ApplicationResourceGroup
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
MusicFlowApi:
Description: "API Gateway endpoint URL for Prod stage for Music Flow function"
Value: !Sub "https://${MusicFlowAPI}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
MusicFlowFunction:
Description: "Music Flow Lambda Function ARN"
Value: !GetAtt MusicFlowFunction.Arn
MusicFlowFunctionIamRole:
Description: "Implicit IAM Role created for Music Flow function"
Value: !GetAtt MusicFlowFunctionRole.Arn