You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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
    });
  });
});

重要注意事项

  1. 凭证安全:原代码中硬编码AWS访问密钥是严重的安全风险,会导致密钥泄露。建议通过以下方式配置凭证:
    • 本地开发时,使用~/.aws/credentials文件或环境变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY)
    • AWS服务(如EC2、Lambda)上运行时,为资源绑定IAM角色,自动获取权限凭证
  2. 参数校验:增加了keywordName的非空校验,避免无效请求进入后续逻辑
  3. 数据返回:明确提取所需的业务字段,确保返回结果符合接口设计需求
  4. 错误处理:细化了不同场景的错误响应,便于前端排查问题

内容的提问来源于stack exchange,提问作者Komati Joshna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:05:29