Introduction
If you are familiar with the FME Flow architecture, you’ll be familiar with the FME Flow Engines… the data processing components of FME Flow. The Remote Engines Service enables deploying FME Flow Engines in environments where traditional distributed engines are not feasible. The FME Remote Engines Service for Snowpark enables FME Flow Engines to operate in the Snowflake environment, ensuring secure, proximity-based data processing.
This type of deployment is best suited for reading and writing data in the Snowflake environment. Another use case would be pulling data from external sources and writing it to the Snowflake database, where the data may be enriched with sensitive information before being written to Snowflake tables.
If you are not intending to deploy the FME Remote Engine Service within a Snowflake environment, please see the Leverage Remote Engines Service in FME Flow for more information on deploying Remote Engines.
Available Versions of FME Remote Engines Service
The inaugural version of the FME Remote Engines Service for Snowflake was 2025.1. We currently offer a Trial and a Production version of the Snowflake Native App.
Trial Use
If you have found the FME Remote Engines Service (Trial) on the Snowflake Marketplace, you can launch it for free for 30 days. In order to use the FME Remote Engines Service, you must also have FME Flow available and licensed. FME Flow is required to orchestrate when the Remote Engines Service will run jobs. FME Form, the authoring tool, is also necessary in order to create workspaces and publish them to FME Flow. When the 30-day trial expires, the App will be removed from your account.
Full Product (Production Use)
If you wish to use the FME Remote Engines Service in a production-related environment, there are a few ways to initiate the process:
- If you have initiated or used the free trial from the FME Remote Engines Service (Trial) page on the Snowflake Marketplace, you can click on the Request Full Product button and fill out the ‘Request Full Product’ form. This will allow our team to confirm the requirements (version) and ensure the best experience.
- If you haven’t used the free trial from the FME Remote Engines Service (Trial) on the Snowflake Marketplace, you can click on the Get button and, instead of the option ‘Start Trial’, you can click the ‘Request Full Product’, fill out the required details, and the Safe Software team will follow up.
In both cases, please include your Snowflake Account Identifier and the version of your existing FME Flow that you wish to use with FME Remote Engines Service for Snowflake.
Below is the Contact Provider dialog found on the Marketplace trial page.
You already have the trial, but you want to convert to the Full Product
If you have already started a Trial and want to request the Full Product, you can do so by revisiting the Snowflake Marketplace. Locate the FME Remote Engines Service (Trial) offering and click the Request Full Product button as seen below.
This will open the Request Full Product dialog shown above, where you can submit the request.
This article outlines the steps to add the FME Remote Engines Service App to your Snowflake environment and connect it to an existing FME Flow-licensed environment.
These instructions will focus on the Full Product listing; however, links to the Trial listing instructions are also included where the steps diverge from the Full Product listing.
Before You Begin
1. The private listing for the Remote Engines Service App must have been previously shared with your Snowflake Account (unless using the Marketplace Trial). For more information, contact your Safe Software Account Executive or ensure that you have completed the Request Full Product form.
2. Must have a similar version of FME Flow available to register the Remote Engines Service with. This environment must be licensed and have internet access to communicate with the FME Flow Remote Engine Service in Snowflake. This can be an on-premise environment, a cloud environment or an FME Flow Hosted environment.
If using FME Flow Hosted, please review this article for licensing the Remote Engine Service after it has been configured.
3. It is recommended that you have at least a two-engine license for your existing FME Flow environment: one engine that can operate in the primary FME Flow environment and another engine for the FME Flow Remote Engines Service. Remote Engines can use Standard and CPU Engines. Thus, CPU engines can also be assigned to the Remote Engines.
4. Must have access to the FME Flow superuser or a similarly privileged user in the existing FME Flow environment in order to register the FME Remote Engines Service.
5. You must familiarize yourself with the FME Flow Core’s password policy to ensure the Remote Engines Service is given a secure password (Part 5). If you are unsure about the password policy, visit the FME Flow Documentation here for more information.
6. Must have access to Snowflake Snowsight (the Snowflake web user interface) with an ACCOUNTADMIN Role to replicate, launch, and configure the Snowpark Container Services.
You can switch roles in Snowflake Snowsight by accessing your account menu in the bottom left of the page.
7. You must have appropriate permissions (ACCOUNTADMIN) to create a Snowflake user account of type=service configured with key pair authentication. The private key must NOT have a passphrase associated with it. (Part 4).
8. Once the FME Remote Engines Service App has been launched in the Account, the service user will be granted privileges to access the App (Part 4).
9. The public and private keys of this service user will be used in the FME Flow Core to register the connection to the FME Remote Engines Service (Part 5).
10. To grant the FME Remote Engines Service App access to Snowflake Databases and Schemas in your account, please review the following articles: Authoring for Snowflake Remote Engines and Using FME Remote Engine Service in Snowflake.
11. Please review the general Capabilities and Limitations when running jobs on Remote Engines
12. Ensure you have the Account Identifier for your Account. This can be obtained by running the following SQL in SnowSight: SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME(); More information can be found in the Snowflake Documentation.
Building the FME Remote Engines Service in Snowflake (for the first time)
Part 1: Obtaining FME Remote Engines Service for Snowpark
FME Flow Remote Engines is available as a trial and as a private listing.
To launch the trial listing, visit this article, Building the Trial FME Remote Engines.
It is assumed that you have already obtained access to the Private Listing in your account by following the steps in the section: Full Product (Production Use).
The private listing is intended for development-to-production environments and is version-dependent based on your existing FME Flow environment. It will also have a longer life cycle that aligns with your FME Flow upgrade cycle. This ensures nothing changes in your FME Remote Engines Service App until you decide.
Still looking for the private listing? If you have chosen to have the private listing shared with your account, your Snowflake Administrator will receive an email with the subject Snowflake Marketplace: Request Fulfilled for Listing 'FME Remote Engines Service <version>' from no-reply@snowflake.net indicating that the private listing 'FME Remote Engines Service <version>' has been shared with your account.
The link in the email you received lets you access the listing.
Alternatively, you may also return to Snowflake UI, log into your Snowflake Account (as an ACCOUNTADMIN),
You can find the shared private listing (or App) in two ways: via Apps or Data Sharing.
You will only see a Full Product listing if you have requested it from Safe Software. Trial listings shared with your account will only appear under Apps.
Option 1 - Apps
Click on Apps > Shared with me in the sidebar, and you’ll see any private listing that has been shared with your account.
Option 2 - Data Sharing
Click on Data Sharing > External Sharing > Shared with You, and you should see all privately shared listings. In the example below, you can see the privately shared listing.
Replication of FME Remote Engines Service
If this is NOT the first time launching a particular version of the Private listing, please see these instructions, as the steps are different for an App that has already been replicated to your account.
1. To replicate the App, click the Get button.
Ensure your role is set to ACCOUNTADMIN.
Privately shared listing
The private listing will prompt for the following confirmation, allowing you to customize the Application Name (optional). Click the Get button.
Click the Agree & continue button.
The Getting App Ready dialog will appear.
This will begin the replication from Snowflake AWS West Region to your region.
If you haven’t completed your profile, you may instead be presented with the "Complete your profile to get data products" dialog. Please fill in to continue. You will need to validate your email address before trying again.
2. Wait for the notification that the replication is complete.
Please allow up to two hours for this process to complete, depending on the region to which the application is being replicated. Monitor your email for notifications from no-reply@snowflake.net. Alternatively, you may visit the Data Sharing > External Sharing > Shared with you page in the Snowflake UI.
Please wait for the App to replicate before proceeding to the next step.
3. Start the installation of the FME Remote Engines Service Application
Once you receive the email, you can revisit the Data Sharing > External Sharing > Shared with You page and see that the private listing is available.
Below is an example of a private listing.
Privately shared listing
If you have been shared a private listing, click on the Get button again.
4. Agree to the required permissions for Snowflake Native Apps and continue.
5. Review the Application name and optionally rename it.
Expand the Options and note the Application Name. You will need it later in Part 4. Optionally, you may provide a custom name for the App that will be created. Either way, record the Application Name.
Click Get to install the App into your account.
6. Next, you should see confirmation that the App is being installed.
Next, a confirmation that the App was successfully installed will appear.
Congratulations, you have successfully installed the FME Remote Engines Service into your Snowflake Account.
Part 2: Deploying Remote Engines in Snowpark
In this part, we will deploy the FME Remote Engines Service into Snowflake’s Snowpark Container Services. Once deployed, the FME Remote Engines Service will be available to register with the FME Flow environment (Part 5).
Confirm you’re in the ACCOUNTADMIN role while performing these steps
1. Next, you can click on the Configure button in the previous step or go back to Data Sharing > Shared with You and under Privately Shared Listings, click on FME Remote Engines Service.
2. Click on the Review Button to open the App
Click Review. Review the external access integrations to see the two endpoints that will be accessed.
The integration provides access to the FME Licensing service at fme-licensing.safe.com:443 and a Simple Notification Service (SNS) on AWS, both of which are related to licensing. These two endpoints are the only external access the App has at launch time. They are required for the FME Remote Engines Service to process jobs. Enable the “Connection to FME Licensing Server” toggle.
3. Click on the Save button to dismiss the integrations dialog.
4. Click on the Next button to activate the App.
If you receive an SPCS Action Error, click Retry.
You’ll be presented with the Activating FME Remote Engines Service (Trial)
This will take several minutes to complete. You have two options here: either wait now for the wait for the Application to finish deploying, or revisit the Data Sharing > Private Sharing > Shared with You page later.
If you have waited for the Application to finish deploying, you’ll be presented with the following page. Click the Proceed to app button.
Or, if returning to this later, on the Shared with You page, click the ‘Expand’ button to check the deployment's progress.
5. If the App has been deployed, you’ll be presented with this page.
The App may also appear on the Apps > My Apps page, depending on how long it has been since the application was deployed.
The presence of the Launch app button indicates your Application has deployed correctly.
Part 3: Accessing the Container App
Continuing from Step 2, you’ll now have the option to launch the application. When you complete this step, you’ll be able to log into the Web UI of the FME Remote Engines Service.
1. If the Launch app button is now present, click it. If it is not available, please revisit the steps in Part 2. After launching the app, you’ll need to sign in to your Snowflake account.
2. Once you are signed in to Snowflake, the FME Remote Engines Web UI will be presented. Please log in with the default install credentials
- Username: admin
- Password: admin
Please record the URL in the browser address bar. This will be used in Part 5 to register the FME Remote Engines Services.
Ex: https://ktiros-mycompany-mycompany-az-east.snowflakecomputing.app
It is recommended that you change the password to something more secure before connecting the FME Flow Core to the FME Remote Engines Service. You can do this by accessing the User Profile icon in the top-right corner. When doing this, please enter a new password that matches the password policy on the FME Flow Core system.
Part 4: Creating a Service Account and Granting Permissions to the Application
Create a Service Account User: The service account will be used by the FME Remote Engines Service to access Snowflake Databases and Tables. You must have a Snowflake user account of type=service configured with key-pair authentication. The private key must NOT have a passphrase associated with it. You can create the public and private keys in advance. We provide two approaches for creating the keys: OpenSSL and Cryptool. The instructions are as follows:
- OpenSSL: If using OpenSSL, execute the following commands:
1. openssl genrsa -out /<mypath>/snow_sa_privkey.pem 2048
2. openssl rsa -pubout -in /<mypath>/snow_sa_privkey.pem -outform PEM -out /snow_sa_pubkey.pem
The example shows macOS Terminal. Cygwin and PowerShell can provide command-line access to OpenSSL on Windows OS.
-
Cryptool: If you do not have access to the OpenSSL command line, you may use https://www.cryptool.org/en/cto/openssl/ tool with the following commands:
1.openssl genrsa -out snow_sa_privkey.pem 2048
2.openssl rsa -pubout -in /snow_sa_privkey.pem -outform PEM -out /snow_sa_pubkey.pem
Ensure to remove any line breaks from the output of Cryptool
In both examples, step 1 creates the private key file (without a passphrase), and step 2 creates the public key.
The public key will be used in Snowflake to set the service user's RSA_PUBLIC_KEY.
-
Example SQL:
ALTER USER myappuser SET RSA_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0...AB';
Granting Permissions to the Application: Next, in Snowsight, using the appropriate privileged user (ACCOUNTADMIN), grant the Application Role access to the Role that the Service user will be assigned. The FME Flow Core will use this Service user to access the FME Remote Engines in Snowpark.
From Part 1, Step 5, recall the Application Name. A new role <APPLICATION_NAME>.APP_USER was created during the replication/launching of the FME Remote Engines service in your Snowflake Account.
Example:
GRANT APPLICATION ROLE FME_REMOTE_ENGINES_SERVICE_2026_2.APP_USER
to ROLE SNOWFLAKE_LEARNING_ROLE;
If you forget the Remote Engines Service’s Application name, you can run the following commands:
SHOW APPLICATIONS;
This will return the names of the installed Applications. The default name will be “FME_REMOTE_ENGINES_SERVICE_2026_2” unless changed in Part 1, step 5.
SHOW APPLICATION ROLES IN APPLICATION FME_REMOTE_ENGINES_SERVICE_2026_2;
This will return the name of the application role and should be APP_USER.
Part 5: Connecting FME Flow to the Remote Engines Service
Before beginning, ensure you have superuser permissions in FME Flow. Ensure you have previously created the service user with key pair authentication and correctly granted the appropriate application role to it in Part 4.
1. Open FME Flow.
Log in to the primary FME Flow Core Machine as a user who has a Superuser or Admin Role.
2. Create a new queue for the remote engines service.
Go to Engine Management in the Web UI and click on the Queues tab.
Click Create to create a new queue.
Provide a name and description for the new queue. e.g. “Snowflake RE”. Set the priority of the queue.
Make a note of the queue name, as it will be needed in Step 5, then click Create.
3. Create the Remote Engine Connection.
Go to Engine Management in the Web UI and click on the Remote Engines Service tab. Click Create.
Enter all details on the Create Remote Engines Service Connection page.
- Name: Provide a new name for the Connection
-
URL: The App URL.
- Ex. https://fme123-mycompany-mycompany-az-east.snowflakecomputing.app
- Username and Password: The Username and Password for the FME Flow Remote Engines are set in Part 3: Accessing the Container unless changed since launching.
Next, provide the Snowflake Authentication details. Click the check box to enable Snowflake Authentication.
- Account: The Snowflake Account Identifier obtained from Step 11 in the Before you Begin section. Example, mycompany-mycompany-az-east
- Username: The Snowflake service username created in Part 4, creating a service account.
- Role: This is the role used in Part 4 to grant permissions to the application.
-
Endpoint: Same as App URL with no https://
- Ex. fme123-mycompany-mycompany-az-east.snowflakecomputing.app
- Private Key: as generated.
- Public Key: as generated and applied to the Snowflake User (Username).
Example Details
4. Select the Queue created in Step 2 above.
Assign the number of engines to the Remote Engine Service (minimum 1). This can be a Standard Engine or CPU-Usage Engine (if available). If you do not have a CPU license, the option will be greyed out.
Click on the Test button to ensure the information is correct.
You should see a "Successful" pop-up in the top-right of the Web UI. Save the Changes.
If you encounter any errors, please review the troubleshooting article, Troubleshooting Remote Engines Service in Snowpark.
5. Flow Hosted Only: Request a License
Remote Engines need to be licensed separately on FME Flow Hosted. Go to System Configuration > Licensing and click Request New License under Remote Engine Service. Remote engines will not successfully initialize until they are licensed.
6. Initialize the Remote Engine
Next, click on the Save button to save the FME Remote Engines connection information. The Status will be set to “Initializing”.
In some instances, you may need to refresh the page for the Status to update.
After a few minutes, the Status will change to “Ready”.
You are now ready to test submitting a job to the FME Remote Engines Service.
Part 6: Testing the FME Remote Engines Service by Running a Job
Next, let’s test that we can submit a job to the Remote Engines. Ensure you run a Samples workspace and select the Job Submitter Service.
As seen in the screen grab below, ensure you set the Service to Job Submitter and in the Advanced section select the Job Queue assigned to the Snowflake Remote Engines Service. In this case, the example job queue is set to Snowflake_RE.
Once the job has been submitted successfully, you can review the Jobs page to see the job request in the Completed Jobs tab.
A successful run confirms that the FME Flow environment can submit jobs correctly to the Remote Engines Service in Snowflake.
The Remote Engines Service Job log is available at the REMOTE LOG URL shown above.
When you submit a job to the Remote Engines Service, the FME Flow environment displays the following log entry, indicating that the job has been submitted and where to review the remote job log.
If the job fails to complete, see the Troubleshooting article.
The Job Log is only accessible using the FME Remote Engines Service Web UI.
You can now view the job submitted to the FME Remote Engines Service.
Reviewing Jobs submitted to the Remote Engines Service
When a job is submitted to the Remote Engines Service, the job request is passed to the Remote Engines Service App in the Snowflake environment. The FME Flow Core cannot view the job logs of the FME Remote Engines Service directly.
Therefore, to view job logs for jobs run on the FME Remote Engines Service, you must log into the Remote Engines Service App Web UI. This URL is the same as the one presented in Part 3 and used in Part 5 to register the FME Remote Engines Service. You can also view the Job Log URL in the FME Flow environment by reviewing the job submission (see the previous section).
Log in to the FME Remote Engine Services and click on the Jobs page (left side of the Web UI).
Click on the Completed Jobs to view the jobs that have run on the Remote Engines Service. From here, you can view the job status, view the job log, or download the job log.
Confirm that the Samples Job ran on the Remote Engines Service (as seen below).
You may click on the line item to view the Job Log.
A successful run here means the FME Remote Engine Service received the request and successfully ran the job in the Snowflake environment.
Allowing other Snowflake Users access to the Remote Engine Job Logs
In Part 4, we granted a Snowflake role access to the Remote Engine Services application role. This role can also be granted to other Snowflake roles, giving additional users access to the Remote Engines Login Page to view the job logs.
You will also need the credentials for the FME Remote Engines Service login.
You can now visit Authoring for Snowflake Remote Engines to learn more about authoring workspaces that can process data stored in Snowflake Databases.
Part 7: Deleting and Removing the FME Remote Engines Service App
If you are required to upgrade the version of the FME Remote Engines Service App, you will need to delete the old App. This will also be required when upgrading the FME Flow Core. You may also need to delete it if you decide not to use it anymore.
Follow these steps to remove the old App:
1. Sign in as ACCOUNTADMIN to the Snowsight Account, where your FME Remote Engines Service was deployed. Open a new worksheet. Ensure you are using the correct role.
2. List Applications
- Execute:
SHOW APPLICATIONS;
3. Expected return: FME_REMOTE_ENGINES_SERVICE_TRIAL (unless a different name was entered in Part 1, step 5).
4. Drop the FME Remote Engines Application
- Execute:
DROP APPLICATION FME_REMOTE_ENGINES_SERVICE_2025_1 CASCADE; - Confirmation:
FME_REMOTE_ENGINES_SERVICE_2025_1 successfully dropped.
5. List External Access Integrations to be sure this has also been removed.
- Execute:
SHOW EXTERNAL ACCESS INTEGRATIONS; - You should not see anything; however, if you encounter a line item such as
FME_REMOTE_ENGINES_SERVICE_2025_1_WEB_EAI_EXTERNAL_ACCESS, you will need to drop it manually (see the next step). It is expected that this integration will be dropped when the App is dropped in the previous step.
6. Drop External Security Integration if necessary
- Execute:
DROP EXTERNAL ACCESS INTEGRATIONFME_REMOTE_ENGINES_SERVICE_2025_1_WEB_EAI_EXTERNAL_ACCESS; - Confirmation:
FME_REMOTE_ENGINES_SERVICE_2025_1_WEB_EAI_EXTERNAL_ACCESS successfully dropped.
7. Revisit the FME Flow Core environment and remove the FME Remote Engines Service from the Environment created in Part 4.
If you plan on reusing the service user for a new FME Remote Engines Service deployment, you do not need to delete the user referenced in Part 4. This user can be reused when deploying a new FME Remote Engines Service.
Contact Us and Provide Feedback
As this is a new offering from Safe Software, please don't hesitate to contact our support team or your Safe Software Account Executive.
This article may contain variations in the included screenshots, or the Snowflake Web UI may look different. This may be related to changes and updates to the Snowflake environment. We intend to update this article as needed and welcome any comments.