SageMaker NodeJS 的 SDK 未锁定 API 版本
SageMaker NodeJS's SDK is not locking the API Version
我是 运行 AWS Lambda 中动态创建 SageMaker 模型的一些代码。
我像这样锁定 Sagemaker 的 API 版本:
const sagemaker = new AWS.SageMaker({apiVersion: '2017-07-24'});
下面是创建模型的代码:
await sagemaker.createModel({
ExecutionRoleArn: 'xxxxxx',
ModelName: sageMakerConfigId,
Containers: [{
Image: ecrUrl
}]
}).promise()
此代码在 2.418.0
上的 aws-sdk
本地运行良好。
但是,当此代码部署到 Lambda 时,由于创建模型时出现一些验证错误,它无法正常工作:
- MissingRequiredParameter: Missing required key 'PrimaryContainer' in params
- UnexpectedParameter: Unexpected key 'Containers' found in params
是否有人知道在 Lambda 上下文中使用 AWS 提供的 SDK 的 NodeJS aws-sdk
中存在的错误?我相信 AWS Lambda 中可用的 SDK 比 2.418.0
更新,但显然存在兼容性问题。
如您所见,aws-sdk 的 'embedded' lambda 版本落后。它实际上在 2.290.0
上(您可以在此处查看有关环境的完整详细信息:https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html)
这里可以看到:https://github.com/aws/aws-sdk-js/blame/master/clients/sagemaker.d.ts直到2.366.0
,这个方法的params才包含Containers
,不需要PrimaryContainer
.
如您所述,解决方法 是使用您正在使用的 aws-sdk
版本部署 lambda。这有时被认为是最佳实践,因为它将 aws-sdk
固定在您构建和测试的功能上。
我是 运行 AWS Lambda 中动态创建 SageMaker 模型的一些代码。 我像这样锁定 Sagemaker 的 API 版本:
const sagemaker = new AWS.SageMaker({apiVersion: '2017-07-24'});
下面是创建模型的代码:
await sagemaker.createModel({
ExecutionRoleArn: 'xxxxxx',
ModelName: sageMakerConfigId,
Containers: [{
Image: ecrUrl
}]
}).promise()
此代码在 2.418.0
上的 aws-sdk
本地运行良好。
但是,当此代码部署到 Lambda 时,由于创建模型时出现一些验证错误,它无法正常工作:
- MissingRequiredParameter: Missing required key 'PrimaryContainer' in params
- UnexpectedParameter: Unexpected key 'Containers' found in params
是否有人知道在 Lambda 上下文中使用 AWS 提供的 SDK 的 NodeJS aws-sdk
中存在的错误?我相信 AWS Lambda 中可用的 SDK 比 2.418.0
更新,但显然存在兼容性问题。
如您所见,aws-sdk 的 'embedded' lambda 版本落后。它实际上在 2.290.0
上(您可以在此处查看有关环境的完整详细信息:https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html)
这里可以看到:https://github.com/aws/aws-sdk-js/blame/master/clients/sagemaker.d.ts直到2.366.0
,这个方法的params才包含Containers
,不需要PrimaryContainer
.
如您所述,解决方法 是使用您正在使用的 aws-sdk
版本部署 lambda。这有时被认为是最佳实践,因为它将 aws-sdk
固定在您构建和测试的功能上。