AWS Lambda 无法识别来自 js-sdk 的 sagemaker 服务的功能
Functions of sagemaker service from js-sdk not recognize by AWS Lambda
我正在编写一个 lambda(在 node.js 6.10 中)来更新端点 SageMaker。为此,我必须创建一个新的 HyperParamterTuningJob(然后描述它)。
我成功地从 sdk 调用了服务 SageMaker 的所有功能(如 listModels、createTrainingJob 等)(https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SageMaker.html),但其中一些除外。
所有与HyperParameterTuningJob相关的函数
(createHyperParameterTuningJob, describeHyperParameterTuningJob, listHyperParameterTuningJobs and stopHyperParameterTuningJob)
lambda 在 sdk 中是未知的。
我已将策略 'AmazonSageMakerFullAccess' 附加到使用的 IAM 角色(允许所有这些功能)。所以错误不可能来自授权问题。
我已经创建了一个名为 'myTuningJob' 的 HyperParameterTuningJob(通过 AWS 的接口)。
每次使用函数 describeHyperParamterTuningJob 时都会出错。
这是我的 lambda 代码:
const AWS = require('aws-sdk');
const sagemaker = new AWS.SageMaker({region: 'eu-west-1', apiVersion: '2017-07-24'});
var role = 'arn:aws:iam::xxxxxxxxxxxx:role/service-role/AmazonSageMaker-ExecutionRole-xxxxxxxxxxxxxxx';
exports.handler = (event, context, callback) => {
var params = {
HyperParameterTuningJobName: 'myTuningJob'
};
sagemaker.describeHyperParameterTuningJob(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
};
当我尝试在 AWS lambda 中测试此代码时,它 returns 在控制台中得到以下结果:
Function Logs:
START RequestId: 6e79aaa4-9a18-11e8-8dcd-d58423b413c1 Version: $LATEST
2018-08-07T08:03:56.336Z 6e79aaa4-9a18-11e8-8dcd-d58423b413c1 TypeError: sagemaker.describeHyperParameterTuningJob is not a function
at exports.handler (/var/task/index.js:10:15)
END RequestId: 6e79aaa4-9a18-11e8-8dcd-d58423b413c1
REPORT RequestId: 6e79aaa4-9a18-11e8-8dcd-d58423b413c1 Duration: 50.00 ms
Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 32 MB
RequestId: 6e79aaa4-9a18-11e8-8dcd-d58423b413c1 Process exited before completing request
当我从 sdk 调用 SageMaker 服务的所有其他功能时,它运行正确,没有任何错误。
我在文档中没有找到任何关于为什么这些与 HyperParameterTuningJob 相关的函数在 sdk 中不被识别为函数的解释。
有谁知道为什么它不起作用?或者调用这些函数的任何解决方案?
在AWS Lambda中,只有sable版本的sdk可用。
SageMaker服务的sdk还不稳定,所以HyperParameterTuningJob相关的函数没有在AWS Lambda包含的sdk版本中。
要使用这些功能,您需要在机器本地安装最新版本的 sdk(使用 npm install aws-sdk)。
然后压缩 node_modules 文件夹和您的脚本(称为 index.js),然后将此 zip 文件夹上传到 AWS lambda。
我正在编写一个 lambda(在 node.js 6.10 中)来更新端点 SageMaker。为此,我必须创建一个新的 HyperParamterTuningJob(然后描述它)。 我成功地从 sdk 调用了服务 SageMaker 的所有功能(如 listModels、createTrainingJob 等)(https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SageMaker.html),但其中一些除外。
所有与HyperParameterTuningJob相关的函数 (createHyperParameterTuningJob, describeHyperParameterTuningJob, listHyperParameterTuningJobs and stopHyperParameterTuningJob) lambda 在 sdk 中是未知的。
我已将策略 'AmazonSageMakerFullAccess' 附加到使用的 IAM 角色(允许所有这些功能)。所以错误不可能来自授权问题。
我已经创建了一个名为 'myTuningJob' 的 HyperParameterTuningJob(通过 AWS 的接口)。 每次使用函数 describeHyperParamterTuningJob 时都会出错。 这是我的 lambda 代码:
const AWS = require('aws-sdk');
const sagemaker = new AWS.SageMaker({region: 'eu-west-1', apiVersion: '2017-07-24'});
var role = 'arn:aws:iam::xxxxxxxxxxxx:role/service-role/AmazonSageMaker-ExecutionRole-xxxxxxxxxxxxxxx';
exports.handler = (event, context, callback) => {
var params = {
HyperParameterTuningJobName: 'myTuningJob'
};
sagemaker.describeHyperParameterTuningJob(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
};
当我尝试在 AWS lambda 中测试此代码时,它 returns 在控制台中得到以下结果:
Function Logs:
START RequestId: 6e79aaa4-9a18-11e8-8dcd-d58423b413c1 Version: $LATEST
2018-08-07T08:03:56.336Z 6e79aaa4-9a18-11e8-8dcd-d58423b413c1 TypeError: sagemaker.describeHyperParameterTuningJob is not a function
at exports.handler (/var/task/index.js:10:15)
END RequestId: 6e79aaa4-9a18-11e8-8dcd-d58423b413c1
REPORT RequestId: 6e79aaa4-9a18-11e8-8dcd-d58423b413c1 Duration: 50.00 ms
Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 32 MB
RequestId: 6e79aaa4-9a18-11e8-8dcd-d58423b413c1 Process exited before completing request
当我从 sdk 调用 SageMaker 服务的所有其他功能时,它运行正确,没有任何错误。
我在文档中没有找到任何关于为什么这些与 HyperParameterTuningJob 相关的函数在 sdk 中不被识别为函数的解释。
有谁知道为什么它不起作用?或者调用这些函数的任何解决方案?
在AWS Lambda中,只有sable版本的sdk可用。 SageMaker服务的sdk还不稳定,所以HyperParameterTuningJob相关的函数没有在AWS Lambda包含的sdk版本中。
要使用这些功能,您需要在机器本地安装最新版本的 sdk(使用 npm install aws-sdk)。 然后压缩 node_modules 文件夹和您的脚本(称为 index.js),然后将此 zip 文件夹上传到 AWS lambda。