def create_and_execute_static_pipeline(sagemaker_session): # start the execution and wait for success print(f"Starting static execution of pipeline '{STATIC_PIPELINE_NAME}'") try: execution_arn = test_end_to_end_pipeline_successful_execution( sagemaker_session=sagemaker_session, region_name=sagemaker_session.boto_session.region_name, role=get_execution_role(sagemaker_session), pipeline_name=STATIC_PIPELINE_NAME, wait=True, ) # now deploy the model package to an endpoint _deploy_static_endpoint( execution_arn=execution_arn, sagemaker_session=sagemaker_session, ) return execution_arn except Exception: # Pipeline already exists, meaning an execution was started by # tests in a different thread execution_arn = _get_static_pipeline_execution_arn(sagemaker_session) _deploy_static_endpoint( execution_arn=execution_arn, sagemaker_session=sagemaker_session, ) return execution_arn
def _deploy_static_endpoint(execution_arn, sagemaker_session): try: model_package_arn = get_model_package_arn_from_static_pipeline( execution_arn, sagemaker_session) model_package = ModelPackage( role=get_execution_role(sagemaker_session), model_package_arn=model_package_arn, sagemaker_session=sagemaker_session, ) model_package.deploy(1, "ml.t2.medium", endpoint_name=STATIC_ENDPOINT_NAME) time.sleep(120) except ClientError as e: if e.response["Error"]["Code"] == "ValidationException": print( f"Endpoint {STATIC_ENDPOINT_NAME} already exists. Continuing.") pass else: raise (e)
def role(feature_store_session): return get_execution_role(feature_store_session)
def role(sagemaker_session): return get_execution_role(sagemaker_session)