我正在开发一个基于 API Gateway/Lambda 的项目。请求流程如下:
- API Gateway 将请求传递给 Authorizer lambda
- Authorizer lambda 调用
sts.assumeRole()
并成功生成一个accessKeyId
和secretAccessKey
- 密钥/秘密通过授权上下文传递给请求处理程序 lambda
- 请求处理程序 lambda 使用给定
accessKeyId/secretAccessKey
来尝试访问 S3 存储桶中的项目
除最后一步外,该过程的每一步都在工作(通过控制台日志确认)。当我尝试使用生成的凭据时,我收到以下错误消息:
{
"message": "The AWS Access Key Id you provided does not exist in our records.",
"code": "InvalidAccessKeyId",
"region": null,
"time": "2019-07-19T22:05:05.817Z",
"requestId": "...",
"extendedRequestId": "...",
"statusCode": 403,
"retryable": false,
"retryDelay": 68.28400384749038
}
我知道这强烈暗示我不了解 STS 的某些内容,但我无法弄清楚是什么。(例如,当授权方 lambda 完成运行时,AWS 是否会取消分配生成的角色?)
为什么 AWS 会拒绝新生成的一对凭证并报告此错误消息?