Когда приложение nodejs работает на локальном хосте, как интегрировать его с api gateway aws? - PullRequest
2 голосов
/ 09 июля 2019

Приложение отлично работает на локальном хосте, можем ли мы напрямую через него использовать API-шлюз?

Ответы [ 4 ]

0 голосов
/ 09 июля 2019

API Gateway используется для внешнего доступа к Сервисам AWS (через API, как следует из названия).

Это может быть связано с функцией Lambda или таблицей Dynamo DB.Вы должны создать конечные точки в API-шлюзе для обеих этих служб.

Затем API-шлюз генерирует конечную точку, к которой можно получить доступ с помощью модулей NPM, таких как axios.

Пример можно увидеть ниже.

Создайте свой API в API Gateway.

Теперь создайте лямбда-функцию на выбранном вами языке и нажмите триггеры, как показано ниже:

enter image description here

Теперь добавьте свою лямбда-функцию к вашему API-шлюзу, который вы создали ранее, со следующими настройками (обратите внимание, что вам, возможно, придется сначала развернуть свой API, чтобы получить этап разработки (это показано на рисунке 3):

enter image description here

Теперь перейдите к вашему API-шлюзу, который вы создали ранее, щелкните конечную точку вашей лямбда-функции (вам может потребоваться обновить) и включите CORS с помощьюследующие настройки, как показано здесь:

enter image description here

Теперь Перейдите на ту же вкладку действий и нажмите развернуть API.

Теперь у вас будетконечная точка, которая была создана дляили вы вместе с ключом API.Эту информацию можно увидеть в нижней части вашей лямбда-функции, как показано здесь.

enter image description here

И эту функцию можно вызывать в узле с помощью axios, иличто-то похожее на это:

const header = {
    "x-api-key": "API_KEY",
    "Accept": "application/json",
    "Content-Type": "application/json"
}

const body = {
    "exampleParam" : "exampleParam"
}

axios.post("URL_IN_LAMBDA_FUNCTION", body, {headers:header})
0 голосов
/ 09 июля 2019

Да, вы можете интегрировать свои службы AWS с вашего локального хоста.AWS предоставляет модули npm для интеграции сервисов AWS.Модуль aws-sdk npm позволяет вам получить доступ к сервису AWS, например S3, SES, SNS, AWS Lemda, AWS Alexa, отл. с различных платформ ( NodeJS, Java, php ).

aws.js

const aws = require('aws-sdk');

const config = {
  region: process.env.AwsRegion,
  signatureVersion: 'v4',
  accessKeyId: process.env.AwsAccessKey,
  secretAccessKey: process.env.AwsSecretAccessKey,
};
aws.config = config;

const awsUtils = {};

awsUtils.putObject = (file, key, encoding) => {
  return new Promise((resolve, reject) => {
    const params = {
      Body: file,
      Bucket: process.env.AwsS3Bucket,
      Key: key,
      ACL: 'public-read',
      ContentType: file.type || file.mime,
      ContentDisposition: 'inline',
      ContentEncoding: encoding,
    };

    s3.putObject(params, (err, data) => {
      if (err) {
        return reject(err);
      } else {
        console.log(data);
        return resolve(key);
      }
    });

  });
};

module.exports = awsUtils;

Надеюсь, это поможет.Удачного кодирования:)

0 голосов
/ 09 июля 2019
0 голосов
/ 09 июля 2019

Да, вы можете создать одну лямбда-функцию и связать эту лямбда-функцию со шлюзом AWS API. после этого вы получите конечные точки для своих API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...