File: api_op_CreateSolution.go

package info (click to toggle)
golang-github-aws-aws-sdk-go-v2 1.30.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 662,428 kB
  • sloc: java: 16,875; makefile: 432; sh: 175
file content (283 lines) | stat: -rw-r--r-- 11,190 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
// Code generated by smithy-go-codegen DO NOT EDIT.

package personalize

import (
	"context"
	"fmt"
	awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
	"github.com/aws/aws-sdk-go-v2/service/personalize/types"
	"github.com/aws/smithy-go/middleware"
	smithyhttp "github.com/aws/smithy-go/transport/http"
)

// After you create a solution, you can’t change its configuration. By default,
// all new solutions use automatic training. With automatic training, you incur
// training costs while your solution is active. You can't stop automatic training
// for a solution. To avoid unnecessary costs, make sure to delete the solution
// when you are finished. For information about training costs, see [Amazon Personalize pricing].
//
// Creates the configuration for training a model (creating a solution version).
// This configuration includes the recipe to use for model training and optional
// training configuration, such as columns to use in training and feature
// transformation parameters. For more information about configuring a solution,
// see [Creating and configuring a solution].
//
// By default, new solutions use automatic training to create solution versions
// every 7 days. You can change the training frequency. Automatic solution version
// creation starts one hour after the solution is ACTIVE. If you manually create a
// solution version within the hour, the solution skips the first automatic
// training. For more information, see [Configuring automatic training].
//
// To turn off automatic training, set performAutoTraining to false. If you turn
// off automatic training, you must manually create a solution version by calling
// the [CreateSolutionVersion]operation.
//
// After training starts, you can get the solution version's Amazon Resource Name
// (ARN) with the [ListSolutionVersions]API operation. To get its status, use the [DescribeSolutionVersion].
//
// After training completes you can evaluate model accuracy by calling [GetSolutionMetrics]. When you
// are satisfied with the solution version, you deploy it using [CreateCampaign]. The campaign
// provides recommendations to a client through the [GetRecommendations]API.
//
// Amazon Personalize doesn't support configuring the hpoObjective for solution
// hyperparameter optimization at this time.
//
// # Status
//
// A solution can be in one of the following states:
//
//   - CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED
//
//   - DELETE PENDING > DELETE IN_PROGRESS
//
// To get the status of the solution, call [DescribeSolution]. If you use manual training, the
// status must be ACTIVE before you call CreateSolutionVersion .
//
// # Related APIs
//
// [ListSolutions]
//
// [CreateSolutionVersion]
//
// [DescribeSolution]
//
// [DeleteSolution]
//
// [ListSolutionVersions]
//
// [DescribeSolutionVersion]
//
// [DescribeSolutionVersion]: https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html
// [CreateCampaign]: https://docs.aws.amazon.com/personalize/latest/dg/API_CreateCampaign.html
// [DeleteSolution]: https://docs.aws.amazon.com/personalize/latest/dg/API_DeleteSolution.html
// [GetSolutionMetrics]: https://docs.aws.amazon.com/personalize/latest/dg/API_GetSolutionMetrics.html
// [ListSolutionVersions]: https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html
// [Creating and configuring a solution]: https://docs.aws.amazon.com/personalize/latest/dg/customizing-solution-config.html
// [ListSolutions]: https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutions.html
// [GetRecommendations]: https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetRecommendations.html
// [Configuring automatic training]: https://docs.aws.amazon.com/personalize/latest/dg/solution-config-auto-training.html
// [Amazon Personalize pricing]: https://aws.amazon.com/personalize/pricing/
// [CreateSolutionVersion]: https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolutionVersion.html
// [DescribeSolution]: https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolution.html
func (c *Client) CreateSolution(ctx context.Context, params *CreateSolutionInput, optFns ...func(*Options)) (*CreateSolutionOutput, error) {
	if params == nil {
		params = &CreateSolutionInput{}
	}

	result, metadata, err := c.invokeOperation(ctx, "CreateSolution", params, optFns, c.addOperationCreateSolutionMiddlewares)
	if err != nil {
		return nil, err
	}

	out := result.(*CreateSolutionOutput)
	out.ResultMetadata = metadata
	return out, nil
}

