In DNAnexus, a region is an abstraction that unifies access to different cloud providers as well as to different geographical regions in which a single cloud provider may operate. By specifying a region for your DNAnexus resources, you can ensure that your files are stored in (and that your jobs are run in) a particular physical location in order to satisfy data locality requirements or latency requirements.
A region is represented by a string of the form "cloud:geo"; for example, "aws:us-east-1" denotes the "us-east-1" geographical region of the AWS cloud.
Projects and files have affinity to a particular region. A region is chosen for a project at creation time and is fixed throughout the lifetime of the project. All files uploaded to that project will be stored in object storage in the specified region, and all jobs run in that project will be run on instances located in the specified region.
You can clone files between projects in the same region. The DNAnexus Platform does not currently support transferring files or projects across regions. For example, you cannot clone a file in one region to a project of a different region.
Users and organizations have a set of permitted regions that they are allowed to use. In order to create a project in a particular region, the region must be among the permitted regions of the project's
billTo. Please contact DNAnexus support if you wish to obtain access to additional regions.
Users and organizations have a default region, which may be set by the user (or organization administrators, respectively) to any value among the permitted regions. This is the default region that is used when a new project is created and a region is not otherwise specified.
The following API routes consume or return regions:
/user-xxxx/describe and /org-xxxx/describe provide access to the permitted regions and default region of a profile (accessible as
defaultRegion, respectively). If you have permission to see the pricing models of the profile, those are also keyed by region (reflecting possibly different price sheets and instance types available in each region).
/project/new allows setting the region with which the newly created project will be associated.
Region has implications for, among others, the following operations:
As a special case of the above, if an app or applet is to be run in a project, the bundledDepends associated with the executable, the inputs to the executable, and the project itself must exist in the same region.