cloudcomputing-project/template.yml

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