mirror of
https://github.com/alexgo-io/peggedassets-server.git
synced 2026-01-12 16:53:14 +08:00
159 lines
3.8 KiB
YAML
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
|