基于AWS构建关键词查询API,获取广告相关数据
基于AWS构建关键词查询API的Node.js实现
需求:实现一个POST接口/keyword,通过请求体传入keywordName(示例值:"i phone"),返回对应关键词的展示量(impression)、点击量(click)、ACoS、CPC等广告数据。
优化后的代码实现
const AWS = require('aws-sdk'); // 安全提示:禁止硬编码AWS密钥,优先使用环境变量或IAM角色 AWS.config.update({ region: 'us-east-1', }); const pinpoint = new AWS.Pinpoint(); // 确保app是已初始化的Express应用实例 app.post('/keyword', (req, res) => { const keywordName = req.body.keywordName; // 参数校验:避免空请求 if (!keywordName) { return res.status(400).json({ error: '必填参数keywordName不能为空' }); } const params = { Filters: [ { Name: 'Keyword', Value: keywordName, }, ], }; pinpoint.listKeywordFilters(params, (err, data) => { if (err) { console.error('关键词数据查询失败:', err); return res.status(500).json({ error: '服务器内部错误,数据查询失败' }); } if (!data.KeywordFilters || data.KeywordFilters.length === 0) { return res.status(404).json({ error: '未找到该关键词的相关数据' }); } // 提取并返回目标字段 const targetData = data.KeywordFilters[0]; res.json({ keywordName, impressions: targetData.Impressions, clicks: targetData.Clicks, ACoS: targetData.ACoS, CPC: targetData.CPC }); }); });
重要注意事项
- 凭证安全:原代码中硬编码AWS访问密钥是严重的安全风险,会导致密钥泄露。建议通过以下方式配置凭证:
- 本地开发时,使用
~/.aws/credentials文件或环境变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY) - AWS服务(如EC2、Lambda)上运行时,为资源绑定IAM角色,自动获取权限凭证
- 本地开发时,使用
- 参数校验:增加了
keywordName的非空校验,避免无效请求进入后续逻辑 - 数据返回:明确提取所需的业务字段,确保返回结果符合接口设计需求
- 错误处理:细化了不同场景的错误响应,便于前端排查问题
内容的提问来源于stack exchange,提问作者Komati Joshna
相关产品推荐
相关产品推荐

