Files
peggedassets-server/serverless.yml
2022-06-30 14:17:28 +01:00

159 lines
3.8 KiB
YAML

service: llama-stablecoins
package:
individually: true
excludeDevDependencies: true
provider:
name: aws
runtime: nodejs14.x
memorySize: 130
region: eu-central-1
endpointType: REGIONAL # Set to regional because the api gateway will be behind a cloudfront distribution
stage: dev # Default to dev if no stage is specified
tracing: # Enable X-Ray tracing (debugging)
apiGateway: true
lambda: true
iamRoleStatements:
- Effect: Allow # X-Ray permissions
Action:
- xray:PutTraceSegments
- xray:PutTelemetryRecords
Resource: "*"
- Effect: "Allow"
Action:
- dynamodb:DescribeTable
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
- dynamodb:BatchGetItem
Resource:
- "Fn::GetAtt": [DynamoTable, Arn]
- Effect: Allow # Lambda logs on cloudwatch
Action:
- logs:CreateLogGroup
- logs:CreateLogStream
- logs:PutLogEvents
Resource:
- "Fn::Join":
- ":"
- - "arn:aws:logs"
- Ref: "AWS::Region"
- Ref: "AWS::AccountId"
- "log-group:/aws/lambda/*:*:*"
# For warm-up functions
- Effect: "Allow"
Action:
- "lambda:InvokeFunction"
Resource: "*"
- Effect: "Allow"
Action:
- "s3:ListBucket"
- "s3:*Object*"
Resource: "*"
environment:
DEFILLAMA_SDK_MUTED: true
tableName: ${self:custom.tableName}
stage: ${self:custom.stage}
custom:
stage: ${opt:stage, self:provider.stage}
esbuild:
bundle: true
minify: false
concurrency: 4
# for debugging
#keepOutputDirectory: true
prune:
automatic: true
number: 5 # Number of versions to keep
tableName: prod-stablecoins-table
domain: stablecoins.llama.fi
certificateArn: "arn:aws:acm:us-east-1:856461987125:certificate/b4209013-30a6-417e-847e-6e630c3e77fe"
hostedZone: llama.fi
functions:
fallback:
handler: src/fallback.default
events:
- http:
path: /{params+}
method: any
peggedchart:
handler: src/getPeggedChart.default
timeout: 60
memorySize: 3000
events:
- http:
path: peggedcharts
method: get
- http:
path: peggedcharts/{chain}
method: get
peggeds:
handler: src/getPeggeds.default
timeout: 120
memorySize: 2000
events:
- http:
path: peggeds
method: get
peggedAsset:
handler: src/getPegged.default
timeout: 120
memorySize: 2000
events:
- http:
path: pegged/{pegged}
method: get
peggedchains:
handler: src/getPeggedChains.default
timeout: 60
memorySize: 2000
events:
- http:
path: peggedchains
method: get
peggedprices:
handler: src/getPeggedPrices.default
timeout: 60
memorySize: 2000
events:
- http:
path: peggedprices
method: get
storePeggedAssets:
handler: src/storePeggedAssets.default
timeout: 900
memorySize: 2000
triggerStorePegged:
handler: src/triggerStorePegged.default
timeout: 900
events:
- schedule: cron(20 * * * ? *)
storePeggedPrices:
handler: src/storePeggedPrices.default
timeout: 900
memorySize: 1024
events:
- schedule: cron(*/30 * * * ? *)
fetchCoingeckoData:
handler: src/fetchCoingeckoData.default
timeout: 900
triggerFetchCoingeckoData:
handler: src/triggerFetchCoingeckoData.default
resources:
# DynamoDB and api gateway errors
- ${file(resources/table-and-api.yml)}
# Cloudfront API distribution
- ${file(resources/api-cloudfront-distribution.yml)}
plugins:
- serverless-esbuild
- serverless-offline
- serverless-prune-plugin