createConstraint method
Creates a constraint.
A delegated admin is authorized to invoke this command.
May throw ResourceNotFoundException. May throw InvalidParametersException. May throw LimitExceededException. May throw DuplicateResourceException.
Parameter parameters
:
The constraint parameters, in JSON format. The syntax depends on the
constraint type as follows:
- LAUNCH
-
You are required to specify either the
RoleArn
or theLocalRoleName
but can't use both.Specify the
RoleArn
property as follows:{"RoleArn" : "arn:aws:iam::123456789012:role/LaunchRole"}
Specify the
LocalRoleName
property as follows:{"LocalRoleName": "SCBasicLaunchRole"}
If you specify the
LocalRoleName
property, when an account uses the launch constraint, the IAM role with that name in the account will be used. This allows launch-role constraints to be account-agnostic so the administrator can create fewer resources per shared account. You cannot have both aLAUNCH
and aSTACKSET
constraint.You also cannot have more than one
LAUNCH
constraint on a product and portfolio. - NOTIFICATION
-
Specify the
NotificationArns
property as follows:{"NotificationArns" :
"arn:aws:sns:us-east-1:123456789012:Topic"
} - RESOURCE_UPDATE
-
Specify the
TagUpdatesOnProvisionedProduct
property as follows:{"Version":"2.0","Properties":{"TagUpdateOnProvisionedProduct":"String"}}
The
TagUpdatesOnProvisionedProduct
property accepts a string value ofALLOWED
orNOT_ALLOWED
. - STACKSET
-
Specify the
Parameters
property as follows:{"Version": "String", "Properties": {"AccountList":
"String"
, "RegionList":"String"
, "AdminRole": "String", "ExecutionRole": "String"}}You cannot have both a
LAUNCH
and aSTACKSET
constraint.You also cannot have more than one
STACKSET
constraint on a product and portfolio.Products with a
STACKSET
constraint will launch an AWS CloudFormation stack set. - TEMPLATE
-
Specify the
Rules
property. For more information, see Template Constraint Rules.
Parameter portfolioId
:
The portfolio identifier.
Parameter productId
:
The product identifier.
Parameter type
:
The type of constraint.
-
LAUNCH
-
NOTIFICATION
-
RESOURCE_UPDATE
-
STACKSET
-
TEMPLATE
Parameter acceptLanguage
:
The language code.
-
en
- English (default) -
jp
- Japanese -
zh
- Chinese
Parameter description
:
The description of the constraint.
Parameter idempotencyToken
:
A unique identifier that you provide to ensure idempotency. If multiple
requests differ only by the idempotency token, the same response is
returned for each repeated request.
Implementation
Future<CreateConstraintOutput> createConstraint({
required String parameters,
required String portfolioId,
required String productId,
required String type,
String? acceptLanguage,
String? description,
String? idempotencyToken,
}) async {
ArgumentError.checkNotNull(parameters, 'parameters');
ArgumentError.checkNotNull(portfolioId, 'portfolioId');
_s.validateStringLength(
'portfolioId',
portfolioId,
1,
100,
isRequired: true,
);
ArgumentError.checkNotNull(productId, 'productId');
_s.validateStringLength(
'productId',
productId,
1,
100,
isRequired: true,
);
ArgumentError.checkNotNull(type, 'type');
_s.validateStringLength(
'type',
type,
1,
1024,
isRequired: true,
);
_s.validateStringLength(
'acceptLanguage',
acceptLanguage,
0,
100,
);
_s.validateStringLength(
'description',
description,
0,
2000,
);
_s.validateStringLength(
'idempotencyToken',
idempotencyToken,
1,
128,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AWS242ServiceCatalogService.CreateConstraint'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'Parameters': parameters,
'PortfolioId': portfolioId,
'ProductId': productId,
'Type': type,
if (acceptLanguage != null) 'AcceptLanguage': acceptLanguage,
if (description != null) 'Description': description,
'IdempotencyToken': idempotencyToken ?? _s.generateIdempotencyToken(),
},
);
return CreateConstraintOutput.fromJson(jsonResponse.body);
}