createRedshiftIdcApplication method

Future<CreateRedshiftIdcApplicationResult> createRedshiftIdcApplication({
  1. required String iamRoleArn,
  2. required String idcDisplayName,
  3. required String idcInstanceArn,
  4. required String redshiftIdcApplicationName,
  5. ApplicationType? applicationType,
  6. List<AuthorizedTokenIssuer>? authorizedTokenIssuerList,
  7. String? identityNamespace,
  8. List<ServiceIntegrationsUnion>? serviceIntegrations,
  9. List<String>? ssoTagKeys,
  10. List<Tag>? tags,
})

Creates an Amazon Redshift application for use with IAM Identity Center.

May throw DependentServiceAccessDeniedFault. May throw DependentServiceUnavailableFault. May throw InvalidTagFault. May throw RedshiftIdcApplicationAlreadyExistsFault. May throw RedshiftIdcApplicationQuotaExceededFault. May throw TagLimitExceededFault. May throw UnsupportedOperationFault.

Parameter iamRoleArn : The IAM role ARN for the Amazon Redshift IAM Identity Center application instance. It has the required permissions to be assumed and invoke the IDC Identity Center API.

Parameter idcDisplayName : The display name for the Amazon Redshift IAM Identity Center application instance. It appears in the console.

Parameter idcInstanceArn : The Amazon resource name (ARN) of the IAM Identity Center instance where Amazon Redshift creates a new managed application.

Parameter redshiftIdcApplicationName : The name of the Redshift application in IAM Identity Center.

Parameter applicationType : The type of application being created. Valid values are None or Lakehouse. Use Lakehouse to enable Amazon Redshift federated permissions on cluster.

Parameter authorizedTokenIssuerList : The token issuer list for the Amazon Redshift IAM Identity Center application instance.

Parameter identityNamespace : The namespace for the Amazon Redshift IAM Identity Center application instance. It determines which managed application verifies the connection token.

Parameter serviceIntegrations : A collection of service integrations for the Redshift IAM Identity Center application.

Parameter ssoTagKeys : A list of tags keys that Redshift Identity Center applications copy to IAM Identity Center. For each input key, the tag corresponding to the key-value pair is propagated.

Parameter tags : A list of tags.

Implementation

Future<CreateRedshiftIdcApplicationResult> createRedshiftIdcApplication({
  required String iamRoleArn,
  required String idcDisplayName,
  required String idcInstanceArn,
  required String redshiftIdcApplicationName,
  ApplicationType? applicationType,
  List<AuthorizedTokenIssuer>? authorizedTokenIssuerList,
  String? identityNamespace,
  List<ServiceIntegrationsUnion>? serviceIntegrations,
  List<String>? ssoTagKeys,
  List<Tag>? tags,
}) async {
  final $request = <String, String>{
    'IamRoleArn': iamRoleArn,
    'IdcDisplayName': idcDisplayName,
    'IdcInstanceArn': idcInstanceArn,
    'RedshiftIdcApplicationName': redshiftIdcApplicationName,
    if (applicationType != null) 'ApplicationType': applicationType.value,
    if (authorizedTokenIssuerList != null)
      if (authorizedTokenIssuerList.isEmpty)
        'AuthorizedTokenIssuerList': ''
      else
        for (var i1 = 0; i1 < authorizedTokenIssuerList.length; i1++)
          for (var e3 in authorizedTokenIssuerList[i1].toQueryMap().entries)
            'AuthorizedTokenIssuerList.member.${i1 + 1}.${e3.key}': e3.value,
    if (identityNamespace != null) 'IdentityNamespace': identityNamespace,
    if (serviceIntegrations != null)
      if (serviceIntegrations.isEmpty)
        'ServiceIntegrations': ''
      else
        for (var i1 = 0; i1 < serviceIntegrations.length; i1++)
          for (var e3 in serviceIntegrations[i1].toQueryMap().entries)
            'ServiceIntegrations.member.${i1 + 1}.${e3.key}': e3.value,
    if (ssoTagKeys != null)
      if (ssoTagKeys.isEmpty)
        'SsoTagKeys': ''
      else
        for (var i1 = 0; i1 < ssoTagKeys.length; i1++)
          'SsoTagKeys.TagKey.${i1 + 1}': ssoTagKeys[i1],
    if (tags != null)
      if (tags.isEmpty)
        'Tags': ''
      else
        for (var i1 = 0; i1 < tags.length; i1++)
          for (var e3 in tags[i1].toQueryMap().entries)
            'Tags.Tag.${i1 + 1}.${e3.key}': e3.value,
  };
  final $result = await _protocol.send(
    $request,
    action: 'CreateRedshiftIdcApplication',
    version: '2012-12-01',
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    resultWrapper: 'CreateRedshiftIdcApplicationResult',
  );
  return CreateRedshiftIdcApplicationResult.fromXml($result);
}