detachRolePolicy method

Future<void> detachRolePolicy({
  1. required String policyArn,
  2. required String roleName,
})

Removes the specified managed policy from the specified role.

A role can also have inline policies embedded with it. To delete an inline policy, use the DeleteRolePolicy API. For information about policies, see Managed Policies and Inline Policies in the IAM User Guide.

May throw NoSuchEntityException. May throw LimitExceededException. May throw InvalidInputException. May throw UnmodifiableEntityException. May throw ServiceFailureException.

Parameter policyArn : The Amazon Resource Name (ARN) of the IAM policy you want to detach.

For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference.

Parameter roleName : The name (friendly name, not ARN) of the IAM role to detach the policy from.

This parameter allows (through its regex pattern) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-

Implementation

Future<void> detachRolePolicy({
  required String policyArn,
  required String roleName,
}) async {
  ArgumentError.checkNotNull(policyArn, 'policyArn');
  _s.validateStringLength(
    'policyArn',
    policyArn,
    20,
    2048,
    isRequired: true,
  );
  ArgumentError.checkNotNull(roleName, 'roleName');
  _s.validateStringLength(
    'roleName',
    roleName,
    1,
    64,
    isRequired: true,
  );
  final $request = <String, dynamic>{};
  $request['PolicyArn'] = policyArn;
  $request['RoleName'] = roleName;
  await _protocol.send(
    $request,
    action: 'DetachRolePolicy',
    version: '2010-05-08',
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    shape: shapes['DetachRolePolicyRequest'],
    shapes: shapes,
  );
}