ааааааа-бааааNodeJS.4. 아마존 네트워크 서비스(AWS).

14145 단어 telegramawsnode
У нашего бота есть один недостаток: Как только мы прервём выполнение скрипта, то бот перестанет работать. 노드JS.В этой заметке будет описана работа с AWS . Я предполагаю, что Вы уже зарегистрировались на этом ресурсе, у Вас все секретные ключи. Если нет, то вот здесь описано, как его получить. У меня есть безплатный ключ скором на один год, а дальше посмотрим, как сложится.
После получения ключа установите пакет
npm install -g serverless
Запишите этот ключ:
serverless config credentials --provider provider --key key --secret secret
e-메일 HTTP 웹훅전보 API.Чтобы создать лямбда-функцию, просто создайте новую папку на компьютере, перейдите внутрь нее, откройте окно терминала и введите следующее:
serverless create --template aws-nodejs
노드js.처리자: 처리자.서버가 없습니다.yml.한들러.js- 서버가 없습니다.yml-фааааааааааааааааааааааааааааа.Больше прочитать о конфигурации - ссылка .
Вот как я предлагаю настроить будущий сервер:
service: short-bot

useDotenv: true

plugins:
  - serverless-dotenv-plugin

frameworkVersion: "2"

provider:
  name: aws
  runtime: nodejs12.x

  region: eu-west-1

  apiGateway:
    shouldStartNameWithService: true
  lambdaHashingVersion: "20201221"

functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: webhook
          method: post
          cors: true

В каталоге этого проекта сделайте команды:
npm init -y
npm i --save dotenv node-fetch telegraf
npm i --save-dev serverless serverless-dotenv-plugin
Мы сейчас сделали очень многое: сделали шаблон проекта, который можно будет опубликовать на амазоне. 서버 없음, 서버 없음, 서버 없음dotenv 플러그인, 서버 없음dotenv 플러그인.환경
з.js:
"use strict";

const { bot } = require("./bot.js");
const { getResponseHeaders } = require("./lib/common");

exports.getResponseHeaders = () => {
  return {
    "Access-Control-Allow-Origin": "*",
  };
};

/**
 * Вебхук для бота
 */
module.exports.hello = async (event) => {
  try {
    let body =
      event.body[0] === "{"
        ? JSON.parse(event.body)
        : JSON.parse(Buffer.from(event.body, "base64"));
    await bot.handleUpdate(body);
    return { statusCode: 200, body: "" };
  } catch (err) {
    return {
      statusCode: err.statusCode ? err.statusCode : 500,
      headers: getResponseHeaders(),
      body: JSON.stringify({
        error: err.name ? err.name : "Exception",
        message: err.message ? err.message : "Unknown error",
      }),
    };
  }
};

/**
 * Устновка веб-хука.
 * Если вызвать этот метод, то хук вступит в силу
 */
module.exports.setWebhook = async (event) => {
  try {
    const url = `https://${event.headers.Host}/${event.requestContext.stage}/webhook`;
    await bot.telegram.setWebhook(url);
    return {
      statusCode: 200,
      headers: getResponseHeaders(),
      body: JSON.stringify({ url }),
    };
  } catch (err) {
    return {
      statusCode: err.statusCode ? err.statusCode : 500,
      headers: getResponseHeaders(),
      body: JSON.stringify({
        error: err.name ? err.name : "Exception",
        message: err.message ? err.message : "Unknown error",
      }),
    };
  }
};
Фзззззззззззз.
안녕하세요, 서버가 없습니다.ymlэббббббббббббббббб.
Фццццццццццззззбб-абб.Как вы поняли, ключевые строки в нём это
1 const url = `https://${event.headers.Host}/${event.requestContext.stage}/webhook`;
2 bot.telegram.setWebhook(url);
аааааааааааааааа,ааааааAPIааа.
뿌뿌뿌뿌 로봇.js.Поскольку наш бот будет теперь запущен не на локальной машине, нужно закомментировать строку bot.launch(); и ниже написать:
module.exports = {
  bot,
};
로봇.jsааааааааааааааааааа107.
аааааааааааааа107.jsonббббМ:
{
  "deploy": "sls deploy",
  "logs": "sls logs --function hello -t"
}
npm run local-아마존deploy-아마존.

Деплой


미국 용접학회logs.аааааааааааааааааааб.В итоге вы получите постоянный эндпоинт, что-то типа: https://sg2bxp8khj.execute-api.us-east-2.amazonaws.com/dev/ , его нужно установить в качестве вебхука для телеграма.
직위
npm run deploy우체부.Если всё прошло без ошибок, то Ваш бот теперь обосновался на сервере амазон, поздравляю!

Ссылки


Вот какие материалы мне помогли в развёртывании на амазоне:
  • https://amorgunov.com/posts/2019-03-26-create-telegram-echo-bot-with-serverless/
  • https://muhannad0.github.io/post/serverless-telegram-bot-on-aws/
  • https://iamondemand.com/blog/building-your-first-serverless-telegram-bot/
  • 좋은 웹페이지 즐겨찾기