使用无服务器框架将 API 添加到使用计划

Adding API to Usage Plan using Serverless Framework

我的serverless.yaml文件如下:

service: aws-python

provider:
  name: aws
  runtime: python2.7
  stage: beta
  region: us-east-1

package:
  include:
    - deps
    - functions
    - lib

functions:
  hello:
    handler: functions/handler.function_handler
    events:
      - http:
          path: ta
          method: GET
      - http:
          path: ta
          method: POST

我想将此 API 添加到使用计划中。这是怎么做到的?

如评论中所述,Serverless 默认不支持此功能。您应该将适当的资源作为自定义资源添加到您的 CloudFormation 模板,或者使用 AWS CLI 或其他 SDK 创建它。

通过以下命令使用 AWS CLI

aws apigateway update-usage-plan --usage-plan-id <PLAN_ID> --patch-operations op=add,path=/apiStages,value=<API_ID>:<API_STAGE>

以上答案已过时。现在支持使用计划和 API 密钥。看这里:https://www.serverless.com/framework/docs/providers/aws/events/apigateway#setting-api-keys-for-your-rest-api

以下是上述文档中的示例:

provider:
  apiGateway:
    apiKeys:
      - free:
          - myFreeKey
          - ${opt:stage}-myFreeKey
      - paid:
          - myPaidKey
          - ${opt:stage}-myPaidKey
    usagePlan:
      - free:
          quota:
            limit: 5000
            offset: 2
            period: MONTH
          throttle:
            burstLimit: 200
            rateLimit: 100
      - paid:
          quota:
            limit: 50000
            offset: 1
            period: MONTH
          throttle:
            burstLimit: 2000
            rateLimit: 1000