82 lines
2 KiB
YAML
82 lines
2 KiB
YAML
service: punaday-api
|
|
|
|
provider:
|
|
name: aws
|
|
runtime: nodejs4.3
|
|
memorySize: 128
|
|
|
|
plugins:
|
|
- serverless-plugin-optimize
|
|
- serverless-offline
|
|
|
|
package:
|
|
individually: true
|
|
|
|
resources:
|
|
Resources:
|
|
CloudfrontDistribution:
|
|
Type: AWS::CloudFront::Distribution
|
|
Properties:
|
|
DistributionConfig:
|
|
Aliases:
|
|
- ${env:DOMAIN}
|
|
Origins:
|
|
- DomainName: { "Fn::Join": [".", [ { "Ref": "ApiGatewayRestApi" }, "execute-api", { "Ref": "AWS::Region" }, "amazonaws.com"] ] }
|
|
OriginPath: "/production"
|
|
Id: APIGW
|
|
CustomOriginConfig:
|
|
HTTPSPort: 443
|
|
OriginProtocolPolicy: https-only
|
|
DefaultCacheBehavior:
|
|
AllowedMethods:
|
|
- HEAD
|
|
- DELETE
|
|
- POST
|
|
- GET
|
|
- OPTIONS
|
|
- PUT
|
|
- PATCH
|
|
TargetOriginId: APIGW
|
|
ForwardedValues:
|
|
QueryString: true
|
|
Cookies:
|
|
Forward: none
|
|
ViewerProtocolPolicy: redirect-to-https
|
|
DefaultTTL: 0
|
|
Enabled: true
|
|
ViewerCertificate:
|
|
AcmCertificateArn: ${env:AWS_CERTIFICATE}
|
|
SslSupportMethod: sni-only
|
|
Route53RecordSet:
|
|
Type: AWS::Route53::RecordSetGroup
|
|
Properties:
|
|
HostedZoneName: ${env:DNS_ZONE}
|
|
RecordSets:
|
|
- Name: ${env:DOMAIN}
|
|
Type: A
|
|
AliasTarget:
|
|
DNSName: { "Fn::GetAtt" : [ "CloudfrontDistribution", "DomainName"] }
|
|
HostedZoneId: Z2FDTNDATAQYW2 # always use for cloudfront
|
|
|
|
functions:
|
|
punsShow:
|
|
handler: src/puns/show.show
|
|
events:
|
|
- http:
|
|
path: puns/{id}
|
|
method: get
|
|
cors: true
|
|
punsToday:
|
|
handler: src/puns/show.today
|
|
events:
|
|
- http:
|
|
path: puns/today
|
|
method: get
|
|
cors: true
|
|
punsRandom:
|
|
handler: src/puns/show.random
|
|
events:
|
|
- http:
|
|
path: puns/random
|
|
method: get
|
|
cors: true
|