class_docstr: This operator enables the transferring of files from S3 to a FTP server.
  
  .. seealso::
      For more information on how to use this operator, take a look at the guide:
      :ref:`howto/operator:S3ToFTPOperator`
  
  :param s3_bucket: The targeted s3 bucket. This is the S3 bucket from
      where the file is downloaded.
  :param s3_key: The targeted s3 key. This is the specified file path for
      downloading the file from S3.
  :param ftp_path: The ftp remote path. This is the specified file path for
      uploading file to the FTP server.
  :param aws_conn_id: reference to a specific AWS connection
  :param ftp_conn_id: The ftp connection id. The name or identifier for
      establishing a connection to the FTP server.
code: def execute(self, context: Context):
      s3_hook = S3Hook(self.aws_conn_id)
      ftp_hook = FTPHook(ftp_conn_id=self.ftp_conn_id)
  
      s3_obj = s3_hook.get_key(self.s3_key, self.s3_bucket)
  
      with NamedTemporaryFile() as local_tmp_file:
          self.log.info("Downloading file from %s", self.s3_key)
          s3_obj.download_fileobj(local_tmp_file)
          local_tmp_file.seek(0)
          ftp_hook.store_file(self.ftp_path, local_tmp_file.name)
          self.log.info("File stored in %s", {self.ftp_path})
  
file_path: airflow/airflow/providers/amazon/aws/transfers/s3_to_ftp.py
imports: from __future__ import annotations
  from tempfile import NamedTemporaryFile
  from typing import TYPE_CHECKING, Sequence
  from airflow.models import BaseOperator
  from airflow.providers.amazon.aws.hooks.s3 import S3Hook
  from airflow.providers.ftp.hooks.ftp import FTPHook
label_desc: Use image node_id 2 for calling the S3ToFTPOperator obj's underlying member method code with example usage: obj.execute(context) without return types