我有一个无服务器模板,其中包含一个带有 API 网关的 lambda 函数。我已经在模板中包含了一个 api 密钥。一切都部署正常,但最后我仍然收到以下类型错误:
TypeError: Cannot read property 'apiKeys' of undefined
我真的找不到任何好的解决方案来解决这个问题。这是我的无服务器模板示例,其中包含 apikey:
plugins:
- serverless-add-api-key
provider:
name: aws
timeout: 30 # Because API Gateway
runtime: python3.8
region: us-east-1
apiGateway:
apiKeys:
- MyKey
我在这里遗漏了什么?
答案 0 :(得分:1)
我猜您混淆了我们在使用和不使用 serverless-add-api-key 插件的情况下配置 api 密钥的方式。以下是不使用插件的有效 serverless.yml。
service: serverless-api-key
provider:
name: aws
stage: prod
timeout: 30
runtime: nodejs12.x
apiGateway:
apiKeys:
- MyKey
functions:
hello:
handler: handler.hello
events:
- http:
path: /hello
method: get
sls 在下面部署输出 -
Service Information
service: serverless-api-key
stage: prod
region: ap-south-1
stack: serverless-api-key-prod
resources: 14
api keys:
MyKey: Aeeblv4djg2AmlXXXXXXXXXXXXXX2fk9l4iCDRf
endpoints:
GET - https://xxxxxxxx.execute-api.ap-south-1.amazonaws.com/prod/hello
functions:
hello: serverless-api-key-prod-hello
layers:
None
如果您仍想使用该插件,则需要获取正确的语法。您可以使用以下 serverless.yml -
service: serverless-api-key-2
plugins:
- serverless-add-api-key
custom:
apiKeys:
- name: MyKey33
provider:
name: aws
stage: prod
region: ap-south-1
timeout: 30
runtime: nodejs12.x
functions:
hello:
handler: handler.hello
events:
- http:
path: /hello
method: get