-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemplate.yml
159 lines (147 loc) · 4.41 KB
/
template.yml
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
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: Service Infra Build Pipeline
Metadata:
AWS::ServerlessRepo::Application:
Name: EarnAppDashboardMonitoring
Description: AWS Lambda function for sending EarnApp Dashboard Earnings information to Discord server
Author: Tran Vinh Cuong
SpdxLicenseId: Apache-2.0
ReadmeUrl: README.md
Labels: ['earnapp', 'discord']
HomePageUrl: https://github.com/vico/EarnAppMonitorAWSLambda
SemanticVersion: 0.0.1
SourceCodeUrl: https://github.com/vico/EarnAppMonitorAWSLambda
Globals:
Function:
Timeout: 10
Parameters:
Token:
Type: String
Description: EarnApp Dashboard OathRefreshToken
WebhookUrl:
Type: String
Description: Discord Server's webhook URL
local:
Type: String
Description: specify running on local or not
Default: "True"
Resources:
LambdaTestFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: src/
Handler: lambda_function.lambda_handler
Runtime: python3.9
Architectures:
- x86_64
Environment:
Variables:
TOKEN: !Ref Token
WEBHOOK_URL: !Ref WebhookUrl
local: "True"
MemorySize: 128
Role: !GetAtt LambdaRole.Arn
EventBridgeRule:
Type: AWS::Events::Rule
Properties:
Description: sample-rule
Name: everyday
ScheduleExpression: 'cron(15 * * * ? *)'
State: ENABLED
Targets:
- Arn: !GetAtt LambdaTestFunction.Arn
Id: lambda
PermissionForEventsToInvokeLambda:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !Ref LambdaTestFunction
Action: "lambda:InvokeFunction"
Principal: "events.amazonaws.com"
SourceArn:
Fn::GetAtt:
- "EventBridgeRule"
- "Arn"
MoneyTestTable:
Type: AWS::DynamoDB::Table
Properties:
AttributeDefinitions:
- AttributeName: email
AttributeType: S
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
KeySchema:
- AttributeName: email
KeyType: HASH
DevicesTestTable:
Type: AWS::DynamoDB::Table
Properties:
KeySchema:
- AttributeName: uuid
KeyType: HASH
- AttributeName: title
KeyType: RANGE
AttributeDefinitions:
- AttributeName: uuid
AttributeType: S
- AttributeName: title
AttributeType: S
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TransactionsTestTable:
Type: AWS::DynamoDB::Table
Properties:
KeySchema:
- AttributeName: uuid
KeyType: HASH
AttributeDefinitions:
- AttributeName: uuid
AttributeType: S
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
LambdaRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service:
- "lambda.amazonaws.com"
Action: "sts:AssumeRole"
Policies:
- PolicyName: SAMLambdaTest-DynamoDB
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action:
- "dynamodb:GetItem"
- "dynamodb:Query"
- "dynamodb:PutItem"
- "dynamodb:UpdateItem"
Resource:
- !GetAtt MoneyTestTable.Arn
- !GetAtt DevicesTestTable.Arn
- !GetAtt TransactionsTestTable.Arn
- PolicyName: SAMLambdaTest-CloudWatch
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action: "logs:*"
Resource: "arn:aws:logs:*:*:*"
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
LambdaTestFunction:
Description: "Hello World Lambda Function ARN"
Value: !GetAtt LambdaTestFunction.Arn
LambdaRole:
Description: "Implicit IAM Role created for Hello World function"
Value: !GetAtt LambdaRole.Arn