:doc:`AppSync <../../appsync>` / Client / create_data_source

******************
create_data_source
******************



.. py:method:: AppSync.Client.create_data_source(**kwargs)

  

  Creates a ``DataSource`` object.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/appsync-2017-07-25/CreateDataSource>`_  


  **Request Syntax**
  ::

    response = client.create_data_source(
        apiId='string',
        name='string',
        description='string',
        type='AWS_LAMBDA'|'AMAZON_DYNAMODB'|'AMAZON_ELASTICSEARCH'|'NONE'|'HTTP'|'RELATIONAL_DATABASE'|'AMAZON_OPENSEARCH_SERVICE'|'AMAZON_EVENTBRIDGE'|'AMAZON_BEDROCK_RUNTIME',
        serviceRoleArn='string',
        dynamodbConfig={
            'tableName': 'string',
            'awsRegion': 'string',
            'useCallerCredentials': True|False,
            'deltaSyncConfig': {
                'baseTableTTL': 123,
                'deltaSyncTableName': 'string',
                'deltaSyncTableTTL': 123
            },
            'versioned': True|False
        },
        lambdaConfig={
            'lambdaFunctionArn': 'string'
        },
        elasticsearchConfig={
            'endpoint': 'string',
            'awsRegion': 'string'
        },
        openSearchServiceConfig={
            'endpoint': 'string',
            'awsRegion': 'string'
        },
        httpConfig={
            'endpoint': 'string',
            'authorizationConfig': {
                'authorizationType': 'AWS_IAM',
                'awsIamConfig': {
                    'signingRegion': 'string',
                    'signingServiceName': 'string'
                }
            }
        },
        relationalDatabaseConfig={
            'relationalDatabaseSourceType': 'RDS_HTTP_ENDPOINT',
            'rdsHttpEndpointConfig': {
                'awsRegion': 'string',
                'dbClusterIdentifier': 'string',
                'databaseName': 'string',
                'schema': 'string',
                'awsSecretStoreArn': 'string'
            }
        },
        eventBridgeConfig={
            'eventBusArn': 'string'
        },
        metricsConfig='ENABLED'|'DISABLED'
    )
    
  :type apiId: string
  :param apiId: **[REQUIRED]** 

    The API ID for the GraphQL API for the ``DataSource``.

    

  
  :type name: string
  :param name: **[REQUIRED]** 

    A user-supplied name for the ``DataSource``.

    

  
  :type description: string
  :param description: 

    A description of the ``DataSource``.

    

  
  :type type: string
  :param type: **[REQUIRED]** 

    The type of the ``DataSource``.

    

  
  :type serviceRoleArn: string
  :param serviceRoleArn: 

    The Identity and Access Management (IAM) service role Amazon Resource Name (ARN) for the data source. The system assumes this role when accessing the data source.

    

  
  :type dynamodbConfig: dict
  :param dynamodbConfig: 

    Amazon DynamoDB settings.

    

  
    - **tableName** *(string) --* **[REQUIRED]** 

      The table name.

      

    
    - **awsRegion** *(string) --* **[REQUIRED]** 

      The Amazon Web Services Region.

      

    
    - **useCallerCredentials** *(boolean) --* 

      Set to TRUE to use Amazon Cognito credentials with this data source.

      

    
    - **deltaSyncConfig** *(dict) --* 

      The ``DeltaSyncConfig`` for a versioned data source.

      

    
      - **baseTableTTL** *(integer) --* 

        The number of minutes that an Item is stored in the data source.

        

      
      - **deltaSyncTableName** *(string) --* 

        The Delta Sync table name.

        

      
      - **deltaSyncTableTTL** *(integer) --* 

        The number of minutes that a Delta Sync log entry is stored in the Delta Sync table.

        

      
    
    - **versioned** *(boolean) --* 

      Set to TRUE to use Conflict Detection and Resolution with this data source.

      

    
  
  :type lambdaConfig: dict
  :param lambdaConfig: 

    Lambda settings.

    

  
    - **lambdaFunctionArn** *(string) --* **[REQUIRED]** 

      The Amazon Resource Name (ARN) for the Lambda function.

      

    
  
  :type elasticsearchConfig: dict
  :param elasticsearchConfig: 

    Amazon OpenSearch Service settings.

     

    As of September 2021, Amazon Elasticsearch service is Amazon OpenSearch Service. This configuration is deprecated. For new data sources, use  CreateDataSourceRequest$openSearchServiceConfig to create an OpenSearch data source.

    

  
    - **endpoint** *(string) --* **[REQUIRED]** 

      The endpoint.

      

    
    - **awsRegion** *(string) --* **[REQUIRED]** 

      The Amazon Web Services Region.

      

    
  
  :type openSearchServiceConfig: dict
  :param openSearchServiceConfig: 

    Amazon OpenSearch Service settings.

    

  
    - **endpoint** *(string) --* **[REQUIRED]** 

      The endpoint.

      

    
    - **awsRegion** *(string) --* **[REQUIRED]** 

      The Amazon Web Services Region.

      

    
  
  :type httpConfig: dict
  :param httpConfig: 

    HTTP endpoint settings.

    

  
    - **endpoint** *(string) --* 

      The HTTP URL endpoint. You can specify either the domain name or IP, and port combination, and the URL scheme must be HTTP or HTTPS. If you don't specify the port, AppSync uses the default port 80 for the HTTP endpoint and port 443 for HTTPS endpoints.

      

    
    - **authorizationConfig** *(dict) --* 

      The authorization configuration in case the HTTP endpoint requires authorization.

      

    
      - **authorizationType** *(string) --* **[REQUIRED]** 

        The authorization type that the HTTP endpoint requires.

         

        
        * **AWS_IAM**: The authorization type is Signature Version 4 (SigV4).
        

        

      
      - **awsIamConfig** *(dict) --* 

        The Identity and Access Management (IAM) settings.

        

      
        - **signingRegion** *(string) --* 

          The signing Amazon Web Services Region for IAM authorization.

          

        
        - **signingServiceName** *(string) --* 

          The signing service name for IAM authorization.

          

        
      
    
  
  :type relationalDatabaseConfig: dict
  :param relationalDatabaseConfig: 

    Relational database settings.

    

  
    - **relationalDatabaseSourceType** *(string) --* 

      Source type for the relational database.

       

      
      * **RDS_HTTP_ENDPOINT**: The relational database source type is an Amazon Relational Database Service (Amazon RDS) HTTP endpoint.
      

      

    
    - **rdsHttpEndpointConfig** *(dict) --* 

      Amazon RDS HTTP endpoint settings.

      

    
      - **awsRegion** *(string) --* 

        Amazon Web Services Region for Amazon RDS HTTP endpoint.

        

      
      - **dbClusterIdentifier** *(string) --* 

        Amazon RDS cluster Amazon Resource Name (ARN).

        

      
      - **databaseName** *(string) --* 

        Logical database name.

        

      
      - **schema** *(string) --* 

        Logical schema name.

        

      
      - **awsSecretStoreArn** *(string) --* 

        Amazon Web Services secret store Amazon Resource Name (ARN) for database credentials.

        

      
    
  
  :type eventBridgeConfig: dict
  :param eventBridgeConfig: 

    Amazon EventBridge settings.

    

  
    - **eventBusArn** *(string) --* **[REQUIRED]** 

      The ARN of the event bus. For more information about event buses, see `Amazon EventBridge event buses <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html>`__.

      

    
  
  :type metricsConfig: string
  :param metricsConfig: 

    Enables or disables enhanced data source metrics for specified data sources. Note that ``metricsConfig`` won't be used unless the ``dataSourceLevelMetricsBehavior`` value is set to ``PER_DATA_SOURCE_METRICS``. If the ``dataSourceLevelMetricsBehavior`` is set to ``FULL_REQUEST_DATA_SOURCE_METRICS`` instead, ``metricsConfig`` will be ignored. However, you can still set its value.

     

    ``metricsConfig`` can be ``ENABLED`` or ``DISABLED``.

    

  
  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'dataSource': {
              'dataSourceArn': 'string',
              'name': 'string',
              'description': 'string',
              'type': 'AWS_LAMBDA'|'AMAZON_DYNAMODB'|'AMAZON_ELASTICSEARCH'|'NONE'|'HTTP'|'RELATIONAL_DATABASE'|'AMAZON_OPENSEARCH_SERVICE'|'AMAZON_EVENTBRIDGE'|'AMAZON_BEDROCK_RUNTIME',
              'serviceRoleArn': 'string',
              'dynamodbConfig': {
                  'tableName': 'string',
                  'awsRegion': 'string',
                  'useCallerCredentials': True|False,
                  'deltaSyncConfig': {
                      'baseTableTTL': 123,
                      'deltaSyncTableName': 'string',
                      'deltaSyncTableTTL': 123
                  },
                  'versioned': True|False
              },
              'lambdaConfig': {
                  'lambdaFunctionArn': 'string'
              },
              'elasticsearchConfig': {
                  'endpoint': 'string',
                  'awsRegion': 'string'
              },
              'openSearchServiceConfig': {
                  'endpoint': 'string',
                  'awsRegion': 'string'
              },
              'httpConfig': {
                  'endpoint': 'string',
                  'authorizationConfig': {
                      'authorizationType': 'AWS_IAM',
                      'awsIamConfig': {
                          'signingRegion': 'string',
                          'signingServiceName': 'string'
                      }
                  }
              },
              'relationalDatabaseConfig': {
                  'relationalDatabaseSourceType': 'RDS_HTTP_ENDPOINT',
                  'rdsHttpEndpointConfig': {
                      'awsRegion': 'string',
                      'dbClusterIdentifier': 'string',
                      'databaseName': 'string',
                      'schema': 'string',
                      'awsSecretStoreArn': 'string'
                  }
              },
              'eventBridgeConfig': {
                  'eventBusArn': 'string'
              },
              'metricsConfig': 'ENABLED'|'DISABLED'
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **dataSource** *(dict) --* 

        The ``DataSource`` object.

        
        

        - **dataSourceArn** *(string) --* 

          The data source Amazon Resource Name (ARN).

          
        

        - **name** *(string) --* 

          The name of the data source.

          
        

        - **description** *(string) --* 

          The description of the data source.

          
        

        - **type** *(string) --* 

          The type of the data source.

           

          
          * **AWS_LAMBDA**: The data source is an Lambda function.
           
          * **AMAZON_DYNAMODB**: The data source is an Amazon DynamoDB table.
           
          * **AMAZON_ELASTICSEARCH**: The data source is an Amazon OpenSearch Service domain.
           
          * **AMAZON_OPENSEARCH_SERVICE**: The data source is an Amazon OpenSearch Service domain.
           
          * **AMAZON_EVENTBRIDGE**: The data source is an Amazon EventBridge configuration.
           
          * **AMAZON_BEDROCK_RUNTIME**: The data source is the Amazon Bedrock runtime.
           
          * **NONE**: There is no data source. Use this type when you want to invoke a GraphQL operation without connecting to a data source, such as when you're performing data transformation with resolvers or invoking a subscription from a mutation.
           
          * **HTTP**: The data source is an HTTP endpoint.
           
          * **RELATIONAL_DATABASE**: The data source is a relational database.
          

          
        

        - **serviceRoleArn** *(string) --* 

          The Identity and Access Management (IAM) service role Amazon Resource Name (ARN) for the data source. The system assumes this role when accessing the data source.

          
        

        - **dynamodbConfig** *(dict) --* 

          DynamoDB settings.

          
          

          - **tableName** *(string) --* 

            The table name.

            
          

          - **awsRegion** *(string) --* 

            The Amazon Web Services Region.

            
          

          - **useCallerCredentials** *(boolean) --* 

            Set to TRUE to use Amazon Cognito credentials with this data source.

            
          

          - **deltaSyncConfig** *(dict) --* 

            The ``DeltaSyncConfig`` for a versioned data source.

            
            

            - **baseTableTTL** *(integer) --* 

              The number of minutes that an Item is stored in the data source.

              
            

            - **deltaSyncTableName** *(string) --* 

              The Delta Sync table name.

              
            

            - **deltaSyncTableTTL** *(integer) --* 

              The number of minutes that a Delta Sync log entry is stored in the Delta Sync table.

              
        
          

          - **versioned** *(boolean) --* 

            Set to TRUE to use Conflict Detection and Resolution with this data source.

            
      
        

        - **lambdaConfig** *(dict) --* 

          Lambda settings.

          
          

          - **lambdaFunctionArn** *(string) --* 

            The Amazon Resource Name (ARN) for the Lambda function.

            
      
        

        - **elasticsearchConfig** *(dict) --* 

          Amazon OpenSearch Service settings.

          
          

          - **endpoint** *(string) --* 

            The endpoint.

            
          

          - **awsRegion** *(string) --* 

            The Amazon Web Services Region.

            
      
        

        - **openSearchServiceConfig** *(dict) --* 

          Amazon OpenSearch Service settings.

          
          

          - **endpoint** *(string) --* 

            The endpoint.

            
          

          - **awsRegion** *(string) --* 

            The Amazon Web Services Region.

            
      
        

        - **httpConfig** *(dict) --* 

          HTTP endpoint settings.

          
          

          - **endpoint** *(string) --* 

            The HTTP URL endpoint. You can specify either the domain name or IP, and port combination, and the URL scheme must be HTTP or HTTPS. If you don't specify the port, AppSync uses the default port 80 for the HTTP endpoint and port 443 for HTTPS endpoints.

            
          

          - **authorizationConfig** *(dict) --* 

            The authorization configuration in case the HTTP endpoint requires authorization.

            
            

            - **authorizationType** *(string) --* 

              The authorization type that the HTTP endpoint requires.

               

              
              * **AWS_IAM**: The authorization type is Signature Version 4 (SigV4).
              

              
            

            - **awsIamConfig** *(dict) --* 

              The Identity and Access Management (IAM) settings.

              
              

              - **signingRegion** *(string) --* 

                The signing Amazon Web Services Region for IAM authorization.

                
              

              - **signingServiceName** *(string) --* 

                The signing service name for IAM authorization.

                
          
        
      
        

        - **relationalDatabaseConfig** *(dict) --* 

          Relational database settings.

          
          

          - **relationalDatabaseSourceType** *(string) --* 

            Source type for the relational database.

             

            
            * **RDS_HTTP_ENDPOINT**: The relational database source type is an Amazon Relational Database Service (Amazon RDS) HTTP endpoint.
            

            
          

          - **rdsHttpEndpointConfig** *(dict) --* 

            Amazon RDS HTTP endpoint settings.

            
            

            - **awsRegion** *(string) --* 

              Amazon Web Services Region for Amazon RDS HTTP endpoint.

              
            

            - **dbClusterIdentifier** *(string) --* 

              Amazon RDS cluster Amazon Resource Name (ARN).

              
            

            - **databaseName** *(string) --* 

              Logical database name.

              
            

            - **schema** *(string) --* 

              Logical schema name.

              
            

            - **awsSecretStoreArn** *(string) --* 

              Amazon Web Services secret store Amazon Resource Name (ARN) for database credentials.

              
        
      
        

        - **eventBridgeConfig** *(dict) --* 

          Amazon EventBridge settings.

          
          

          - **eventBusArn** *(string) --* 

            The ARN of the event bus. For more information about event buses, see `Amazon EventBridge event buses <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html>`__.

            
      
        

        - **metricsConfig** *(string) --* 

          Enables or disables enhanced data source metrics for specified data sources. Note that ``metricsConfig`` won't be used unless the ``dataSourceLevelMetricsBehavior`` value is set to ``PER_DATA_SOURCE_METRICS``. If the ``dataSourceLevelMetricsBehavior`` is set to ``FULL_REQUEST_DATA_SOURCE_METRICS`` instead, ``metricsConfig`` will be ignored. However, you can still set its value.

           

          ``metricsConfig`` can be ``ENABLED`` or ``DISABLED``.

          
    
  
  **Exceptions**
  
  *   :py:class:`AppSync.Client.exceptions.BadRequestException`

  
  *   :py:class:`AppSync.Client.exceptions.ConcurrentModificationException`

  
  *   :py:class:`AppSync.Client.exceptions.NotFoundException`

  
  *   :py:class:`AppSync.Client.exceptions.UnauthorizedException`

  
  *   :py:class:`AppSync.Client.exceptions.InternalFailureException`

  