首页 > 解决方案 > 部署应用程序时如何在 Amazon ElasticSearch 中设置对 queryESFunction 的授权?

问题描述

我正在使用此博客作为参考构建可搜索的企业文档存储库:https ://aws.amazon.com/blogs/compute/creating-a-searchable-enterprise-document-repository/

创建 Amazon ElasticSearch 域是成功的。我也创建了一个 S3 存储桶。我正在使用此存储库(如博客中所述):https ://github.com/aws-samples/s3-to-lambda-patterns/tree/master/docrepository 但是,部署应用程序不起作用。

我用正确的存储桶名称和 ESdomain 更新了“samconfig.toml”文件。

命令“sam deploy”导致失败。错误:queryESFunction 可能没有定义授权。 在此处输入图像描述 我应该进行哪些更改才能完成这项工作?

我认为我们可能必须在“template.yaml”文件中设置一些授权,但我应该在那里设置什么属性?

标签: amazon-web-serviceselasticsearchamazon-s3aws-lambda

解决方案


该错误说应用程序配置了一个API网关,API未经授权。

以下是一些选项(未经测试):

  1. 按照此处所述定义 Lambda 请求授权方。

  2. 尝试在您的 template.yaml(api 资源)中禁用身份验证:

    Resources:
      MyApi:
        Type: AWS::Serverless::Api
        Properties:
          StageName: Dev
          Auth:
            Authorizer: 'NONE'
    
  3. 运行命令sam deploy --guided。按照屏幕上的提示操作,直到您看到 queryESFunction 可能没有授权定义提示。

对于提示 HelloWorldFunction 可能没有定义授权,可以吗?[y/N] AWS SAM 通知您,示例应用程序在未经授权的情况下配置了 API Gateway API。当您部署示例应用程序时,AWS SAM 会创建一个公开可用的 URL。

您可以通过对提示回答“Y”来确认此通知。有关配置授权的信息,请参阅控制对 API Gateway API 的访问。

将您的应用程序部署到 AWS 云


推荐阅读