首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SAM中启用"ApiKeyRequired“属性而不需要显式的swagger定义?

如何在SAM中启用"ApiKeyRequired“属性而不需要显式的swagger定义?
EN

Stack Overflow用户
提问于 2018-10-22 19:02:42
回答 1查看 1.9K关注 0票数 4

在cloudformation中,AWS::ApiGateway::Method具有一个布尔属性ApiKeyRequired。我如何在SAM中实现同样的目标?

我知道我们可以使用显式的swagger配置来启用。就像这样

代码语言:javascript
复制
    {
    "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旗子吗?

任何帮助都是非常感谢的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-27 17:51:58

现在,SAM中的ApiKeyRequiredAWS::Serverless::ApiAWS::Serverless::Function级别都得到了支持。

以下是AWS文档中的一个示例:

代码语言:javascript
复制
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

您还可以从以下资源了解此信息:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52936126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档