0

我有一个 lambda 函数,我想修改一个 spotFeel 请求的容量。每当我在 aws 中运行该函数时,它似乎什么也没做,也没有发生错误。

import dotenv from 'dotenv';
import AWS from 'aws-sdk';

dotenv.config();

AWS.config.update({ region: process.env.AWS_WORK_REGION });
AWS.config.apiVersions = { ec2: '2016-11-15' };

exports.handler = async (event, context) => {
 const ec2 = new AWS.EC2();

  try {
    const terminationParams = {
      SpotFleetRequestId: '<SpotFleetRequestId>',
      TargetCapacity: 1,
    };

    console.log(terminationParams);

    ec2.modifySpotFleetRequest(terminationParams, function (err, data) {
      console.log('here');
      if (err) {
        console.log(err);
      } else {
        console.log(data);
      }
    });
  } catch (err) {
    throw new Error('Error', JSON.stringify(err));
  }
};

modifySpotFleetRequest 中的 console.logs 似乎不起作用。

如果我将代码移动到一个文件中,我可以在本地运行一切似乎都按预期工作。

从我所见,我的 lambda 角色具有正确的权限。

有任何想法吗?

4

1 回答 1

0

Ersoy 的建议奏效了:

import dotenv from 'dotenv';
import AWS from 'aws-sdk';

dotenv.config();

AWS.config.update({ region: process.env.AWS_WORK_REGION });
AWS.config.apiVersions = { ec2: '2016-11-15' };

exports.handler = async (event, context) => {
 const ec2 = new AWS.EC2();

  try {
    const terminationParams = {
      SpotFleetRequestId: '<SpotFleetRequestId>',
      TargetCapacity: 1,
    };

    console.log(terminationParams);

    await ec2.modifySpotFleetRequest(terminationParams, function (err, data) {
      console.log('here');
      if (err) {
        console.log(err);
      } else {
        console.log(data);
      }
    }).promise();
  } catch (err) {
    throw new Error('Error', JSON.stringify(err));
  }
};
于 2020-05-13T08:14:26.793 回答