:py:mod:`airflow.providers.alibaba.cloud.sensors.oss_key`
=========================================================

.. py:module:: airflow.providers.alibaba.cloud.sensors.oss_key


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.alibaba.cloud.sensors.oss_key.OSSKeySensor




.. py:class:: OSSKeySensor(bucket_key, region, bucket_name = None, oss_conn_id = 'oss_default', **kwargs)

   Bases: :py:obj:`airflow.sensors.base.BaseSensorOperator`

   Waits for a key (a file-like instance on OSS) to be present in a OSS bucket.
   OSS being a key/value it does not support folders. The path is just a key
   a resource.

   :param bucket_key: The key being waited on. Supports full oss:// style url
       or relative path from root level. When it's specified as a full oss://
       url, please leave bucket_name as `None`.
   :param region: OSS region
   :param bucket_name: OSS bucket name
   :param oss_conn_id: The Airflow connection used for OSS credentials.

   .. py:attribute:: template_fields
      :annotation: :Sequence[str] = ['bucket_key', 'bucket_name']

      

   .. py:method:: poke(self, context)

      Check if the object exists in the bucket to pull key.
      @param self - the object itself
      @param context - the context of the object
      @returns True if the object exists, False otherwise


   .. py:method:: get_hook(self)

      Create and return an OSSHook



