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

在AWS Amplify构建Next.js应用时打包secure connect压缩文件方案

如何在AWS Amplify部署的Next.js项目中内置Astra DB的secure-connect bundle文件

问题描述

我用cassandra-driver连接Datastax Astra DB,本地开发时指定secure-connect-{DB-Name}.zip文件路径能正常运行,代码示例如下:

const client = new Client({
  cloud: {
    secureConnectBundle: 'Address of the zipped file'
  },
  credentials: {
    username: 'This is client_id',
    password: 'This is client_secret',
  },
});

但部署到AWS Amplify时,这个zip文件没被打包进Next.js项目,触发了文件找不到的错误。想确认:能不能把这个文件留在Amplify的Next.js包内,不用上传到S3等外部存储就能访问?

解决方案

完全可以把secure-connect-{DB-Name}.zip留在Next.js项目包内,无需依赖外部存储,按以下步骤操作:

  • 放置文件到正确目录:把zip文件放到项目的public目录下(比如public/secure-connect-mydb.zip),Next.js默认会将public目录下的所有文件打包进生产构建产物,Amplify部署时会一并包含。
  • 使用绝对路径引用:在服务端代码中通过process.cwd()拼接绝对路径,避免相对路径在部署环境中解析错误,示例代码:
    import { Client } from 'cassandra-driver';
    import path from 'path';
    
    const client = new Client({
      cloud: {
        // 拼接项目根目录到public下的zip文件路径
        secureConnectBundle: path.join(process.cwd(), 'public/secure-connect-mydb.zip')
      },
      credentials: {
        // 建议把敏感信息存在Amplify环境变量中,不要硬编码
        username: process.env.ASTRA_CLIENT_ID,
        password: process.env.ASTRA_CLIENT_SECRET,
      },
    });
    
  • 检查构建排除规则:确认项目的.gitignore没有忽略secure-connect-*.zip文件,同时查看Amplify的amplify.yml构建配置,确保没有自定义规则排除public目录下的文件(默认配置会包含,无需额外修改)。
  • 本地预验证:先在本地执行npm run build,查看构建输出的.next目录,确认zip文件已被包含,再部署到Amplify,提前排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:35:22