There are many reasons that a company might choose to host Prismatic integrations in multiple regions:
- They need to adhere to GDPR, keeping EU-based customers' data in the EU, and US-based customers' data in the US
- They have CJIS or ITAR requirements and need to keep customer data in GovCloud, but would like to test integrations in commercial
- They need low latency between their app and Prismatic, so host certain integrations in Australia or the EU
- They might host Prismatic in a private cloud to fulfil customer requirements
Whatever the reason, if you host integrations in multiple Prismatic stacks you need to keep your components and integrations in sync between regions.
Prismatic's public regions are accessible through the following URLs:
|US Commercial (Ohio)||https://app.prismatic.io|
If your enterprise contract includes a private cloud deployment, see Prismatic support for your endpoint URL.
By default, new Prismatic accounts are added to the US Commercial (Ohio) region, app.prismatic.io. Access to additional regions can be enabled by Prismatic for enterprise customers whose contracts include additional regions.
Users need to be added to each region
User authentication spans across all regions, so you can use the same email and password to log in to each region. However, user data is not shared across regions. Once your organization has been enabled by Prismatic support in an additional region, you will need to invite your team members to the new region in order for them to log in to your tenant.
The prism CLI tool interacts with the US Commercial region by default.
In order to interact with an additional region, set a
PRISMATIC_URL environment variable with the endpoint of the region you want:
$ prism loginPress any key to open prismatic.io in your default browser:Login complete! $ prism meName: John DoeEmail: email@example.comOrganization: Example Corp - US RegionEndpoint URL: https://app.prismatic.io $ export PRISMATIC_URL=https://app.eu-west-1.prismatic.io$ prism loginPress any key to open prismatic.io in your default browser:Login complete! $ prism meName: John DoeEmail: firstname.lastname@example.orgOrganization: Example Corp - EU RegionEndpoint URL: https://app.eu-west-1.prismatic.io
If you use
prism on a headless system (like a CI/CD pipeline or when running automated scripts), you will need to generate a refresh token.
See docs on Headless prism Usage.
Behind the scenes, an integration is saved as a YAML definition that outlines the flows, steps, configuration and config variables that make up the integration. Integrations can be copied between regions by downloading an integration's YAML definition from one region, and importing the YAML file into another region.
To access an integration's YAML definition from the integration builder, click MANAGE, and then Save/Load to open the Save/Load drawer. From there, you can copy the YAML definition to your clipboard, or download the YAML file to your computer.
To access an integration's YAML definition using
prism, identify the integration's ID by running
prism integrations:list --extended, or by copying the
SW5..... portion of your integration's URL when you have it open.
prism integrations:export SW50ZWdyYXRpb246YmE0NGU5NmQtYWMzOS00MDMxLTg4MmUtMWQyNzA5ZjY5MDg0 > my-file.yaml
Component Versions Across Regions
Component versions may not be consistent between regions. For example, you might publish an "Acme Inc" component 50 times during testing on the US Commercial stack, and only twice on your Europe tenant. In that case, "v50" in the US stack would correspond to "v2" in the Europe stack. A YAML file that specifies "Acme Inc v50" would mean nothing to the Europe stack.
To avoid version mismatches, export your YAML definition using the Save to file with latest component versions button in the UI, or by adding the
--latest-components flag to your
prism integrations:export --latest-components SW50Z...
When you import your integration in another region, the latest versions of each component will be used.
Once you have the YAML definition of your integration, you can import the integration through the UI or using
In the integration designer, you can open up the Save/Load drawer once again, and then time click Load from clipboard or Load from file.
Using prism, run
prism integrations:import --path ./my-file.yaml to import your YAML file.
Troubleshooting: If you get any errors, ensure that the custom components that you used in your source stack are also deployed to your destination stack. You may have an older version of your custom component that is missing some actions, inputs, etc.
When you publish a component, the component is published to a single region.
If you would like to publish a built component to multiple regions, you will need to log in to each region and run
Alternatively, you can store a refresh token for each region. Then, you can push the component to whichever region you like:
# Publish to default US commercial regionprism components:publish # Publish to EU with inline environment variablesPRISM_REFRESH_TOKEN=your-eu-refresh-token PRISMATIC_URL=https://app.eu-west-1.prismatic.io prism components:publish # Publish to GovCloud by exporting environment variablesexport PRISM_REFRESH_TOKEN=your-govcloud-refresh-tokenexport PRISMATIC_URL=https://app.us-gov-west-1.prismatic.ioprism components:publish
Note that component versions increment independently in each region.
If you've published your custom component 50 times to US Commercial, and 10 versions to the Sydney region, the same component code will be seen as
If you would like to develop integrations and custom components in one tenant, and automatically deploy them to another, you can save your custom component code and integration YAML in a version control system (like a git repo), and configure a CI/CD pipeline to automatically deploy new versions of components and integrations when code passes QA and is merged to your production branch.
Once components are published, you can use the same
prism authentication you used for components to import integrations.
prism integrations:import command will return an integration ID (SW50Z....).
Using that integration ID, you can publish a new version of your integration:
prism integrations:publish SW50Z... --comment "My publication comment"
integrations:publish command will return an integration version ID (SW50Z...).
You can use that ID along with the
updateInstance GraphQL mutation to update deployed instances to the latest published version of your integration.