createCampaign method

Future<CreateCampaignResponse> createCampaign({
  1. required int minProvisionedTPS,
  2. required String name,
  3. required String solutionVersionArn,
  4. CampaignConfig? campaignConfig,
})

Creates a campaign by deploying a solution version. When a client calls the GetRecommendations and GetPersonalizedRanking APIs, a campaign is specified in the request.

Minimum Provisioned TPS and Auto-Scaling

A transaction is a single GetRecommendations or GetPersonalizedRanking call. Transactions per second (TPS) is the throughput and unit of billing for Amazon Personalize. The minimum provisioned TPS (minProvisionedTPS) specifies the baseline throughput provisioned by Amazon Personalize, and thus, the minimum billing charge. If your TPS increases beyond minProvisionedTPS, Amazon Personalize auto-scales the provisioned capacity up and down, but never below minProvisionedTPS, to maintain a 70% utilization. There's a short time delay while the capacity is increased that might cause loss of transactions. It's recommended to start with a low minProvisionedTPS, track your usage using Amazon CloudWatch metrics, and then increase the minProvisionedTPS as necessary.

Status

A campaign 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 campaign status, call DescribeCampaign.

Related APIs

May throw InvalidInputException. May throw ResourceNotFoundException. May throw ResourceAlreadyExistsException. May throw LimitExceededException. May throw ResourceInUseException.

Parameter minProvisionedTPS : Specifies the requested minimum provisioned transactions (recommendations) per second that Amazon Personalize will support.

Parameter name : A name for the new campaign. The campaign name must be unique within your account.

Parameter solutionVersionArn : The Amazon Resource Name (ARN) of the solution version to deploy.

Parameter campaignConfig : The configuration details of a campaign.

Implementation

Future<CreateCampaignResponse> createCampaign({
  required int minProvisionedTPS,
  required String name,
  required String solutionVersionArn,
  CampaignConfig? campaignConfig,
}) async {
  ArgumentError.checkNotNull(minProvisionedTPS, 'minProvisionedTPS');
  _s.validateNumRange(
    'minProvisionedTPS',
    minProvisionedTPS,
    1,
    1152921504606846976,
    isRequired: true,
  );
  ArgumentError.checkNotNull(name, 'name');
  _s.validateStringLength(
    'name',
    name,
    1,
    63,
    isRequired: true,
  );
  ArgumentError.checkNotNull(solutionVersionArn, 'solutionVersionArn');
  _s.validateStringLength(
    'solutionVersionArn',
    solutionVersionArn,
    0,
    256,
    isRequired: true,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AmazonPersonalize.CreateCampaign'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'minProvisionedTPS': minProvisionedTPS,
      'name': name,
      'solutionVersionArn': solutionVersionArn,
      if (campaignConfig != null) 'campaignConfig': campaignConfig,
    },
  );

  return CreateCampaignResponse.fromJson(jsonResponse.body);
}