putResourcePolicy method
Attaches a resource-based policy to a data stream or registered consumer.
If you are using an identity other than the root user of the Amazon Web
Services account that owns the resource, the calling identity must have
the PutResourcePolicy permissions on the specified Kinesis
Data Streams resource and belong to the owner's account in order to use
this operation. If you don't have PutResourcePolicy
permissions, Amazon Kinesis Data Streams returns a 403 Access Denied
error. If you receive a ResourceNotFoundException,
check to see if you passed a valid stream or consumer resource.
Request patterns can be one of the following:
-
Data stream pattern:
arn:aws.*:kinesis:.*:\d{12}:.*stream/\S+ -
Consumer pattern:
^(arn):aws.*:kinesis:.*:\d{12}:.*stream\/\[a-zA-Z0-9_.-\]+\/consumer\/\[a-zA-Z0-9_.-\]+:\[0-9\]+
May throw AccessDeniedException.
May throw InvalidArgumentException.
May throw LimitExceededException.
May throw ResourceInUseException.
May throw ResourceNotFoundException.
Parameter policy :
Details of the resource policy. It must include the identity of the
principal and the actions allowed on this resource. This is formatted as a
JSON string.
Parameter resourceARN :
The Amazon Resource Name (ARN) of the data stream or consumer.
Parameter streamId :
Not Implemented. Reserved for future use.
Implementation
Future<void> putResourcePolicy({
required String policy,
required String resourceARN,
String? streamId,
}) async {
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'Kinesis_20131202.PutResourcePolicy'
};
await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'Policy': policy,
'ResourceARN': resourceARN,
if (streamId != null) 'StreamId': streamId,
},
);
}