使用AWS Application Cost Profiler时遇getaddrinfo ENOTFOUND错误,该如何解决?
解决Application Cost Profiler的
getaddrinfo ENOTFOUND错误 这个错误的核心原因是AWS Application Cost Profiler服务在你指定的ap-southeast-1区域未部署,导致SDK无法解析对应的服务端点地址。
解决方案步骤:
切换到服务支持的区域
AWS Application Cost Profiler仅在特定区域提供服务,当前支持的区域包括us-east-1、us-west-2、eu-west-1等。修改客户端初始化代码,指定一个支持的区域:const clientCP = new ApplicationCostProfilerClient({region: "us-east-1"});S3桶区域与服务区域可分离
即便你的S3桶在ap-southeast-1,也无需将Application Cost Profiler客户端切换到该区域。只要你的AWS凭证拥有该S3桶的s3:GetObject权限,服务就能跨区域读取桶内数据,保持sourceS3Location中的region为桶所在的ap-southeast-1即可。验证网络与权限配置
- 确认运行代码的环境能正常访问AWS服务端点,无防火墙、代理或VPC端点规则阻止请求。
- 检查AWS凭证是否具备
applicationcostprofiler:ImportApplicationUsage权限,以及对应S3桶的读取权限。
修正后的示例代码:
const { ApplicationCostProfilerClient, ImportApplicationUsageCommand } = require("@aws-sdk/client-applicationcostprofiler"); // 使用服务支持的区域初始化客户端 const clientCP = new ApplicationCostProfilerClient({region: "us-east-1"}); const paramsCP = { "sourceS3Location": { "bucket": env.bucketname, "key": env.key, "region": env.region // 保留S3桶所在的ap-southeast-1 } } const CommandCP = new ImportApplicationUsageCommand(paramsCP); const dataCP = await clientCP.send(CommandCP);
内容的提问来源于stack exchange,提问作者Sam Wuhr
相关产品推荐
相关产品推荐