type CreateSolutionInput struct {

	// The Amazon Resource Name (ARN) of the dataset group that provides the training
	// data.
	//
	// This member is required.
	DatasetGroupArn *string

	// The name for the solution.
	//
	// This member is required.
	Name *string

	// When your have multiple event types (using an EVENT_TYPE schema field), this
	// parameter specifies which event type (for example, 'click' or 'like') is used
	// for training the model.
	//
	// If you do not provide an eventType , Amazon Personalize will use all
	// interactions for training with equal weight regardless of type.
	EventType *string

	// We don't recommend enabling automated machine learning. Instead, match your use
	// case to the available Amazon Personalize recipes. For more information, see [Choosing a recipe].
	//
	// Whether to perform automated machine learning (AutoML). The default is false .
	// For this case, you must specify recipeArn .
	//
	// When set to true , Amazon Personalize analyzes your training data and selects
	// the optimal USER_PERSONALIZATION recipe and hyperparameters. In this case, you
	// must omit recipeArn . Amazon Personalize determines the optimal recipe by
	// running tests with different values for the hyperparameters. AutoML lengthens
	// the training process as compared to selecting a specific recipe.
	//
	// [Choosing a recipe]: https://docs.aws.amazon.com/personalize/latest/dg/working-with-predefined-recipes.html
	PerformAutoML bool

	// Whether the solution uses automatic training to create new solution versions
	// (trained models). The default is True and the solution automatically creates
	// new solution versions every 7 days. You can change the training frequency by
	// specifying a schedulingExpression in the AutoTrainingConfig as part of solution
	// configuration. For more information about automatic training, see [Configuring automatic training].
	//
	// Automatic solution version creation starts one hour after the solution is
	// ACTIVE. If you manually create a solution version within the hour, the solution
	// skips the first automatic training.
	//
	// After training starts, you can get the solution version's Amazon Resource Name
	// (ARN) with the [ListSolutionVersions]API operation. To get its status, use the [DescribeSolutionVersion].
	//
	// [DescribeSolutionVersion]: https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html
	// [ListSolutionVersions]: https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html
	// [Configuring automatic training]: https://docs.aws.amazon.com/personalize/latest/dg/solution-config-auto-training.html
	PerformAutoTraining *bool

	// Whether to perform hyperparameter optimization (HPO) on the specified or
	// selected recipe. The default is false .
	//
	// When performing AutoML, this parameter is always true and you should not set it
	// to false .
	PerformHPO *bool

	// The Amazon Resource Name (ARN) of the recipe to use for model training. This is
	// required when performAutoML is false. For information about different Amazon
	// Personalize recipes and their ARNs, see [Choosing a recipe].
	//
	// [Choosing a recipe]: https://docs.aws.amazon.com/personalize/latest/dg/working-with-predefined-recipes.html
	RecipeArn *string

	// The configuration to use with the solution. When performAutoML is set to true,
	// Amazon Personalize only evaluates the autoMLConfig section of the solution
	// configuration.
	//
	// Amazon Personalize doesn't support configuring the hpoObjective at this time.
	SolutionConfig *types.SolutionConfig

	// A list of [tags] to apply to the solution.
	//
	// [tags]: https://docs.aws.amazon.com/personalize/latest/dg/tagging-resources.html
	Tags []types.Tag

	noSmithyDocumentSerde
}

type CreateSolutionOutput struct {

	// The ARN of the solution.
	SolutionArn *string

	// Metadata pertaining to the operation's result.
	ResultMetadata middleware.Metadata

	noSmithyDocumentSerde
}

func (c *Client) addOperationCreateSolutionMiddlewares(stack *middleware.Stack, options Options) (err error) {
	if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
		return err
	}
	err = stack.Serialize.Add(&awsAwsjson11_serializeOpCreateSolution{}, middleware.After)
	if err != nil {
		return err
	}
	err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpCreateSolution{}, middleware.After)
	if err != nil {
		return err
	}
	if err := addProtocolFinalizerMiddlewares(stack, options, "CreateSolution"); 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 = 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 = addOpCreateSolutionValidationMiddleware(stack); err != nil {
		return err
	}
	if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateSolution(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
	}
	return nil
}

func newServiceMetadataMiddleware_opCreateSolution(region string) *awsmiddleware.RegisterServiceMetadata {
	return &awsmiddleware.RegisterServiceMetadata{
		Region:        region,
		ServiceID:     ServiceID,
		OperationName: "CreateSolution",
	}
}