SageMaker NodeJS's SDK is not locking the API Version

纵然是瞬间 提交于 2019-12-24 14:48:38

问题


I am running some code in AWS Lambda that dynamically creates SageMaker models. I am locking Sagemaker's API version like so:

const sagemaker = new AWS.SageMaker({apiVersion: '2017-07-24'});

And here's the code to create the model:

await sagemaker.createModel({
        ExecutionRoleArn: 'xxxxxx',
        ModelName: sageMakerConfigId,
        Containers: [{
            Image: ecrUrl
        }]
    }).promise()

This code runs just fine locally with aws-sdk on 2.418.0.

However, when this code is deployed to Lambda, it doesn't work due to some validation errors upon creating the model:

  • MissingRequiredParameter: Missing required key 'PrimaryContainer' in params
  • UnexpectedParameter: Unexpected key 'Containers' found in params

Is anyone aware of existing bugs in the aws-sdk for NodeJS using the SDK provided by AWS in the Lambda context? I believe the SDK available inside AWS Lambda is more up-to-date than 2.418.0 but apparently there are compatibility issues.


回答1:


As you've noticed the 'embedded' lambda version of the aws-sdk lags behind. It's actually on 2.290.0 (you can see the full details on the environment here: https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html)

You can see here: https://github.com/aws/aws-sdk-js/blame/master/clients/sagemaker.d.ts that it is not until 2.366.0 that the params for this method included Containers and did not require PrimaryContainer.

As you've noted, the workaround is to deploy your lambda with the aws-sdk version that you're using. This is sometimes noted as a best practice, as it pins the aws-sdk on the functionality you've built and tested against.




回答2:


I have managed to fix it by removing aws-sdk from devDependencies in my package.json and moved it to dependencies instead, so Lambda will be forced to use it.

"dependencies": {
    "aws-sdk": "^2.418.0"
  }

Still, this is clearly a bug to me.



来源:https://stackoverflow.com/questions/55257580/sagemaker-nodejss-sdk-is-not-locking-the-api-version

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!