rah*_*rma 12 amazon-sns aws-sdk aws-sdk-nodejs
我在调用 lambda 时收到此错误。
"errorType": "Runtime.ImportModuleError", "errorMessage": "错误: 找不到模块 '@aws-sdk/client-sns'\n需要堆栈:\n- /var/task/handler.js\n- /var /runtime/UserFunction.js\n- /var/runtime/index.js", "trace": [ "Runtime.ImportModuleError: 错误: 找不到模块 '@aws-sdk/client-sns'",
import * as AWS from '@aws-sdk/client-sns';
import { JamaSnsMessage } from './models/jama';
import { region, snsTopicArn } from './utils/constants';
import { log } from './utils/logger';
const client = new AWS.SNS({ region });
/**
* Publishes given SNS formatted Jama items to SNS topic
*
* @param {JamaSnsMessage[]} items
*/
export const publishItems = async (items: JamaSnsMessage[]): Promise<void> => {
if (!items || items.length <= 0) {
return;
}
for (const item of items) {
const params = {
/* eslint-disable */
MessageStructure: 'json',
Message: JSON.stringify(item),
TopicArn: snsTopicArn,
/* eslint-enable */
};
log.info(`Sending jama item: ${JSON.stringify(item)} to sns`);
await send(params);
}
};
export const send = async (params: AWS.PublishInput): Promise<void> => {
try {
const data = await client.send(new AWS.PublishCommand(params));
log.info(`Item: ${JSON.stringify(params)} was published with id: ${data.MessageId}`);
} catch (error) {
log.error(`Error while publishing message ${JSON.stringify(params)}. Cause: ${error}`);
}
};Run Code Online (Sandbox Code Playgroud)
如果您使用的是 SDK V2,请使用:
var AWS = require('aws-sdk');
AWS.config.update({region: 'REGION'});
// Create promise and SNS service object
const SNS = new AWS.SNS({apiVersion: '2010-03-31'})
Run Code Online (Sandbox Code Playgroud)
如果由于大小原因您只想在 Lambda 函数中使用 SNS 模块,我建议您使用适用于 JavaScript 的 AWS SKD V3。默认情况下,Lambda 仍然仅与 SDK 的 V2 兼容,但有一个解决方法。以下是仅使用 AWS SDK for JavaScrpt - 版本 3 的模块创建函数的示例。
| 归档时间: |
|
| 查看次数: |
41832 次 |
| 最近记录: |