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

使用Node SDK调用ListFunctionsCommand返回空数组问题排查

AWS SSO跨区域场景下Node SDK调用Lambda ListFunctions返回空数组的问题

使用AWS SSO时,SSO区域(eu-west-2)与Lambda函数所在区域(us-east-1)不同,通过CLI可以正常列出目标区域的Lambda函数,但Node SDK执行相同操作时返回空数组。

配置文件

我的AWS配置文件(~/.aws/config)内容如下:

[profile my-profile]
sso_start_url = https://something.awsapps.com/start
sso_region = eu-west-2
sso_account_id = ************
sso_role_name = MyRoleName
region = us-east-1
output = json

CLI测试结果

执行以下命令可正常登录并获取us-east-1区域的所有Lambda函数:

aws sso login --profile my-profile
aws lambda list-functions --profile my-profile

Node SDK初始代码问题

使用Node SDK调用时,返回200响应但Functions数组为空:

import creds from "@aws-sdk/credential-providers";
import lambda from "@aws-sdk/client-lambda";

// ...

const credentials = await creds.fromSSO({ profile: 'my-profile' })();
const client = new lambda.LambdaClient({ credentials });
const fnsResult = await client.send(new lambda.ListFunctionsCommand({ }));

补充验证

  • Node SDK可以正常列出全局区域资源(如CloudFront分发)
  • 当SSO区域与目标区域相同时,Node SDK能正常列出Lambda函数,进一步验证问题由区域配置导致
  • 查阅过类似问题,均与边缘函数的MasterRegion属性相关,与当前场景无关

使用的包版本:

  • @aws-sdk/client-lambda: ^3.621.0
  • @aws-sdk/credential-providers: ^3.621.0

解决方案(编辑补充)

创建LambdaClient时显式指定目标区域后,可正常获取函数:

const client = new lambda.LambdaClient({ credentials, region: 'us-east-1' });
const fnsResult = await client.send(new lambda.ListFunctionsCommand({ }));

此方式有效,但说明配置文件中profile的region属性未被Node SDK读取,目前尚未找到直接从命名profile读取region的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:26:14