Skip to content

Commit fdc74a2

Browse files
[Storage] Add coreweave object store (#6519)
* Add coreweave * Format * Format * format * Add conf * Add conf * Add conf * Add conf * format * Add check for createbucket * Add check for createbucket * Add check for createbucket * Add check for createbucket * Add check for createbucket * Add check for createbucket * Change coreweave to be like cloudflare * format * Address comments * support cw object storage * fix storage delete command * remove useless code * disable bucket creation * add ut * update doc * address comments --------- Co-authored-by: DanielZhang <[email protected]>
1 parent 725cc00 commit fdc74a2

File tree

15 files changed

+1541
-40
lines changed

15 files changed

+1541
-40
lines changed

docs/source/getting-started/installation.rst

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,55 @@ Seeweb |community-badge|
694694
api_key = <your-api-token>
695695
696696
697+
CoreWeave
698+
~~~~~~~~~
699+
700+
`CoreWeave <https://www.coreweave.com/>`__ provides S3-compatible object storage that can be used with SkyPilot for storing and accessing data in your workloads.
701+
702+
**Step 1: Configure CoreWeave credentials**
703+
704+
SkyPilot uses separate configuration files for CoreWeave to avoid conflicts with your AWS credentials. Run the following command to configure your CoreWeave access credentials:
705+
706+
.. code-block:: shell
707+
708+
AWS_SHARED_CREDENTIALS_FILE=~/.coreweave/cw.credentials aws configure --profile cw
709+
710+
When prompted, enter your CoreWeave Object Storage credentials:
711+
712+
.. code-block:: text
713+
714+
AWS Access Key ID [None]: <your_access_key_id>
715+
AWS Secret Access Key [None]: <your_secret_access_key>
716+
Default region name [None]:
717+
Default output format [None]: json
718+
719+
**Step 2: Configure the S3 endpoint**
720+
721+
Next, configure the endpoint URL and addressing style for CoreWeave Object Storage. This tells AWS CLI how to connect to CoreWeave's S3-compatible service:
722+
723+
.. code-block:: shell
724+
725+
# For external access (outside CoreWeave CKS clusters)
726+
AWS_CONFIG_FILE=~/.coreweave/cw.config aws configure set endpoint_url https://cwobject.com --profile cw
727+
AWS_CONFIG_FILE=~/.coreweave/cw.config aws configure set s3.addressing_style virtual --profile cw
728+
729+
.. note::
730+
731+
**Choosing the right endpoint**:
732+
733+
- **External access (recommended)**: Use ``https://cwobject.com`` when launching SkyPilot clusters in non-CoreWeave CKS clusters. This endpoint is accessible from anywhere and uses secure HTTPS.
734+
735+
- **Internal access (advanced)**: Use ``http://cwlota.com`` only if you are launching SkyPilot clusters inside CoreWeave CKS clusters and do not need to upload local data to the bucket. The LOTA endpoint provides faster access within CoreWeave's network but only supports HTTP and is not accessible externally. Refer to `LOTA documentation <https://docs.coreweave.com/docs/products/storage/object-storage/lota/about>`_ for more details.
736+
737+
**Obtaining your credentials**
738+
739+
To get your CoreWeave Object Storage Access Key ID and Secret Access Key:
740+
741+
1. Log into your `CoreWeave Cloud console <https://cloud.coreweave.com/>`__.
742+
2. Navigate to **Object Storage** → **Keys** in the left sidebar.
743+
3. Generate a new key pair.
744+
745+
697746
Request quotas for first time users
698747
--------------------------------------
699748

docs/source/reference/storage.rst

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Cloud Buckets
44
==============
55

6-
SkyPilot tasks can access data from buckets in cloud object storages such as AWS S3, Google Cloud Storage (GCS), Cloudflare R2, OCI Object Storage or IBM COS.
6+
SkyPilot tasks can access data from buckets in cloud object storages such as AWS S3, Google Cloud Storage (GCS), Cloudflare R2, CoreWeave Object Storage, OCI Object Storage or IBM COS.
77

88
Buckets are made available to each task at a local path on the remote VM, so
99
the task can access bucket objects as if they were local files.
@@ -28,7 +28,7 @@ Object storages are specified using the :code:`file_mounts` field in a SkyPilot
2828
# Mount an existing S3 bucket
2929
file_mounts:
3030
/my_data:
31-
source: s3://my-bucket/ # or gs://, https://<azure_storage_account>.blob.core.windows.net/<container>, r2://, cos://<region>/<bucket>, oci://<bucket_name>
31+
source: s3://my-bucket/ # or gs://, https://<azure_storage_account>.blob.core.windows.net/<container>, r2://, cw://, cos://<region>/<bucket>, oci://<bucket_name>
3232
mode: MOUNT # MOUNT or COPY or MOUNT_CACHED. Defaults to MOUNT. Optional.
3333
3434
This will `mount <storage-mounting-modes_>`__ the contents of the bucket at ``s3://my-bucket/`` to the remote VM at ``/my_data``.
@@ -45,7 +45,7 @@ Object storages are specified using the :code:`file_mounts` field in a SkyPilot
4545
file_mounts:
4646
/my_data:
4747
name: my-sky-bucket
48-
store: gcs # Optional: either of s3, gcs, azure, r2, ibm, oci
48+
store: gcs # Optional: either of s3, gcs, azure, r2, coreweave, ibm, oci
4949
5050
SkyPilot will create an empty GCS bucket called ``my-sky-bucket`` and mount it at ``/my_data``.
5151
This bucket can be used to write checkpoints, logs or other outputs directly to the cloud.
@@ -68,7 +68,7 @@ Object storages are specified using the :code:`file_mounts` field in a SkyPilot
6868
/my_data:
6969
name: my-sky-bucket
7070
source: ~/dataset # Optional: path to local data to upload to the bucket
71-
store: s3 # Optional: either of s3, gcs, azure, r2, ibm, oci
71+
store: s3 # Optional: either of s3, gcs, azure, r2, coreweave, ibm, oci
7272
mode: MOUNT # Optional: either MOUNT or COPY. Defaults to MOUNT.
7373
7474
SkyPilot will create a S3 bucket called ``my-sky-bucket`` and upload the
@@ -162,11 +162,16 @@ its performance requirements and size of the data.
162162
The targets must be separately mounted or else the symlinks may break.
163163

164164
.. note::
165-
**Architecture compatibility**: S3 storage mounting (including S3-compatible services like
166-
Cloudflare R2 and Nebius) works on all architectures including ARM64 (e.g., Apple Silicon,
167-
AWS Graviton). SkyPilot automatically uses the optimal mounting tool for each architecture:
165+
**Architecture compatibility**: S3 storage mounting (including S3-compatible services like
166+
Cloudflare R2, CoreWeave Object Storage, and Nebius) works on all architectures including ARM64 (e.g., Apple Silicon,
167+
AWS Graviton). SkyPilot automatically uses the optimal mounting tool for each architecture:
168168
goofys for x86_64 and rclone for ARM64.
169169

170+
.. note::
171+
CoreWeave buckets may take a long time to become accessible after creation.
172+
Therefore, SkyPilot does not automatically create them.
173+
Please manually create your CoreWeave bucket and verify its accessibility before using it.
174+
170175
.. _mount_cached_mode_in_detail:
171176

172177
MOUNT_CACHED mode in detail
@@ -344,14 +349,15 @@ Storage YAML reference
344349
- gs://<bucket_name>
345350
- https://<azure_storage_account>.blob.core.windows.net/<container_name>
346351
- r2://<bucket_name>
352+
- cw://<bucket_name>
347353
- cos://<region_name>/<bucket_name>
348354
- oci://<bucket_name>@<region>
349355
350356
If the source is local, data is uploaded to the cloud to an appropriate
351-
bucket (s3, gcs, azure, r2, oci, or ibm). If source is bucket URI,
357+
bucket (s3, gcs, azure, r2, coreweave, oci, or ibm). If source is bucket URI,
352358
the data is copied or mounted directly (see mode flag below).
353359
354-
store: str; either of 's3', 'gcs', 'azure', 'r2', 'ibm', 'oci'
360+
store: str; either of 's3', 'gcs', 'azure', 'r2', 'coreweave','ibm', 'oci'
355361
If you wish to force sky.Storage to be backed by a specific cloud object
356362
storage, you can specify it here. If not specified, SkyPilot chooses the
357363
appropriate object storage based on the source path and task's cloud provider.

0 commit comments

Comments
 (0)