【问题标题】:How to upload a file to S3 bucket using "BatchPutDocument" service?如何使用“BatchPutDocument”服务将文件上传到 S3 存储桶?
【发布时间】:2020-04-07 13:01:41
【问题描述】:

我们正在运行一个带有搜索栏的 javascript 应用程序。内容可从 AWS 的 S3 存储桶中搜索。 JavaScript 应用代码:

<html>

<head>
    <script src="aws-sdk-2.604.0.js"></script>
    <script>
        var kendra = new AWS.Kendra({
            apiVersion: '2019-02-03',
           // region: '*****',
            accessKeyId: '*********',
            secretAccessKey: '*******************'
        });

        function getResults() {

            var searchText = document.getElementById("searchBox").value;
            var params = {
                IndexId: '**************************',
                /* required */
                QueryText: searchText,
                PageNumber: '1',
                PageSize: '20'
            };
            kendra.query(params, function(err, data) {
                if (err) console.log(err, err.stack); // an error occurred
                else {
                    document.getElementById("results").innerText = data.ResultItems[0].DocumentTitle.Text;

                    console.log(data); // successful response
                }
            });

        }
    </script>
</head>

<body>
    <h1>This is Kendra application</h1>

    <input type="text" id="searchBox" />
    <button onclick="getResults()">Search</button>
    <div>
        <b>search results</b>
        <div id="results"></div>
    </div>
</body>

</html>

上面的 javascript 应用程序包括一个搜索栏,它提供来自 S3 存储桶的数据。现在我们需要使用下面给出的“BatchPutDocument”服务代码上传一个新文件。上传的文档(html 或 pdf)应可在 javascript 应用程序搜索框中搜索。

注意:我们不应该直接通过 AWS s3 存储桶上传 s3 存储桶中的文件。 下面给出的代码是否有帮助或任何可用的替代代码。

var params = {
  Documents: [ /* required */
    {
      Id: 'STRING_VALUE', /* required */
      AccessControlList: [
        {
          Access: ALLOW | DENY, /* required */
          Name: 'STRING_VALUE', /* required */
          Type: USER | GROUP /* required */
        },
        /* more items */
      ],
      Attributes: [
        {
          Key: 'STRING_VALUE', /* required */
          Value: { /* required */
            DateValue: new Date || 'Wed Dec 31 1969 16:00:00 GMT-0800 (PST)' || 123456789,
            LongValue: 'NUMBER_VALUE',
            StringListValue: [
              'STRING_VALUE',
              /* more items */
            ],
            StringValue: 'STRING_VALUE'
          }
        },
        /* more items */
      ],
      Blob: Buffer.from('...') || 'STRING_VALUE' /* Strings will be Base-64 encoded on your behalf */,
      ContentType: PDF | HTML | MS_WORD | PLAIN_TEXT | PPT,
      S3Path: {
        Bucket: 'STRING_VALUE', /* required */
        Key: 'STRING_VALUE' /* required */
      },
      Title: 'STRING_VALUE'
    },
    /* more items */
  ],
  IndexId: 'STRING_VALUE', /* required */
  RoleArn: 'STRING_VALUE'
};
kendra.batchPutDocument(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

【问题讨论】:

    标签: javascript amazon-web-services amazon-s3 amazon-kendra


    【解决方案1】:

    AWS Kendra 允许您使用它提供的可用 Connectors 或使用 BatchPutDocument API 来索引 Kendra 索引中的文档。使用 BatchPutDocument API 时,您可以将文档 inline 传递给 Kendra 或您想要索引的 pass an S3 URL of your document。成功索引文档后,您将能够使用 Kendra 的 Query API 执行 search。我看到您已经有一些 Javascript 代码来调用 Kendra 的 Query API,但是,如果您对构建 React 应用程序感兴趣,也可以参考Kendra's provided sample React application

    【讨论】:

      猜你喜欢
      • 2019-09-13
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      相关资源
      最近更新 更多