使用Amplify CI/CD更新AppSync API时因API_KEY过期报错密钥未找到
解决方案
根因说明
报错核心是CloudFormation栈中记录的旧AppSync API Key ID(da2-rtqcdxh23bdrneqr746znw4e7i)已失效不存在,你手动更新密钥过期时间的操作没有同步到CloudFormation栈和Amplify项目配置,CI/CD触发资源更新时尝试修改不存在的密钥资源,触发404报错后触发栈回滚。
具体操作步骤(无需升级Amplify CLI,也无需执行全量手动修复)
- 第一步:获取当前有效API Key ID
登录AWS控制台进入AppSync服务页,找到对应项目的API,进入「设置」-「API 密钥」栏目,复制当前在用的有效API Key的ID(da2-开头的字符串)。 - 第二步:修改项目API配置参数
打开项目路径下amplify/backend/api/<你的API名称>/parameters.json文件,新增/修改以下配置项:
若文件中存在{ "ApiKeyId": "<替换为你刚才复制的新API Key ID>", "ApiKeyExpirationEpoch": <替换为你需要的过期时间戳,精确到秒,比如设置为2030年的对应时间戳可长期无需更新> }CreateAPIKey参数,保持其值为1即可。 - 第三步:更新CI/CD构建配置
进入Amplify控制台的「构建设置」-「构建规范」编辑页,在构建的preBuild阶段前新增两条命令:# 强制拉取当前云端环境的配置,避免本地与云端配置不一致 amplify env pull --restore # 禁用Amplify CLI的API Key过期自动校验逻辑 export AMPLIFY_DISABLE_API_KEY_EXPIRATION_CHECK=1 - 第四步:同步配置到云端
用有对应AWS账号权限的设备本地执行一次amplify push,待推送完成后CloudFormation栈的参数会同步为新的API Key配置,后续CI/CD流水线即可正常运行。
无本地操作权限的备选方案
如果你无法本地执行amplify push,可直接操作CloudFormation控制台:
- 找到对应项目的API嵌套栈,名称格式为
amplify-<项目名>-<环境名>-api<API名>-<随机串> - 直接更新栈参数,将
ApiKeyId改为新的有效API Key ID,ApiKeyExpirationEpoch改为对应过期时间戳,更新完成后重新触发CI/CD即可。
内容的提问来源于stack exchange,提问作者Muhammad Waqas Dilawar
相关产品推荐
相关产品推荐

