Serverless-1.0.0-rc.1 AWS APIGatewayを介してアクセスできるようにAPIをデプロイできます。
質問:ランダムに割り当てられたもの(URL https://qwertylgbtqert.execute-api....
)ではなく、SSL証明書を使用してカスタムドメインを介して公開されたデプロイ済みAPIが必要ですか?
それはserverless.yml
またはサーバーレスフレームワーク内から実行できますか?
これが私の単純なサービスserverless.yml
の定義です:
service: my-service
provider:
name: aws
runtime: nodejs4.3
functions:
generate:
handler: handler.generate
events:
- http:
method: get
path: url
cors: true
これに関連する質問があります: ここでの回答 が、該当する回答を提供していません。特に、serverless.yml
自体の中からカスタムドメインを割り当てる方法。
AWS :: Route53リソースを作成してそれを活用できるかどうかを考えましたが、サーバーレスでそれを行う方法がわかりません。
最初にカスタムドメインを作成し、証明書をアップロードする必要があります。これは、このコードまたはこのソフトウェアの展開の一部であってはなりません。
カスタムドメインを作成したら、CloudFormationの観点から考える必要があります。
ServerlessFrameworkの他のすべてと同じように。 CloudFormationテンプレートを活用して、AWSのリソースを管理できます。
では、CloudFormationのカスタムドメインにAPI Gatewayをどのように追加できるかという質問になります(ヒント:Serverless Frameworkの代わりにCloudFormationを検索すると、Googleでさらに多くのヘルプがあります)。 CloudFormationでAWS::ApiGateway::BasePathMapping
を作成することが答えです。
これは、serverless.yml
ファイルのリソースで行われます。たとえば、次のようになります。
resources:
Resources:
pathmapping:
Type: AWS::ApiGateway::BasePathMapping
Properties:
BasePath: oauth2
DomainName: ${self:vars.domainName}
RestApiId:
Ref: ApiGatewayRestApi
Stage: ${self:vars.stage}
これには、使用するステージのserverless.env.ymlファイルにdomainName
とstageName
の変数が必要です。
編集:rc1より前のバージョンのServerless Framework 1の場合、パスマッピングリソースにDependsOn: IamPolicyLambda
を追加する必要があります。これは次の場所で修正されました: https://github.com/serverless/serverless/pull/178
Rc1の前に、RestApiApigEvent
の代わりにApiGatewayRestApi
を使用する必要があります
このトピックは更新する価値があると思うので、試してみます。必ず最初にCertificateManagerで証明書を作成してください。次に、「サーバーレスユーザー」がRoute53レコードセットを変更するための適切な管理者権限を持っていることを確認してください。次に、serverless.yamlに以下を追加します。
custom:
customDomain:
domainName: "api.example.com"
certificateName: "*.example.com"
createRoute53Record: true
plugins:
- serverless-domain-manager
Runをデプロイする前に(これには時間がかかる場合があります):
serverless create_domain
ソースと追加のオプションは見つけることができます ここ 。