:py:mod:`airflow.providers.amazon.aws.transfers.google_api_to_s3`
=================================================================

.. py:module:: airflow.providers.amazon.aws.transfers.google_api_to_s3

.. autoapi-nested-parse::

   This module allows you to transfer data from any Google API endpoint into a S3 Bucket.



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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.amazon.aws.transfers.google_api_to_s3.GoogleApiToS3Operator




.. py:class:: GoogleApiToS3Operator(*, google_api_service_name, google_api_service_version, google_api_endpoint_path, google_api_endpoint_params, s3_destination_key, google_api_response_via_xcom = None, google_api_endpoint_params_via_xcom = None, google_api_endpoint_params_via_xcom_task_ids = None, google_api_pagination = False, google_api_num_retries = 0, s3_overwrite = False, gcp_conn_id = 'google_cloud_default', delegate_to = None, aws_conn_id = 'aws_default', google_impersonation_chain = None, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   Basic class for transferring data from a Google API endpoint into a S3 Bucket.

   This discovery-based operator use
   :class:`~airflow.providers.google.common.hooks.discovery_api.GoogleDiscoveryApiHook` to communicate
   with Google Services via the
   `Google API Python Client <https://github.com/googleapis/google-api-python-client>`__.
   Please note that this library is in maintenance mode hence it won't fully support Google Cloud in
   the future.
   Therefore it is recommended that you use the custom Google Cloud Service Operators for working
   with the Google Cloud Platform.

   :param google_api_service_name: The specific API service that is being requested.
   :param google_api_service_version: The version of the API that is being requested.
   :param google_api_endpoint_path: The client libraries path to the api call's executing method.
       For example: 'analyticsreporting.reports.batchGet'

       .. note:: See https://developers.google.com/apis-explorer
           for more information on which methods are available.

   :param google_api_endpoint_params: The params to control the corresponding endpoint result.
   :param s3_destination_key: The url where to put the data retrieved from the endpoint in S3.
   :param google_api_response_via_xcom: Can be set to expose the google api response to xcom.
   :param google_api_endpoint_params_via_xcom: If set to a value this value will be used as a key
       for pulling from xcom and updating the google api endpoint params.
   :param google_api_endpoint_params_via_xcom_task_ids: Task ids to filter xcom by.
   :param google_api_pagination: If set to True Pagination will be enabled for this request
       to retrieve all data.

       .. note:: This means the response will be a list of responses.

   :param google_api_num_retries: Define the number of retries for the google api requests being made
       if it fails.
   :param s3_overwrite: Specifies whether the s3 file will be overwritten if exists.
   :param gcp_conn_id: The connection ID to use when fetching connection info.
   :param delegate_to: Google account to impersonate using domain-wide delegation of authority,
       if any. For this to work, the service account making the request must have
       domain-wide delegation enabled.
   :param aws_conn_id: The connection id specifying the authentication information for the S3 Bucket.
   :param google_impersonation_chain: Optional Google service account to impersonate using
       short-term credentials, or chained list of accounts required to get the access_token
       of the last account in the list, which will be impersonated in the request.
       If set as a string, the account must grant the originating account
       the Service Account Token Creator IAM role.
       If set as a sequence, the identities from the list must grant
       Service Account Token Creator IAM role to the directly preceding identity, with first
       account from the list granting this role to the originating account (templated).

   .. py:attribute:: template_fields
      :annotation: :Sequence[str] = ['google_api_endpoint_params', 's3_destination_key', 'google_impersonation_chain']

      

   .. py:attribute:: template_ext
      :annotation: :Sequence[str] = []

      

   .. py:attribute:: ui_color
      :annotation: = #cc181e

      

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

      Transfers Google APIs json data to S3.

      :param context: The context that is being provided when executing.



