Skip to content

Sagemaker local client invoke_endpoint returns different response than non local counterpart #3348

Open
@gpiotti

Description

@gpiotti

Sagemaker local client invoke_endpoint method returns a different response than using the boto3 runtime_client, so it makes debugging difficult in local mode, because the same code wouldn't work in production. The missing part is the ResponseMetadata key in the payload
it just returns Body and ContentType
I would want to access ResponseMetadata, InvokedProductionVariant and other related metadata in local mode

To reproduce

  1. Have a local container running the sagemaker model
  2. Invoke the endpoint with sagemaker local client
sagemaker_session = LocalSession()
sagemaker_session.config = {"local": {"local_code": True}}
sm_client = sagemaker_session.sagemaker_runtime_client
response = sm_client.invoke_endpoint(
    EndpointName="local-endpoint-name",
    ContentType="application/json",
    Body=json.dumps(payload),
)
response["ResponseMetadata"]["HTTPStatusCode"] <- Fails

Expected behavior
the local client should return the same response as the non-local client
local client

{"Body": "foo", "ContentType": "bar"}

non-local client

{"Body": "foo", "ContentType": "bar", "ResponseMetadata": {"foo": "bar"}}

System information
A description of your system. Please provide:

  • SageMaker Python SDK version: 2.108.0
  • Python version: 3.7.10
  • CPU or GPU: CPU
  • Custom Docker image (Y/N): Y

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions