Setting Backend Options via Python API#
This article will show you how you can use the Python API to set backend options.
Coiled allows users to configure the cloud computing resources they wish
to use (their “backend”) via the coiled.set_backend_options()
command. This
command returns the current account username when invoked
and controls backend settings via keyword arguments. Backend options,
when changed via the Python api will be reflected in the Coiled Cloud
UI, and will persist until changed again via the UI or via
coiled.set_backend_options()
.
Using coiled.set_backend_options#
This function is fully documented in the API Reference section of the Coiled documentation; this tutorial provides some example usage as a supplement to that.
Currently, you can use this command to set your backend so Coiled creates resources in:
Your AWS account
Your Google Cloud Platform (GCP) account
Using your AWS account#
Let’s assume you want to run Coiled in your AWs account, you can do such by running the following command:
coiled.set_backend_options(
backend="aws",
aws_access_key_id="#-your-access-key-ID#",
aws_secret_access_key="######-your-aws-secret-access-key-######",
)
Note that by default, this command will chose us-east-1
as your regions. You can use
the aws_region
parameter to select a different region. For example:
coiled.set_backend_options(
backend="aws",
aws_access_key_id="#-your-access-key-ID#",
aws_secret_access_key="######-your-aws-secret-access-key-######",
aws_region="eu-west-2",
)
Using your GCP account#
If you want to use Coiled in your Google Cloud Platform, the easiest way is to use the path of the json file of your service account (obtained from following the Configuring GCP docs).
coiled.set_backend_options(
backend="gcp", gcp_service_creds_file="/path/to/your/gcp-service-account-creds.json"
)
Alternatively, you can use the gcp_service_creds_dict
if you wish to pass the
credentials as a dictionary instead.
Additional settings#
Regions#
Other settings can be changed via coiled.set_backend_options
. For instance,
AWS regions can also be set:
coiled.set_backend_options(aws_region="us-west-1")
For a list of supported regions, see the Amazon Web Services (AWS).
Container Registries#
It is also possible to specify a Docker registry for your software environments. For example, to use Docker Hub:
coiled.set_backend_options(
registry_type="docker_hub",
registry_uri="docker.io",
registry_username="your-registry-username",
registry_access_token="#######-registry-access-token-######",
)
In using the preceding, keep in mind default Python behavior, which will reset
keyword arguments backend='aws'
, registry_type='ecr'
,
aws_region='us-east-1'
and registry_uri='docker.io'
if they are not
explicitly included in the call. So, if the goal is to use a user specified
Docker Hub container registry while working in GCP, that keyword argument must
also be set:
coiled.set_backend_options(
backend="gcp",
registry_type="docker_hub",
registry_username="your-registry-username",
registry_access_token="#######-registry-access-token-######",
)
Networking#
Note
This feature is available to all cloud providers that Coiled supports.
You can configure custom networking options when Coiled is configured to run in your own AWS account. This allows you to customize the security group ingress rules for resources that Coiled creates in your cloud provider account. For example, you have fine-grain control over the security group by specifying which ports and CIDR block to use when Coiled creates a security group.:
coiled.set_backend_options(
backend="aws",
aws_access_key_id="<your-access-key-id-here>",
aws_secret_access_key="<your-access-key-secret-here>",
customer_hosted=True,
ingress=[{"ports": [100, 8754], "cidr": "10.0.5.1/16"}],
)
For more details on AWS networking, refer to the networking section of the Amazon Web Services (AWS)