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

求适用于Supabase边缘函数的AWS SDK v3 ESM导入映射URL

在Supabase边缘函数中配置AWS SDK v3的导入映射(用于SES邮件发送)

你的原有配置无效,核心原因是AWS SDK v3采用模块化拆分设计,不存在统一的aws-sdk入口包,必须单独引入所需的具体服务模块(比如SES相关的客户端、命令类)。以下是正确的配置方案:

正确的import_map.json配置

{
  "imports": {
    "@aws-sdk/client-ses": "https://esm.sh/@aws-sdk/client-ses@3.422.0?target=deno",
    "@aws-sdk/util-utf8": "https://esm.sh/@aws-sdk/util-utf8@3.422.0?target=deno",
    "@aws-sdk/signature-v4": "https://esm.sh/@aws-sdk/signature-v4@3.422.0?target=deno"
  }
}

关键配置说明

  • 必须指定具体模块:比如@aws-sdk/client-ses是专门处理SES邮件发送的客户端模块,不能用旧版SDK的aws-sdk包名
  • 强制Deno兼容:添加target=deno参数,确保esm.sh输出的代码适配Supabase边缘函数的Deno运行环境
  • 指定固定版本:建议使用具体版本号(如@3.422.0),避免最新版本可能出现的兼容性问题
  • 依赖自动处理:esm.sh会自动解析模块依赖,但如果遇到加载失败,可像示例中一样显式声明核心依赖(如签名模块)

边缘函数中使用示例

import { SESClient, SendEmailCommand } from "@aws-sdk/client-ses";

export default async function handler(req: Request) {
  // 初始化SES客户端
  const sesClient = new SESClient({
    region: "us-east-1", // 替换为你的AWS区域
    credentials: {
      accessKeyId: Deno.env.get("AWS_ACCESS_KEY_ID")!,
      secretAccessKey: Deno.env.get("AWS_SECRET_ACCESS_KEY")!
    }
  });

  // 构造发送邮件命令
  const sendCommand = new SendEmailCommand({
    Source: "your-sender@example.com", // 替换为已验证的发件邮箱
    Destination: { ToAddresses: ["recipient@example.com"] }, // 收件人邮箱
    Message: {
      Subject: { Data: "Supabase边缘函数发送的测试邮件" },
      Body: { Text: { Data: "这是通过AWS SES发送的测试内容" } }
    }
  });

  try {
    const result = await sesClient.send(sendCommand);
    return new Response(JSON.stringify({
      success: true,
      messageId: result.MessageId
    }), { status: 200 });
  } catch (err) {
    return new Response(JSON.stringify({
      success: false,
      error: err.message
    }), { status: 500 });
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:35:09