使用AWS Node.js SDK创建EKS Node Group时报CreateNodegroup非函数如何解决
AWS Node.js SDK创建EKS节点组报错解决
错误直接原因:方法名大小写不匹配
你当前使用的是AWS SDK for JavaScript v2版本,该版本所有客户端方法统一使用首字母小写的小驼峰命名,你写的CreateNodegroup首字母大写不符合SDK命名规范,正确的方法名是createNodegroup。
额外需要修正的参数问题
修改方法名后,你当前的传参仍缺少节点组创建的必填字段,还需要补充配置:
- 集群名称参数名错误:你传入的
name字段不符合SDK参数定义,正确的集群名称参数名为clusterName - 缺少必填的
nodeRole参数:需要传入EKS工作节点使用的IAM角色ARN,该角色需要提前配置AmazonEKSWorkerNodePolicy、AmazonEC2ContainerRegistryReadOnly等必要权限策略 - 缺少必填的
subnets参数:需要传入节点组部署使用的VPC子网ID数组,至少包含2个和EKS集群关联的可用区子网
修正后可运行的参考代码
const AWS = require('aws-sdk'); AWS.config.update({region: 'us-west-2'}); const eks = new AWS.EKS(); // 替换以下参数中的占位内容为你账号下的实际资源信息 eks.createNodegroup({ clusterName: 'openstudio-server', nodegroupName: 'openstudio-node', instanceTypes: ["t2.xlarge"], scalingConfig: { desiredSize: 3, maxSize: 10, minSize: 3 }, // 补充必填参数 nodeRole: 'arn:aws:iam::你的AWS账号ID:role/你的EKS节点角色名', subnets: ['子网1ID', '子网2ID'], // 可选常用参数按需添加 // amiType: 'AL2_x86_64', // diskSize: 50 }, (err, data) => { if (err) { console.log('节点组创建失败', err); return; } console.log('节点组创建成功', data); });
其他优化建议
- 你代码中重复调用了两次
AWS.config.update({region: 'us-west-2'}),属于冗余配置,可以删除其中一次 - 异步场景下可以搭配
.promise()和async/await使用,代码逻辑更简洁 - 调用接口前请确认当前使用的AWS凭证有
eks:CreateNodegroup及相关IAM、EC2资源的操作权限
内容的提问来源于stack exchange,提问作者Anton James
相关产品推荐
相关产品推荐

