如何在没有显式 swagger 定义的情况下在 SAM 中启用 "ApiKeyRequired" 属性?
How to enable "ApiKeyRequired" property in SAM without explicit swagger definition?
在 cloudformation 中,AWS::ApiGateway::Method
有一个布尔值 属性 ApiKeyRequired
。我怎样才能在 SAM 中达到同样的效果?
我知道我们可以启用显式 swagger 配置。是这样的
{
"swagger": "2.0",
"info": {
"version": "1.0",
"title": {
"Ref": "AWS::StackName"
}
},
"x-amazon-apigateway-api-key-source": "HEADER",
"paths": {
"/": {
"get": {
"x-amazon-apigateway-integration": {
"httpMethod": "POST",
"type": "aws_proxy",
"uri": {
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${GetHelloWorld.Arn}/invocations"
}
},
"responses": {},
"security": [
{
"api_key": []
}
]
}
}
},
"securityDefinitions": {
"api_key": {
"type": "apiKey",
"name": "x-api-key",
"in": "header"
}
}
}
在 SAM 中使用隐式 API 调用而不是显式传递 AWS::Serverless::Api
有可能吗?因为 swagger 代码适用于更少的端点,一旦端点增加就会变得复杂。有没有像 APIkeyRequired
这样的标志,就像我们在 Cloudformation
中那样?
感谢任何帮助
谢谢
现在 SAM 的 AWS::Serverless::Api
和 AWS::Serverless::Function
级别都支持 ApiKeyRequired
。
这是来自 AWS 文档的示例:
Resources:
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Auth:
ApiKeyRequired: true # sets for all methods
MyFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: .
Handler: index.handler
Runtime: nodejs8.10
Events:
ApiKey:
Type: Api
Properties:
RestApiId: !Ref MyApi
Path: /
Method: get
Auth:
ApiKeyRequired: true
您还可以从以下资源中了解这一点:
在 cloudformation 中,AWS::ApiGateway::Method
有一个布尔值 属性 ApiKeyRequired
。我怎样才能在 SAM 中达到同样的效果?
我知道我们可以启用显式 swagger 配置。是这样的
{
"swagger": "2.0",
"info": {
"version": "1.0",
"title": {
"Ref": "AWS::StackName"
}
},
"x-amazon-apigateway-api-key-source": "HEADER",
"paths": {
"/": {
"get": {
"x-amazon-apigateway-integration": {
"httpMethod": "POST",
"type": "aws_proxy",
"uri": {
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${GetHelloWorld.Arn}/invocations"
}
},
"responses": {},
"security": [
{
"api_key": []
}
]
}
}
},
"securityDefinitions": {
"api_key": {
"type": "apiKey",
"name": "x-api-key",
"in": "header"
}
}
}
在 SAM 中使用隐式 API 调用而不是显式传递 AWS::Serverless::Api
有可能吗?因为 swagger 代码适用于更少的端点,一旦端点增加就会变得复杂。有没有像 APIkeyRequired
这样的标志,就像我们在 Cloudformation
中那样?
感谢任何帮助 谢谢
现在 SAM 的 AWS::Serverless::Api
和 AWS::Serverless::Function
级别都支持 ApiKeyRequired
。
这是来自 AWS 文档的示例:
Resources:
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Auth:
ApiKeyRequired: true # sets for all methods
MyFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: .
Handler: index.handler
Runtime: nodejs8.10
Events:
ApiKey:
Type: Api
Properties:
RestApiId: !Ref MyApi
Path: /
Method: get
Auth:
ApiKeyRequired: true
您还可以从以下资源中了解这一点: