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

Lambda中使用@aws-sdk/client-sts遇TypeError:parseRfc3339DateTimeWithOffset非函数

AWS Lambda中使用@aws-sdk/client-sts调用AssumeRoleCommand时出现TypeError: parseRfc3339DateTimeWithOffset is not a function

问题详情

在AWS Lambda中使用@aws-sdk/client-sts调用AssumeRoleCommand时,突然抛出TypeError异常,错误信息为:

TypeError: (0 , smithy_client_1.parseRfc3339DateTimeWithOffset) is not a function

已尝试使用3.266.0和3.224.0版本的@aws-sdk/client-sts,问题仍未解决。

相关代码

const {
  STSClient,
  AssumeRoleCommand,
} = require('@aws-sdk/client-sts')

const stsClient = new STSClient({
  region: process.env.REGION || 'eu-west-1',
})

const params = new AssumeRoleCommand({
  RoleArn: process.env.MARKETPLACE_RESOLVE_CUSTOMER_ROLE_ARN,
  RoleSessionName: `${
    process.env.AWS_LAMBDA_FUNCTION_NAME
  }-${new Date().getTime()}`,
})

const assumedRoleOutput = await stsClient.send(params)

完整报错堆栈

2023-02-08T08:07:18.684Z    1a7dd68d-da00-4b07-935c-2f6bc95f996f    ERROR   TypeError: (0 , smithy_client_1.parseRfc3339DateTimeWithOffset) is not a function
 at deserializeAws_queryCredentials (/opt/nodejs/node_modules/@aws-sdk/client-sts/dist-cjs/protocols/Aws_query.js:860:117)
 at deserializeAws_queryAssumeRoleResponse (/opt/nodejs/node_modules/@aws-sdk/client-sts/dist-cjs/protocols/Aws_query.js:756:32)
 at deserializeAws_queryAssumeRoleCommand (/opt/nodejs/node_modules/@aws-sdk/client-sts/dist-cjs/protocols/Aws_query.js:119:16)
 at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
 at async /opt/nodejs/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-serde/dist-cjs/deserializerMiddleware.js:7:24
 at async /opt/nodejs/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-signing/dist-cjs/middleware.js:14:20
 at async StandardRetryStrategy.retry (/opt/nodejs/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-retry/dist-cjs/StandardRetryStrategy.js:51:46)
 at async /opt/nodejs/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:5:22
 at async getMarketplaceResolveCustomerRoleCredentials (/var/task/utils/marketplaceUtils.js:27:29)
 at async Object.resolveMarketplaceCustomer (/var/task/utils/marketplaceUtils.js:50:5) {
'$metadata': { attempts: 1, totalRetryDelay: 0 }

解决方案

1. 统一@aws-sdk依赖版本

该错误大多由@aws-sdk/client-sts与依赖的@smithy/client等包版本不匹配导致。在package.json中统一所有@aws-sdk开头的依赖版本,例如:

{
  "dependencies": {
    "@aws-sdk/client-sts": "3.200.0",
    "@aws-sdk/middleware-retry": "3.200.0",
    "@aws-sdk/middleware-serde": "3.200.0"
    // 其他相关aws-sdk包也统一版本
  }
}

2. 清理依赖并重新安装

删除本地的node_modules文件夹和package-lock.json文件,然后执行:

npm install

这能避免缓存的旧版本依赖冲突。

3. 检查Lambda层(若使用)

如果你的Lambda函数使用了层来存放依赖,确保层中的@aws-sdk相关包版本与Lambda部署包内的版本完全一致,层的依赖可能会覆盖本地依赖导致版本不兼容。

4. 降级到稳定版本

若上述方法无效,尝试降级到3.200.0版本的@aws-sdk/client-sts,该版本的序列化逻辑未引入parseRfc3339DateTimeWithOffset函数,能规避此问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:35:30