SAMテンプレートを使って、API Gateway + Lambda(Python3.8) で作成したAPIに、独自ドメインを使ってアクセスできるようにしたい、ということでカスタムドメインとパスマッピングの設定をしました。
前提
- ドメインをRoute53で管理している(HostedZonIdがある)
- SSL証明書をACMで管理している(ARNを持っている)
template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: custom domain api
Parameters:
Stage:
Type: String
Default: Prod
BasePath:
Type: String
Default: v1
DomainName:
Type: String
HostedZoneId:
Type: String
CertificateArn:
Type: String
Resources:
MyApiRole:
Type: AWS::IAM::Role
Properties: # 省略
GetConvertFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/get_hello_world/
Handler: app.lambda_handler
Runtime: python3.8
Role: !GetAtt MyApiRole.Arn
Events:
HttpGet:
Type: Api
Properties:
Path: /hello
Method: get
RestApiId: !Ref MyApi
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: !Ref Stage
Domain:
DomainName: !Ref DomainName
CertificateArn: !Ref CertificateArn
EndpointConfiguration: EDGE
Route53:
HostedZoneId: !Ref HostedZoneId
BasePath:
- !Ref BasePath