service/sagemaker/api_op_CreateModelPackage.go (191 lines of code) (raw):

// Code generated by smithy-go-codegen DO NOT EDIT. package sagemaker import ( "context" "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/service/sagemaker/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) // Creates a model package that you can use to create SageMaker models or list on // Amazon Web Services Marketplace, or a versioned model that is part of a model // group. Buyers can subscribe to model packages listed on Amazon Web Services // Marketplace to create models in SageMaker. // // To create a model package by specifying a Docker container that contains your // inference code and the Amazon S3 location of your model artifacts, provide // values for InferenceSpecification . To create a model from an algorithm resource // that you created or subscribed to in Amazon Web Services Marketplace, provide a // value for SourceAlgorithmSpecification . // // There are two types of model packages: // // - Versioned - a model that is part of a model group in the model registry. // // - Unversioned - a model package that is not part of a model group. func (c *Client) CreateModelPackage(ctx context.Context, params *CreateModelPackageInput, optFns ...func(*Options)) (*CreateModelPackageOutput, error) { if params == nil { params = &CreateModelPackageInput{} } result, metadata, err := c.invokeOperation(ctx, "CreateModelPackage", params, optFns, c.addOperationCreateModelPackageMiddlewares) if err != nil { return nil, err } out := result.(*CreateModelPackageOutput) out.ResultMetadata = metadata return out, nil } type CreateModelPackageInput struct { // An array of additional Inference Specification objects. Each additional // Inference Specification specifies artifacts based on this model package that can // be used on inference endpoints. Generally used with SageMaker Neo to store the // compiled artifacts. AdditionalInferenceSpecifications []types.AdditionalInferenceSpecificationDefinition // Whether to certify the model package for listing on Amazon Web Services // Marketplace. // // This parameter is optional for unversioned models, and does not apply to // versioned models. CertifyForMarketplace *bool // A unique token that guarantees that the call to this API is idempotent. ClientToken *string // The metadata properties associated with the model package versions. CustomerMetadataProperties map[string]string // The machine learning domain of your model package and its components. Common // machine learning domains include computer vision and natural language // processing. Domain *string // Represents the drift check baselines that can be used when the model monitor is // set using the model package. For more information, see the topic on [Drift Detection against Previous Baselines in SageMaker Pipelines]in the // Amazon SageMaker Developer Guide. // // [Drift Detection against Previous Baselines in SageMaker Pipelines]: https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-drift-detection DriftCheckBaselines *types.DriftCheckBaselines // Specifies details about inference jobs that you can run with models based on // this model package, including the following information: // // - The Amazon ECR paths of containers that contain the inference code and // model artifacts. // // - The instance types that the model package supports for transform jobs and // real-time endpoints used for inference. // // - The input and output content formats that the model package supports for // inference. InferenceSpecification *types.InferenceSpecification // Metadata properties of the tracking entity, trial, or trial component. MetadataProperties *types.MetadataProperties // Whether the model is approved for deployment. // // This parameter is optional for versioned models, and does not apply to // unversioned models. // // For versioned models, the value of this parameter must be set to Approved to // deploy the model. ModelApprovalStatus types.ModelApprovalStatus // The model card associated with the model package. Since ModelPackageModelCard // is tied to a model package, it is a specific usage of a model card and its // schema is simplified compared to the schema of ModelCard . The // ModelPackageModelCard schema does not include model_package_details , and // model_overview is composed of the model_creator and model_artifact properties. // For more information about the model package model card schema, see [Model package model card schema]. For more // information about the model card associated with the model package, see [View the Details of a Model Version]. // // [Model package model card schema]: https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry-details.html#model-card-schema // [View the Details of a Model Version]: https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry-details.html ModelCard *types.ModelPackageModelCard // A structure describing the current state of the model in its life cycle. ModelLifeCycle *types.ModelLifeCycle // A structure that contains model metrics reports. ModelMetrics *types.ModelMetrics // A description of the model package. ModelPackageDescription *string // The name or Amazon Resource Name (ARN) of the model package group that this // model version belongs to. // // This parameter is required for versioned models, and does not apply to // unversioned models. ModelPackageGroupName *string // The name of the model package. The name must have 1 to 63 characters. Valid // characters are a-z, A-Z, 0-9, and - (hyphen). // // This parameter is required for unversioned models. It is not applicable to // versioned models. ModelPackageName *string // The Amazon Simple Storage Service (Amazon S3) path where the sample payload is // stored. This path must point to a single gzip compressed tar archive (.tar.gz // suffix). This archive can hold multiple files that are all equally used in the // load test. Each file in the archive must satisfy the size constraints of the [InvokeEndpoint] // call. // // [InvokeEndpoint]: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html#API_runtime_InvokeEndpoint_RequestSyntax SamplePayloadUrl *string // The KMS Key ID ( KMSKeyId ) used for encryption of model package information. SecurityConfig *types.ModelPackageSecurityConfig // Indicates if you want to skip model validation. SkipModelValidation types.SkipModelValidation // Details about the algorithm that was used to create the model package. SourceAlgorithmSpecification *types.SourceAlgorithmSpecification // The URI of the source for the model package. If you want to clone a model // package, set it to the model package Amazon Resource Name (ARN). If you want to // register a model, set it to the model ARN. SourceUri *string // A list of key value pairs associated with the model. For more information, see [Tagging Amazon Web Services resources] // in the Amazon Web Services General Reference Guide. // // If you supply ModelPackageGroupName , your model package belongs to the model // group you specify and uses the tags associated with the model group. In this // case, you cannot supply a tag argument. // // [Tagging Amazon Web Services resources]: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tags []types.Tag // The machine learning task your model package accomplishes. Common machine // learning tasks include object detection and image classification. The following // tasks are supported by Inference Recommender: "IMAGE_CLASSIFICATION" | // "OBJECT_DETECTION" | "TEXT_GENERATION" | "IMAGE_SEGMENTATION" | "FILL_MASK" | // "CLASSIFICATION" | "REGRESSION" | "OTHER" . // // Specify "OTHER" if none of the tasks listed fit your use case. Task *string // Specifies configurations for one or more transform jobs that SageMaker runs to // test the model package. ValidationSpecification *types.ModelPackageValidationSpecification noSmithyDocumentSerde } type CreateModelPackageOutput struct { // The Amazon Resource Name (ARN) of the new model package. // // This member is required. ModelPackageArn *string // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata noSmithyDocumentSerde } func (c *Client) addOperationCreateModelPackageMiddlewares(stack *middleware.Stack, options Options) (err error) { if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { return err } err = stack.Serialize.Add(&awsAwsjson11_serializeOpCreateModelPackage{}, middleware.After) if err != nil { return err } err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpCreateModelPackage{}, middleware.After) if err != nil { return err } if err := addProtocolFinalizerMiddlewares(stack, options, "CreateModelPackage"); err != nil { return fmt.Errorf("add protocol finalizers: %v", err) } if err = addlegacyEndpointContextSetter(stack, options); err != nil { return err } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } if err = addClientRequestID(stack); err != nil { return err } if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } if err = addComputePayloadSHA256(stack); err != nil { return err } if err = addRetry(stack, options); err != nil { return err } if err = addRawResponseToMetadata(stack); err != nil { return err } if err = addRecordResponseTiming(stack); err != nil { return err } if err = addSpanRetryLoop(stack, options); err != nil { return err } if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { return err } if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { return err } if err = addTimeOffsetBuild(stack, c); err != nil { return err } if err = addUserAgentRetryMode(stack, options); err != nil { return err } if err = addCredentialSource(stack, options); err != nil { return err } if err = addIdempotencyToken_opCreateModelPackageMiddleware(stack, options); err != nil { return err } if err = addOpCreateModelPackageValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateModelPackage(options.Region), middleware.Before); err != nil { return err } if err = addRecursionDetection(stack); err != nil { return err } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { return err } if err = addRequestResponseLogging(stack, options); err != nil { return err } if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } if err = addSpanInitializeStart(stack); err != nil { return err } if err = addSpanInitializeEnd(stack); err != nil { return err } if err = addSpanBuildRequestStart(stack); err != nil { return err } if err = addSpanBuildRequestEnd(stack); err != nil { return err } return nil } type idempotencyToken_initializeOpCreateModelPackage struct { tokenProvider IdempotencyTokenProvider } func (*idempotencyToken_initializeOpCreateModelPackage) ID() string { return "OperationIdempotencyTokenAutoFill" } func (m *idempotencyToken_initializeOpCreateModelPackage) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( out middleware.InitializeOutput, metadata middleware.Metadata, err error, ) { if m.tokenProvider == nil { return next.HandleInitialize(ctx, in) } input, ok := in.Parameters.(*CreateModelPackageInput) if !ok { return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateModelPackageInput ") } if input.ClientToken == nil { t, err := m.tokenProvider.GetIdempotencyToken() if err != nil { return out, metadata, err } input.ClientToken = &t } return next.HandleInitialize(ctx, in) } func addIdempotencyToken_opCreateModelPackageMiddleware(stack *middleware.Stack, cfg Options) error { return stack.Initialize.Add(&idempotencyToken_initializeOpCreateModelPackage{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) } func newServiceMetadataMiddleware_opCreateModelPackage(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, OperationName: "CreateModelPackage", } }