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

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

.. autoapi-nested-parse::

   This module contains Google Cloud Storage to S3 operator.



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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.amazon.aws.transfers.gcs_to_s3.GCSToS3Operator




.. py:class:: GCSToS3Operator(*, bucket, prefix = None, delimiter = None, gcp_conn_id = 'google_cloud_default', google_cloud_storage_conn_id = None, delegate_to = None, dest_aws_conn_id = 'aws_default', dest_s3_key, dest_verify = None, replace = False, google_impersonation_chain = None, dest_s3_extra_args = None, s3_acl_policy = None, keep_directory_structure = True, **kwargs)

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

   Synchronizes a Google Cloud Storage bucket with an S3 bucket.

   :param bucket: The Google Cloud Storage bucket to find the objects. (templated)
   :param prefix: Prefix string which filters objects whose name begin with
       this prefix. (templated)
   :param delimiter: The delimiter by which you want to filter the objects. (templated)
       For e.g to lists the CSV files from in a directory in GCS you would use
       delimiter='.csv'.
   :param gcp_conn_id: (Optional) The connection ID used to connect to Google Cloud.
   :param google_cloud_storage_conn_id: (Deprecated) The connection ID used to connect to Google Cloud.
       This parameter has been deprecated. You should pass the gcp_conn_id parameter instead.
   :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 dest_aws_conn_id: The destination S3 connection
   :param dest_s3_key: The base S3 key to be used to store the files. (templated)
   :param dest_verify: Whether or not to verify SSL certificates for S3 connection.
       By default SSL certificates are verified.
       You can provide the following values:

       - ``False``: do not validate SSL certificates. SSL will still be used
                (unless use_ssl is False), but SSL certificates will not be
                verified.
       - ``path/to/cert/bundle.pem``: A filename of the CA cert bundle to uses.
                You can specify this argument if you want to use a different
                CA cert bundle than the one used by botocore.

   :param replace: Whether or not to verify the existence of the files in the
       destination bucket.
       By default is set to False
       If set to True, will upload all the files replacing the existing ones in
       the destination bucket.
       If set to False, will upload only the files that are in the origin but not
       in the destination 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).
   :param s3_acl_policy: Optional The string to specify the canned ACL policy for the
       object to be uploaded in S3
   :param keep_directory_structure: (Optional) When set to False the path of the file
        on the bucket is recreated within path passed in dest_s3_key.

   .. py:attribute:: template_fields
      :annotation: :Sequence[str] = ['bucket', 'prefix', 'delimiter', 'dest_s3_key', 'google_impersonation_chain']

      

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

      

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

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



