:doc:`SFN <../../stepfunctions>` / Client / create_activity

***************
create_activity
***************



.. py:method:: SFN.Client.create_activity(**kwargs)

  

  Creates an activity. An activity is a task that you write in any programming language and host on any machine that has access to Step Functions. Activities must poll Step Functions using the ``GetActivityTask`` API action and respond using ``SendTask*`` API actions. This function lets Step Functions know the existence of your activity and returns an identifier for use in a state machine and when polling from the activity.

   

  .. note::

    

    This operation is eventually consistent. The results are best effort and may not reflect very recent updates and changes.

    

   

  .. note::

    

    ``CreateActivity`` is an idempotent API. Subsequent requests won’t create a duplicate resource if it was already created. ``CreateActivity``'s idempotency check is based on the activity ``name``. If a following request has different ``tags`` values, Step Functions will ignore these differences and treat it as an idempotent request of the previous. In this case, ``tags`` will not be updated, even if they are different.

    

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/CreateActivity>`_  


  **Request Syntax**
  ::

    response = client.create_activity(
        name='string',
        tags=[
            {
                'key': 'string',
                'value': 'string'
            },
        ],
        encryptionConfiguration={
            'kmsKeyId': 'string',
            'kmsDataKeyReusePeriodSeconds': 123,
            'type': 'AWS_OWNED_KEY'|'CUSTOMER_MANAGED_KMS_KEY'
        }
    )
    
  :type name: string
  :param name: **[REQUIRED]** 

    The name of the activity to create. This name must be unique for your Amazon Web Services account and region for 90 days. For more information, see `Limits Related to State Machine Executions <https://docs.aws.amazon.com/step-functions/latest/dg/limits.html#service-limits-state-machine-executions>`__ in the *Step Functions Developer Guide*.

     

    A name must *not* contain:

     

    
    * white space
     
    * brackets ``< > { } [ ]``
     
    * wildcard characters ``? *``
     
    * special characters ``" # % \ ^ | ~ ` $ & , ; : /``
     
    * control characters ( ``U+0000-001F``, ``U+007F-009F``, ``U+FFFE-FFFF``)
     
    * surrogates ( ``U+D800-DFFF``)
     
    * invalid characters ( `` U+10FFFF``)
    

     

    To enable logging with CloudWatch Logs, the name should only contain 0-9, A-Z, a-z, - and _.

    

  
  :type tags: list
  :param tags: 

    The list of tags to add to a resource.

     

    An array of key-value pairs. For more information, see `Using Cost Allocation Tags <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html>`__ in the *Amazon Web Services Billing and Cost Management User Guide*, and `Controlling Access Using IAM Tags <https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html>`__.

     

    Tags may only contain Unicode letters, digits, white space, or these symbols: ``_ . : / = + - @``.

    

  
    - *(dict) --* 

      Tags are key-value pairs that can be associated with Step Functions state machines and activities.

       

      An array of key-value pairs. For more information, see `Using Cost Allocation Tags <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html>`__ in the *Amazon Web Services Billing and Cost Management User Guide*, and `Controlling Access Using IAM Tags <https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html>`__.

       

      Tags may only contain Unicode letters, digits, white space, or these symbols: ``_ . : / = + - @``.

      

    
      - **key** *(string) --* 

        The key of a tag.

        

      
      - **value** *(string) --* 

        The value of a tag.

        

      
    

  :type encryptionConfiguration: dict
  :param encryptionConfiguration: 

    Settings to configure server-side encryption.

    

  
    - **kmsKeyId** *(string) --* 

      An alias, alias ARN, key ID, or key ARN of a symmetric encryption KMS key to encrypt data. To specify a KMS key in a different Amazon Web Services account, you must use the key ARN or alias ARN.

      

    
    - **kmsDataKeyReusePeriodSeconds** *(integer) --* 

      Maximum duration that Step Functions will reuse data keys. When the period expires, Step Functions will call ``GenerateDataKey``. Only applies to customer managed keys.

      

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

      Encryption type

      

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

    
    ::

      {
          'activityArn': 'string',
          'creationDate': datetime(2015, 1, 1)
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **activityArn** *(string) --* 

        The Amazon Resource Name (ARN) that identifies the created activity.

        
      

      - **creationDate** *(datetime) --* 

        The date the activity is created.

        
  
  **Exceptions**
  
  *   :py:class:`SFN.Client.exceptions.ActivityLimitExceeded`

  
  *   :py:class:`SFN.Client.exceptions.ActivityAlreadyExists`

  
  *   :py:class:`SFN.Client.exceptions.InvalidName`

  
  *   :py:class:`SFN.Client.exceptions.TooManyTags`

  
  *   :py:class:`SFN.Client.exceptions.InvalidEncryptionConfiguration`

  
  *   :py:class:`SFN.Client.exceptions.KmsAccessDeniedException`

  
  *   :py:class:`SFN.Client.exceptions.KmsThrottlingException`

  