aws-genai-llm-chatbot

Форк
0
1
import * as crypto from "@aws-crypto/sha256-js";
2
import { defaultProvider } from "@aws-sdk/credential-provider-node";
3
import { SignatureV4 } from "@aws-sdk/signature-v4";
4
import { HttpRequest } from "@aws-sdk/protocol-http";
5

6
const { Sha256 } = crypto;
7
const AWS_REGION = process.env.AWS_REGION || "eu-west-1";
8

9
const endpoint = new URL(process.env.GRAPHQL_ENDPOINT ?? "");
10

11
export const graphQlQuery = async (query: string) => {
12
  const signer = new SignatureV4({
13
    credentials: defaultProvider(),
14
    region: AWS_REGION,
15
    service: "appsync",
16
    sha256: Sha256,
17
  });
18

19
  const requestToBeSigned = new HttpRequest({
20
    method: "POST",
21
    headers: {
22
      "Content-Type": "application/json",
23
      host: endpoint.host,
24
    },
25
    hostname: endpoint.host,
26
    body: JSON.stringify({ query }),
27
    path: endpoint.pathname,
28
  });
29

30
  const signed = await signer.sign(requestToBeSigned);
31
  const request = new Request(endpoint, signed);
32

33
  let body;
34

35
  try {
36
    const response = await fetch(request);
37
    body = await response.json();
38
  } catch (error) {
39
    throw error;
40
  }
41
  return body;
42
};
43

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.