mirror of
https://github.com/gabehf/cloudcomputing-project.git
synced 2026-03-10 07:50:28 -07:00
266 lines
6.4 KiB
YAML
266 lines
6.4 KiB
YAML
AWSTemplateFormatVersion: 2010-09-09
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
6892b949-4601-47eb-af8d-f584c12bc81b:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: 82
|
|
'y': 299
|
|
z: 0
|
|
embeds: []
|
|
80500ba5-1749-47bc-8cfa-3e9a0f0d0572:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: 200
|
|
'y': 300
|
|
z: 0
|
|
embeds: []
|
|
13c58f7b-60f4-4942-8731-d2b12e056e39:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: 340
|
|
'y': 180
|
|
z: 0
|
|
embeds: []
|
|
isassociatedwith:
|
|
- d6f4bd86-a7e4-46c2-abab-2fd987e6a4f1
|
|
- 792d4352-869b-4732-a0d2-d4bcc40a6b96
|
|
dependson:
|
|
- d6f4bd86-a7e4-46c2-abab-2fd987e6a4f1
|
|
- 13c58f7b-60f4-4942-8731-d2b12e056e39
|
|
792d4352-869b-4732-a0d2-d4bcc40a6b96:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: 460
|
|
'y': 180
|
|
z: 0
|
|
embeds: []
|
|
dependson:
|
|
- 13c58f7b-60f4-4942-8731-d2b12e056e39
|
|
3cf5efd5-85be-4593-b08b-bc3d4a6091b4:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: 340
|
|
'y': 350
|
|
z: 0
|
|
embeds: []
|
|
161bd476-b869-4c2e-968b-05cd0b73052f:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: 80
|
|
'y': 220
|
|
z: 0
|
|
embeds: []
|
|
isassociatedwith:
|
|
- 80500ba5-1749-47bc-8cfa-3e9a0f0d0572
|
|
d701293c-6494-4f90-b758-31f57f52e379:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: -190
|
|
'y': 250
|
|
z: 0
|
|
embeds: []
|
|
7d399dae-9f6c-4026-9286-d33113777902:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: -360
|
|
'y': 250
|
|
z: 0
|
|
embeds: []
|
|
b27ea063-d0ac-40c1-8c49-9147a53ea072:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: -270
|
|
'y': 380
|
|
z: 0
|
|
embeds: []
|
|
88fe53b7-5e96-416e-ad00-9ebe8d04269a:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: -200
|
|
'y': 140
|
|
z: 0
|
|
embeds: []
|
|
dependson:
|
|
- 80500ba5-1749-47bc-8cfa-3e9a0f0d0572
|
|
badaa010-8776-4159-8720-9ee8be16806e:
|
|
size:
|
|
width: 60
|
|
height: 60
|
|
position:
|
|
x: 80
|
|
'y': 380
|
|
z: 0
|
|
embeds: []
|
|
isassociatedwith:
|
|
- 80500ba5-1749-47bc-8cfa-3e9a0f0d0572
|
|
Resources:
|
|
URL:
|
|
Type: 'AWS::Lambda::Url'
|
|
Properties:
|
|
AuthType: NONE
|
|
TargetFunctionArn: !GetAtt
|
|
- Server
|
|
- Arn
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: 6892b949-4601-47eb-af8d-f584c12bc81b
|
|
DependsOn:
|
|
- Server
|
|
Server:
|
|
Type: 'AWS::Lambda::Function'
|
|
Properties:
|
|
FunctionName: Server
|
|
Handler: index.handler
|
|
Runtime: nodejs16.x
|
|
Code:
|
|
S3Bucket: '${bucketname}'
|
|
S3Key: index.zip
|
|
Role: !GetAtt SiteRole.Arn
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: 80500ba5-1749-47bc-8cfa-3e9a0f0d0572
|
|
DependsOn:
|
|
- SiteRole
|
|
SiteRole:
|
|
Type: 'AWS::IAM::Role'
|
|
Properties:
|
|
AssumeRolePolicyDocument:
|
|
Version: 2012-10-17
|
|
Statement:
|
|
- Effect: Allow
|
|
Principal:
|
|
Service:
|
|
- lambda.amazonaws.com
|
|
Action: 'sts:AssumeRole'
|
|
ManagedPolicyArns:
|
|
- 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess'
|
|
RoleName: SiteRole
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: 13c58f7b-60f4-4942-8731-d2b12e056e39
|
|
ExecPolicy:
|
|
Type: 'AWS::IAM::Policy'
|
|
Properties:
|
|
PolicyName: LambdaExcecutionPolicy
|
|
PolicyDocument:
|
|
Version: 2012-10-17
|
|
Statement:
|
|
- Effect: Allow
|
|
Action:
|
|
- 'logs:CreateLogGroup'
|
|
- 'logs:CreateLogStream'
|
|
- 'logs:PutLogEvents'
|
|
Resource: '*'
|
|
Roles:
|
|
- !Ref SiteRole
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: 792d4352-869b-4732-a0d2-d4bcc40a6b96
|
|
DependsOn:
|
|
- SiteRole
|
|
MusicTable:
|
|
Type: 'AWS::DynamoDB::Table'
|
|
Properties:
|
|
KeySchema:
|
|
- AttributeName: id
|
|
KeyType: HASH
|
|
AttributeDefinitions:
|
|
- AttributeName: id
|
|
AttributeType: S
|
|
BillingMode: PAY_PER_REQUEST
|
|
TableName: MusicTable
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: 3cf5efd5-85be-4593-b08b-bc3d4a6091b4
|
|
Permission:
|
|
Type: 'AWS::Lambda::Permission'
|
|
Properties:
|
|
Action: 'lambda:invokeFunctionUrl'
|
|
FunctionUrlAuthType: NONE
|
|
FunctionName: !Ref Server
|
|
Principal: '*'
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: 161bd476-b869-4c2e-968b-05cd0b73052f
|
|
MusicAPI:
|
|
Type: 'AWS::ApiGatewayV2::Api'
|
|
Properties:
|
|
Target: !GetAtt Server.Arn
|
|
Name: MusicAPI
|
|
ProtocolType: HTTP
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: d701293c-6494-4f90-b758-31f57f52e379
|
|
HomeRoute:
|
|
Type: 'AWS::ApiGatewayV2::Route'
|
|
Properties:
|
|
ApiId: !Ref MusicAPI
|
|
RouteKey: Get /
|
|
Target: !Join
|
|
- /
|
|
- - integrations
|
|
- !Ref APIIntegration
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: 7d399dae-9f6c-4026-9286-d33113777902
|
|
DependsOn:
|
|
- MusicAPI
|
|
AddRoute:
|
|
Type: 'AWS::ApiGatewayV2::Route'
|
|
Properties:
|
|
ApiId: !Ref MusicAPI
|
|
RouteKey: POST /add
|
|
Target: !Join
|
|
- /
|
|
- - integrations
|
|
- !Ref APIIntegration
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: b27ea063-d0ac-40c1-8c49-9147a53ea072
|
|
DependsOn:
|
|
- MusicAPI
|
|
APIIntegration:
|
|
Type: 'AWS::ApiGatewayV2::Integration'
|
|
Properties:
|
|
ApiId: !Ref MusicAPI
|
|
IntegrationType: AWS_PROXY
|
|
PayloadFormatVersion: 2.0
|
|
IntegrationUri:
|
|
'Fn::Sub': >-
|
|
arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${Server.Arn}/invocations
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: 88fe53b7-5e96-416e-ad00-9ebe8d04269a
|
|
DependsOn:
|
|
- Server
|
|
APIPermission:
|
|
Type: 'AWS::Lambda::Permission'
|
|
Properties:
|
|
Action: 'lambda:InvokeFunction'
|
|
FunctionName: !Ref Server
|
|
Principal: apigateway.amazonaws.com
|
|
SourceArn: !Sub 'arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${MusicAPI}/*/*/'
|
|
Metadata:
|
|
'AWS::CloudFormation::Designer':
|
|
id: badaa010-8776-4159-8720-9ee8be16806e
|