使用GraphQL应用执行查询遇CredentialsError问题求助
解决Amplify GraphiQL查询时的CredentialsError问题
错误原因
这个错误源于serverless-plugin-offline-dynamodb-stream插件在连接DynamoDB流时,无法找到有效的AWS凭证配置。即便Amplify本地初始化时生成了临时凭证,该插件也可能未正确读取,或是需要额外环境变量来加载AWS配置文件。
解决方案
1. 设置AWS_SDK_LOAD_CONFIG环境变量
根据错误提示,先配置这个环境变量,让AWS SDK加载本地的AWS配置文件:
Windows(CMD):
set AWS_SDK_LOAD_CONFIG=1 npm run startWindows(PowerShell):
$env:AWS_SDK_LOAD_CONFIG=1 npm run startmacOS/Linux:
AWS_SDK_LOAD_CONFIG=1 npm run start
如果不想每次启动都手动设置,可将该环境变量添加到项目的.env文件中(没有则直接创建):
AWS_SDK_LOAD_CONFIG=1
2. 验证本地AWS凭证配置
确认本地AWS凭证配置无误:
- 检查
~/.aws/credentials(macOS/Linux)或C:\Users\username\.aws\credentials(Windows)文件是否存在,且包含有效凭证信息:[default] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_KEY - 若是Amplify初始化的项目,运行
amplify configure重新配置本地凭证,确保Amplify能正确获取AWS权限。
3. 调整serverless插件配置
在serverless.yml中检查或添加serverless-plugin-offline-dynamodb-stream的配置,指定本地DynamoDB的端点(使用本地DynamoDB时):
plugins: - serverless-plugin-offline-dynamodb-stream custom: dynamodbStream: endpoint: http://localhost:8000 region: us-east-1 # 替换为你实际使用的区域 accessKeyId: fakeMyKeyId # 本地测试用虚拟凭证,无需真实密钥 secretAccessKey: fakeSecretAccessKey
本地测试时使用AWS提供的虚拟凭证即可,不需要真实的AWS密钥。
4. 重置依赖解决冲突
有时依赖冲突也会引发这类问题,可尝试删除node_modules和锁文件后重新安装:
# macOS/Linux rm -rf node_modules package-lock.json npm install
:: Windows rd /s /q node_modules del package-lock.json npm install
内容的提问来源于stack exchange,提问作者Onur
相关产品推荐
相关产品推荐

