createCustomModel method
Creates a new custom model in Amazon Bedrock. After the model is active, you can use it for inference.
You can provide the model data source in one of the following ways:
-
customModelDataSource— Specify a SageMaker AI model package ARN. Amazon Bedrock resolves the model package to retrieve the model artifacts. This is the preferred method for new SageMaker AI training outputs. -
modelSourceConfig— Specify an Amazon S3 URI pointing to the Amazon-managed Amazon S3 bucket containing your model artifacts.
The model appears in ListCustomModels with a
customizationType of imported. To track the
status of the new model, you use the GetCustomModel API
operation. The model can be in the following states:
-
Creating- Initial state during validation and registration -
Active- Model is ready for use in inference -
Failed- Creation process encountered an error
May throw AccessDeniedException.
May throw ConflictException.
May throw InternalServerException.
May throw ResourceNotFoundException.
May throw ServiceQuotaExceededException.
May throw ThrottlingException.
May throw TooManyTagsException.
May throw ValidationException.
Parameter modelName :
A unique name for the custom model.
Parameter clientRequestToken :
A unique, case-sensitive identifier to ensure that the API request
completes no more than one time. If this token matches a previous request,
Amazon Bedrock ignores the request, but does not return an error. For more
information, see Ensuring
idempotency.
Parameter customModelDataSource :
The data source for the custom model. Use this field to specify a
SageMaker AI model package ARN as the source for your custom model. Amazon
Bedrock resolves the model package to retrieve the model artifacts.
You can specify either customModelDataSource or
modelSourceConfig, but not both.
Parameter modelKmsKeyArn :
The Amazon Resource Name (ARN) of the customer managed KMS key to encrypt
the custom model. If you don't provide a KMS key, Amazon Bedrock uses an
Amazon Web Services-managed KMS key to encrypt the model.
If you provide a customer managed KMS key, your Amazon Bedrock service role must have permissions to use it. For more information see Encryption of imported models.
Parameter modelSourceConfig :
The data source for the model. The Amazon S3 URI in the model source must
be for the Amazon-managed Amazon S3 bucket containing your model
artifacts.
Parameter modelTags :
A list of key-value pairs to associate with the custom model resource. You
can use these tags to organize and identify your resources.
For more information, see Tagging resources in the Amazon Bedrock User Guide.
Parameter roleArn :
The Amazon Resource Name (ARN) of an IAM service role that Amazon Bedrock
assumes to perform tasks on your behalf. This role must have permissions
to access the Amazon S3 bucket containing your model artifacts and the KMS
key (if specified). For more information, see Setting
up an IAM service role for importing models in the Amazon Bedrock User
Guide.
This field is required when you use modelSourceConfig with an
Amazon S3 data source. It is not required when you use
customModelDataSource with a model package ARN, because
Amazon Bedrock uses its own credentials to access the model artifacts.
Implementation
Future<CreateCustomModelResponse> createCustomModel({
required String modelName,
String? clientRequestToken,
CustomModelDataSource? customModelDataSource,
String? modelKmsKeyArn,
ModelDataSource? modelSourceConfig,
List<Tag>? modelTags,
String? roleArn,
}) async {
final $payload = <String, dynamic>{
'modelName': modelName,
'clientRequestToken': clientRequestToken ?? _s.generateIdempotencyToken(),
if (customModelDataSource != null)
'customModelDataSource': customModelDataSource,
if (modelKmsKeyArn != null) 'modelKmsKeyArn': modelKmsKeyArn,
if (modelSourceConfig != null) 'modelSourceConfig': modelSourceConfig,
if (modelTags != null) 'modelTags': modelTags,
if (roleArn != null) 'roleArn': roleArn,
};
final response = await _protocol.send(
payload: $payload,
method: 'POST',
requestUri: '/custom-models/create-custom-model',
exceptionFnMap: _exceptionFns,
);
return CreateCustomModelResponse.fromJson(response);
}