当Node.js应用程序在本地主机上运行时,如何与api网关AWS集成?

时间:2019-07-09 05:26:36

标签: node.js aws-api-gateway

应用程序可以在localhost上完美运行,我们可以直接在其上使用api网关吗?

4 个答案:

答案 0 :(得分:0)

是的,您可以创建一个lambda函数并将该lambda函数与AWS API网关链接。 之后,您将获得API的端点。

答案 1 :(得分:0)

是的,您可以从本地主机集成AWS服务。 AWS提供了用于集成AWS服务的npm模块。 aws-sdk npm模块允许您从varius平台访问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;

我希望它会有所帮助。快乐编码:)

答案 2 :(得分:0)

答案 3 :(得分:0)

API网关用于从外部访问AWS服务(顾名思义,通过API)。

这可以连接到Lambda函数或Dynamo DB表。您将在API网关中为这两项服务创建端点。

然后,API网关生成可以使用NPM模块(例如axios)访问的端点。

下面可以看到一个例子。

在API网关中创建您的API。

现在使用您选择的语言创建Lambda函数,然后单击触发器,如下所示:

enter image description here

现在,将lambda函数添加到先前创建的API网关中,并进行如下设置(注意,您可能必须首先部署API才能进入开发阶段(如图3所示):

enter image description here

现在导航到您之前创建的API网关,单击终结点上的lambda函数(您可能需要刷新)并使用以下设置启用CORS,如下所示:

enter image description here

现在,单击相同的操作选项卡,然后单击部署API。

您现在将拥有一个为您创建的端点以及一个API密钥。可以在lambda函数的底部看到此信息,如下所示。

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})