coiled / feedback

A place to provide Coiled feedback
14 stars 3 forks source link

STS appears not to be working from JHub environment #253

Closed amfriesz closed 11 months ago

amfriesz commented 11 months ago

(this is Matt on Aaron's computer)

We're running into an issue where we're unable to access S3 data on a Coiled worker. We are able to access that data locally. This is running on a 2I2C openscapes deployment.

https://cloud.coiled.io/clusters/245329/overview?account=nasa-openscapes

We're doing something like the following:

bucket = 's3://npwbanalres'
s3 = s3fs.S3FileSystem(anon=False)
rain_urls = s3.glob(f'{bucket}/*rain.nc4')
aet_urls = s3.glob(f'{bucket}/*aet.nc4')

def gen_json(u):
    so = dict(
        mode= "rb", 
        anon= False, 
        default_fill_cache= False,
        default_cache_type= "none"
    )
    with s3.open(u, **so) as infile:
        h5chunks = SingleHdf5ToZarr(infile, u, inline_threshold=300)
        with s3.open(f"s3://openscapes-cloud-experiments/{u.split('/')[-1]}.json", 'wb') as outf: # write to s3
            outf.write(ujson.dumps(h5chunks.translate()).encode())

reference_files = []
for url in aet_urls:
    ref = dask.delayed(gen_json)(url)  # this fails, but if we remove dask.delayed it works
    reference_files.append(ref)

reference_files_compute = dask.compute(*reference_files)

If we use Dask + Coiled we fail with a permission error, which makes me think that the STS forwarding isn't working (although I'm not seeing anything bad in logs). Maybe permissions in a 2I2C environment are different somehow? He's also put in his credentials in his .aws directory.

Traceback ```python-traceback import xarray as xr import dask import ujson import s3fs import fsspec from glob import glob import pathlib import hvplot.xarray import coiled ​ from kerchunk.hdf import SingleHdf5ToZarr from kerchunk.combine import MultiZarrToZarr ​ # The xarray produced from the reference file throws a SerializationWarning for each variable. Will need to explore why import warnings warnings.simplefilter("ignore") Start up a Dask Client to monitor Dask processing import coiled cluster = coiled.Cluster( n_workers=10, region='us-west-2', account='nasa-openscapes', name="play", shutdown_on_close=False, ) client = cluster.get_client() ╭────────────────────────────────────────── Package Sync ──────────────────────────────────────────╮ │ Fetching latest package priorities ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0:00:00 │ │ Scanning 477 conda packages ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0:00:00 │ │ Scanning 305 python packages ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0:00:00 │ │ Running pip check ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0:00:02 │ │ Validating environment ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0:00:02 │ │ Requesting package sync build ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0:00:00 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ jupyterlab-server 2.22.1 has requirement requests>=2.28, but you have requests 2.27.1. Package - jupyterlab-server, Pip check had the following issues that need resolving: jupyterlab-server 2.22.1 has requirement requests>=2.28, but you have requests 2.27.1. ╭──────────────────────────────────── Not Synced with Cluster ─────────────────────────────────────╮ │ ╷ ╷ │ │ Package │ Error │ Risk │ │ ╶───────────────────┼────────────────────────────────────────────────────────────────┼─────────╴ │ │ jupyterlab-server │ Pip check had the following issues that need resolving: │ Warning │ │ │ jupyterlab-server 2.22.1 has requirement requests>=2.28, but │ │ │ │ you have requests 2.27.1. │ │ │ ╵ ╵ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────── Coiled Cluster ─────────────────────────────────────────╮ │ https://cloud.coiled.io/clusters/245329/overview?account=nasa-openscapes │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────── Overview ───────────────────╮╭──────────────── Configuration ─────────────────╮ │ ││ │ │ Cluster Name: nasa-openscapes-84441220-a ││ Region: us-west-2 │ │ ││ │ │ Scheduler Status: started ││ Scheduler Instance Type: m6i.xlarge │ │ ││ │ │ Dashboard Address: ││ Worker Instance Type(s): m6i.xlarge (10) │ │ [https://cluster-zddwe.dask.host?token=y6qr0LME](https://cluster-zddwe.dask.host/?token=y6qr0LME_3ZHXMBZ) ││ │ │ [_3ZHXMBZ](https://cluster-zddwe.dask.host/?token=y6qr0LME_3ZHXMBZ) ││ Workers Requested: 10 │ │ ││ │ ╰────────────────────────────────────────────────╯╰────────────────────────────────────────────────╯ ╭─────────────────────────────────── (2023/07/20 15:47:55 UTC) ────────────────────────────────────╮ │ │ │ Most of your workers have arrived. Cluster ready for use. │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ #from dask.distributed import Client #client = Client(n_workers=4) #client Identify the S3 bucket bucket = 's3://npwbanalres' Connect to the S3 bucket and list files it contains s3 = s3fs.S3FileSystem(anon=False) #s3.ls(bucket) urls_all = s3.glob(f'{bucket}/*.nc4') urls_all rain_urls = s3.glob(f'{bucket}/*rain.nc4') aet_urls = s3.glob(f'{bucket}/*aet.nc4') Create Kerchunk file for each data asset/.nc4 file def gen_json(u): so = dict( mode= "rb", anon= False, default_fill_cache= False, default_cache_type= "none" ) with s3.open(u, **so) as infile: h5chunks = SingleHdf5ToZarr(infile, u, inline_threshold=300) with s3.open(f"s3://openscapes-cloud-experiments/{u.split('/')[-1]}.json", 'wb') as outf: # write to s3 outf.write(ujson.dumps(h5chunks.translate()).encode()) # def gen_json(u): # so = dict( # mode= "rb", # anon= False, # default_fill_cache= False, # default_cache_type= "none" # ) # with s3.open(u, **so) as infile: # h5chunks = SingleHdf5ToZarr(infile, u, inline_threshold=300) # with open(f"jsons/{u.split('/')[-1]}.json", 'wb') as outf: # outf.write(ujson.dumps(h5chunks.translate()).encode()) Create a json directory to write Kurchunk files to #pathlib.Path('./jsons/').mkdir(exist_ok=True) Use Dask to process multiple files in parallel reference_files = [] for url in aet_urls: ref = dask.delayed(gen_json)(url) reference_files.append(ref) ​ reference_files_compute = dask.compute(*reference_files) --------------------------------------------------------------------------- ClientError Traceback (most recent call last) File /opt/coiled/env/lib/python3.9/site-packages/s3fs/core.py:113, in _error_wrapper() File /opt/coiled/env/lib/python3.9/site-packages/aiobotocore/client.py:371, in _make_api_call() ClientError: An error occurred (AccessDenied) when calling the PutObject operation: No AWSAccessKey was presented. The above exception was the direct cause of the following exception: PermissionError Traceback (most recent call last) Cell In[12], line 6 3 ref = dask.delayed(gen_json)(url) 4 reference_files.append(ref) ----> 6 reference_files_compute = dask.compute(*reference_files) File /srv/conda/envs/notebook/lib/python3.9/site-packages/dask/base.py:599, in compute(traverse, optimize_graph, scheduler, get, *args, **kwargs) 596 keys.append(x.__dask_keys__()) 597 postcomputes.append(x.__dask_postcompute__()) --> 599 results = schedule(dsk, keys, **kwargs) 600 return repack([f(r, *a) for r, (f, a) in zip(results, postcomputes)]) File /srv/conda/envs/notebook/lib/python3.9/site-packages/distributed/client.py:3224, in Client.get(self, dsk, keys, workers, allow_other_workers, resources, sync, asynchronous, direct, retries, priority, fifo_timeout, actors, **kwargs) 3222 should_rejoin = False 3223 try: -> 3224 results = self.gather(packed, asynchronous=asynchronous, direct=direct) 3225 finally: 3226 for f in futures.values(): File /srv/conda/envs/notebook/lib/python3.9/site-packages/distributed/client.py:2359, in Client.gather(self, futures, errors, direct, asynchronous) 2357 else: 2358 local_worker = None -> 2359 return self.sync( 2360 self._gather, 2361 futures, 2362 errors=errors, 2363 direct=direct, 2364 local_worker=local_worker, 2365 asynchronous=asynchronous, 2366 ) File /srv/conda/envs/notebook/lib/python3.9/site-packages/distributed/utils.py:351, in SyncMethodMixin.sync(self, func, asynchronous, callback_timeout, *args, **kwargs) 349 return future 350 else: --> 351 return sync( 352 self.loop, func, *args, callback_timeout=callback_timeout, **kwargs 353 ) File /srv/conda/envs/notebook/lib/python3.9/site-packages/distributed/utils.py:418, in sync(loop, func, callback_timeout, *args, **kwargs) 416 if error: 417 typ, exc, tb = error --> 418 raise exc.with_traceback(tb) 419 else: 420 return result File /srv/conda/envs/notebook/lib/python3.9/site-packages/distributed/utils.py:391, in sync..f() 389 future = wait_for(future, callback_timeout) 390 future = asyncio.ensure_future(future) --> 391 result = yield future 392 except Exception: 393 error = sys.exc_info() File /srv/conda/envs/notebook/lib/python3.9/site-packages/tornado/gen.py:767, in Runner.run(self) 765 try: 766 try: --> 767 value = future.result() 768 except Exception as e: 769 # Save the exception for later. It's important that 770 # gen.throw() not be called inside this try/except block 771 # because that makes sys.exc_info behave unexpectedly. 772 exc: Optional[Exception] = e File /srv/conda/envs/notebook/lib/python3.9/site-packages/distributed/client.py:2222, in Client._gather(self, futures, errors, direct, local_worker) 2220 exc = CancelledError(key) 2221 else: -> 2222 raise exception.with_traceback(traceback) 2223 raise exc 2224 if errors == "skip": Cell In[7], line 11, in gen_json() 9 h5chunks = SingleHdf5ToZarr(infile, u, inline_threshold=300) 10 with s3.open(f"s3://openscapes-cloud-experiments/{u.split('/')[-1]}.json", 'wb') as outf: # write to s3 ---> 11 outf.write(ujson.dumps(h5chunks.translate()).encode()) File /opt/coiled/env/lib/python3.9/site-packages/fsspec/spec.py:1867, in __exit__() File /opt/coiled/env/lib/python3.9/site-packages/fsspec/spec.py:1834, in close() File /opt/coiled/env/lib/python3.9/site-packages/fsspec/spec.py:1705, in flush() File /opt/coiled/env/lib/python3.9/site-packages/s3fs/core.py:2227, in _upload_chunk() File /opt/coiled/env/lib/python3.9/site-packages/s3fs/core.py:2242, in commit() File /opt/coiled/env/lib/python3.9/site-packages/s3fs/core.py:2094, in _call_s3() File /opt/coiled/env/lib/python3.9/site-packages/fsspec/asyn.py:115, in wrapper() File /opt/coiled/env/lib/python3.9/site-packages/fsspec/asyn.py:100, in sync() File /opt/coiled/env/lib/python3.9/site-packages/fsspec/asyn.py:55, in _runner() File /opt/coiled/env/lib/python3.9/site-packages/s3fs/core.py:348, in _call_s3() File /opt/coiled/env/lib/python3.9/site-packages/s3fs/core.py:140, in _error_wrapper() PermissionError: No AWSAccessKey was presented. ```
ntabris commented 11 months ago

Might be helpful if you could run this and let me know what you see:

from coiled.utils import get_aws_identity
# check local identity
get_aws_identity()
# check aws identity from cluster
client.submit(coiled.utils.get_aws_identity)
mrocklin commented 11 months ago

Aaron sent this by e-mail. We weren't sure if this information was sensitive or not.

On Thu, Jul 20, 2023 at 12:07 PM Nat Tabris @.***> wrote:

Might be helpful if you could run this and let me know what you see:

from coiled.utils import get_aws_identity# check local identityget_aws_identity()# check aws identity from clusterclient.submit(coiled.utils.get_aws_identity)

— Reply to this email directly, view it on GitHub https://github.com/coiled/feedback/issues/253#issuecomment-1644200527, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACKZTBVUZHW3FXZ2KAVKKDXRFJUVANCNFSM6AAAAAA2RUX3GM . You are receiving this because you are subscribed to this thread.Message ID: @.***>

--

https://coiled.io

Matthew Rocklin CEO, Dask Maintainer

mrocklin commented 11 months ago

The result is that local and remote look the same, so STS appears to be working as expected.

@ntabris had the recommendation that maybe we're running the Coiled cluster in a different region, and the bucket has permissions so that it can only be read in that one region. That would certainly explain things.

Some things to do:

  1. Try the region= keyword to coiled.Cluster to specify the region explicitly (@amfriesz can you do this?)
  2. If that works, then let's change the default region of the openscapes account to be the same as where your JupyterHub deployment is. This will make default behavior more sensible.
  3. Thinking here more broadly, if we identify that we're on an AWS region should we default to that region. Probably the answer is "no" because we already record a default region and we should use that. Just mentioning it.
shughes-uk commented 11 months ago

I think i'm -1 on changing the cluster creation region if we identify we're launching a cluster from a certain region, that's unexpected magic that might be very annoying to those who use the default region feature. A warning might be ok.

mrocklin commented 11 months ago

I think i'm -1 on changing the cluster creation region if we identify we're launching a cluster from a certain region, that's unexpected magic that might be very annoying to those who use the default region feature. A warning might be ok.

Yeah, not pushing (and I think I agree with you). Just bringing up the idea.

amfriesz commented 11 months ago

@mrocklin,

Try the region= keyword to coiled.Cluster to specify the region explicitly (@amfriesz can you do this?)

The region keyword was specified in the coiled.Cluster. It was set to us-west-2

mrocklin commented 11 months ago

In what region is your 2i2c hub running?

On Thu, Jul 20, 2023, 4:15 PM Aaron Friesz @.***> wrote:

@mrocklin https://github.com/mrocklin,

Try the region= keyword to coiled.Cluster to specify the region explicitly @.*** https://github.com/amfriesz can you do this?)

The region keyword was specified in the coiled.Cluster. It was set to us-west-2

— Reply to this email directly, view it on GitHub https://github.com/coiled/feedback/issues/253#issuecomment-1644541467, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACKZTES73PRB7J5QV6ERETXRGGXJANCNFSM6AAAAAA2RUX3GM . You are receiving this because you were mentioned.Message ID: @.***>

amfriesz commented 11 months ago

The 2i2c hub is in us-west-2. So is the bucket we are trying to write to.

shughes-uk commented 11 months ago

Can you try defining your s3 filesystem like this instead?

s3 = s3fs.S3FileSystem(anon=False, client_kwargs={'endpoint_url':'https://s3-us-west-2.amazonaws.com/'})
ntabris commented 11 months ago

I'm slightly stumped at the moment.

I did just remember that https://github.com/coiled/benchmarks/issues/207 showed the same error message, so it might be worth trying to pass region_name to s3fs.

amfriesz commented 11 months ago

I'm now having a problem starting the cluster.

import coiled
cluster = coiled.Cluster(
    n_workers=10, 
    region='us-west-2', 
    account='nasa-openscapes',
    name="play",
    shutdown_on_close=False,
)
client = cluster.get_client()

The above code gives me the Traceback below

Traceback ```python --------------------------------------------------------------------------- ClusterCreationError Traceback (most recent call last) Cell In[5], line 2 1 import coiled ----> 2 cluster = coiled.Cluster( 3 n_workers=10, 4 region='us-west-2', 5 account='nasa-openscapes', 6 #name="play", 7 shutdown_on_close=False, 8 ) 9 client = cluster.get_client() File /srv/conda/envs/notebook/lib/python3.9/site-packages/coiled/_beta/cluster.py:561, in Cluster.__init__(self, name, software, n_workers, worker_class, worker_options, worker_vm_types, worker_cpu, worker_memory, worker_disk_size, worker_gpu, worker_gpu_type, scheduler_class, scheduler_options, scheduler_vm_types, scheduler_cpu, scheduler_memory, scheduler_gpu, asynchronous, cloud, account, shutdown_on_close, use_scheduler_public_ip, use_dashboard_https, credentials, credentials_duration_seconds, timeout, environ, tags, send_dask_config, backend_options, show_widget, configure_logging, wait_for_workers, package_sync, package_sync_strict, package_sync_ignore, package_sync_fail_on, private_to_creator, use_best_zone, compute_purchase_option, scheduler_port, allow_ingress_from, allow_ssh, jupyter, region, arm) 559 if self.cluster_id: 560 log_cluster_debug_info(self.cluster_id, self.account) --> 561 raise e.with_traceback(None) 562 except KeyboardInterrupt as e: 563 error = e ClusterCreationError: Cluster status is error (reason: Workers all had error -> Environment failed to download: 404 Client Error: Not Found for url: https://prod-coiled-cloud-env.s3.amazonaws.com/software-environments/prod/builds/nasa-openscapes/33033-8f7a6f2d3069c6dbf5363ab689ef52c2/21631/67.tar.lz4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAREGOQM364NA5M2R4%2F20230720%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20230720T210259Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECMaCXVzLWVhc3QtMiJHMEUCIQD5KwUuA%2BMxc9Aa23QyKQ9HE9DxSOMME8fb%2FNN9Gy44vgIgU6Eo8C%2FpymYg4y5Fh5RU8DBDtcSpngX%2BCGkyRm8WgeQq6AMIrP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARABGgwwNzc3NDI0OTk1ODEiDMVAHy4xRw3qkzwswCq8A2ZoMDXNoTvyGl8QAPl1MA1Oe6YxvroHGghz0KzVyL4er46iJoNcUlbqpCclWcjsRhhWzssnvp2Vn6XEiOmJ05h2OjgIuVNtMLZaTLV8Z%2B4%2Bewzh%2FKJSQ0eO5hj0L18QeFc4xloN96R326FWazHiUO3PijvYY85RYqIOHfGAW%2F8zyLylpU%2FsGEKh6sZm9gOuSsXauBMc8jvWZXsBNRCUFtYjPftL6MOGuHoXb%2BubBW8dZ%2Ff8LmGmvmhtm%2F1Ncpq1OELZV6Z94PONMaTFBt7dK%2BM32eG9ISFL7qOfaF50fq9W04fuv7%2BD8HI2DxkmaYCuWC6N4mLvJhxni97bw2lINENcCKkHmcdX1s%2BD2R%2BV6KDEYC%2BretiaPyQPcQd75IpMID7y2iW%2BFHKyUmwgNJbpPq%2Bwk3qRzmIT%2Bx%2FJ0zxRfyUAVkT2NNR6ByH%2BPZmgZPO8EqT0ztt4o0lRhkv75GHUFQM5sPvPsdmeWfufvbMmTdrZXXl8uoA%2BhKUtECtwpzH8i71ZJKleeH6nS43VCG%2FR5au5%2B7%2FIxU%2BHBqEtiYfxgI%2F3Soy0ojVxIyk%2BEW5%2B7h37tTIYKp5hLTEffb%2BiTDCL%2F%2BWlBjqlAQ0C8WlvD4N4U7YlXBtjKhLnZfLyZHvFBT4a7kRPWOqJ%2FB5LYX3F4aQ%2BIQFgSCYbhGzSdM2w0DKBu52f2bKrtDNK11oNhbBQ%2Bl7hwkOAjqehln8FuHJ9mx8jt%2FxQaaPApSTjMhQ8W%2BC%2FXiV3oTgBeUijeoIZZzO3EeckP98KKEEG7bN8jkQqeDBDsmcYikaVr3YSy2aQ0OMP5M9JdyKSJelWj3PG1w%3D%3D&X-Amz-Signature=b6f489a5cfcf2875cb52927fb4f1bcdd7b97be32c907ac5a64ee4ba268f5b192 / Environment failed to download: 404 Client Error: Not Found for url: https://prod-coiled-cloud-env.s3.amazonaws.com/software-environments/prod/builds/nasa-openscapes/33033-8f7a6f2d3069c6dbf5363ab689ef52c2/21631/67.tar.lz4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAREGOQM366BWKN2KV%2F20230720%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20230720T210253Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECUaCXVzLWVhc3QtMiJHMEUCIQCPq7KQNR%2FbncHj4RpMXgu7e%2BFCksMXeN1NnUH3jU%2BpPAIgIMFBDwcnxtXB%2BqedyzMu4y0G8YZgBxJHIwLf%2BLYybQkq6AMIrv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARABGgwwNzc3NDI0OTk1ODEiDLM66%2BVGmsrRjOha5yq8A%2Fd7zxsQnSBGG4ve1piF%2FOmS5MfWQa8PWJgsCc8OZhIqCZx7NFhSFJ%2Flre5A4ttKGLZ9h3N2Ft%2FCo0hKVXGbq5zp91AJADm%2FuCK1OhGCPcUJbgY4k1YyVSnA7e%2FZdx5%2BQpQsZEi248GogblYOpYkHJqiZqad25CytH1O%2Bn7E8heXpo3%2FdGhs9z21uFv9TxsI4bTCZKYfAItZ2lAv4K1Ksvo5fugdT7%2FPfUG205zCBurpMENStO78023P7s2yY9%2FKu%2BQijNqGTPHmloVmJKYBnYh%2BJRxgpJ2CZA9BVftomGm%2FiDyZn0NTFJJJ8LWebO4vK9vtEripgkKwvfwi7Wh7yjDSeR6%2B6XZe1R52%2FkP%2BQOkMHqBY8LkYhCn9t8QUMLHCqsbyTJ1aln0GJLRxDRmHWDvO%2FvoKJgEMlBya5zcFzn2sIAioZi780GtoyElEYB3EXkA7MD5pCQbaetZCRv9Fhkggf2WHM2EUR8Or%2BtXSBp5VjUxnKte6gLxaJRoTC9vzU4OHkrt6bxbuQW1U36bh%2FhWXw773KdEBzDxHUTpSm2KVrDnK2eysHumtfOdh0hlJp%2FtZWx8A0lUayr0DwTC8tualBjqlAf6wvg7es1O4teGzGoUSIoqouhoDjKNuDYwD2VyMVnSM0CBZX3wgzDuUytjfvJPVs46YduRnnN7rP1Mj1ecd3GojmtT6Z8vSgQ5JlXIrotWkP0w4zpAbL21%2FMYvjWP2I1mnzLBoHJv%2Fi6LzLYv4Jon7LjFRjhxuptiaUD7Clif4TwUbKRgHsD5M5EhuvoBxCFoggPGpnCCQ1CwHJ3I7NugxzQvDKTw%3D%3D&X-Amz-Signature=9a519d5e86dd4a1a7c36e77ce0690b5781a72cdbed3dafc7ef99f6f195389722 / Environment failed to download: 404 Client Error: Not Found for url: https://prod-coiled-cloud-env.s3.amazonaws.com/software-environments/prod/builds/nasa-openscapes/33033-8f7a6f2d3069c6dbf5363ab689ef52c2/21631/67.tar.lz4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAREGOQM36S4CVKUNC%2F20230720%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20230720T210256Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECMaCXVzLWVhc3QtMiJHMEUCIQCBP7R9c%2BUg0pwiR47WqUXdSU3bt%2Blf3edgKz%2BXD3JcJgIgHNFo1AkgX%2FTps04zemILzbamMo1laR253dYQDTQXSmgq6AMIrP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARABGgwwNzc3NDI0OTk1ODEiDJx5pG8GiO1Ke9YXySq8A4pzm6uPJH%2FwR5rOeCGmDLIkNYt6Ffmoq%2FPELahB8IGAmjF%2BUyWhDxMsA7zHzId13qnjF6GdUwf2rmpi1EcW1Z0H7BdR2gCh1fu6nJuCUsGy%2FReQ%2F6F6Ix66gwZ8zHFVs8D6cstxHpqsslnpHbL3EDuGjPMjI7cjzlhfVukRLlOusOrZ8%2FkSku83ByJJAJ%2F7urlzN1RBHYkdbPQ2EoKdQ14201RIkrYMHe%2FacSTzO69MJlaRm3xtVyZikkms1FBMBKzVwBbG7tF%2Bk6RWG94%2FkG24c5t1iCjbkhWN3E%2FbGve8fbhXuLS8HtADz75hIFuNEAdWiKTHQ2w4QI4r91KrNKvRoiSzugSLhmNIezw5%2BV6316FzaO2m0nKNM8gO5fdzz2cmAPfyX1I9m3J687JUeO9hlIPKXCU2xQwxSXetmKKdXmTd5Uh7q83mjlEp92VyKjR07llSqeGw1i3PUUN8srtdMgobZuste4IIk4w9dvDt%2BRACFSZDYEox52q8LE7SUtMqAh4PtFGvZShBgGnmhNTJCinHv9Tc6zz9PNhXKcCWTMDoSu1fGLBN93SIBPuiWtCl39Q%2FC2ehF3fSljCL%2F%2BWlBjqlAeV86jCPrFA%2FZd0olALqfJspFNk4r%2BKPMiKSWR2VXLijXYR%2BH57buwEdNG6S9shekbJ3jQBr4gXs68FXiIL2kI5yJnNi7C%2FLXOgNPA0uHNiaBwR9EvhkAjk6EmlD38fxeOqsImWI2cwkStzn8K8RuYF6SccsqkVMJRaELASHCWbWXzAhRU2Akvy0ipawc%2B1T05oBs5vaQ4hw%2FJ%2BfK%2B6vnOWJCruE0g%3D%3D&X-Amz-Signature=8867d12237c5299f3b540699d1cffa5edb70f2f139a451beb4f33686b3327bdc / Environment failed to download: 404 Client Error: Not Found for url: https://prod-coiled-cloud-env.s3.amazonaws.com/software-environments/prod/builds/nasa-openscapes/33033-8f7a6f2d3069c6dbf5363ab689ef52c2/21631/67.tar.lz4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAREGOQM36S4CVKUNC%2F20230720%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20230720T210257Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECMaCXVzLWVhc3QtMiJHMEUCIQCBP7R9c%2BUg0pwiR47WqUXdSU3bt%2Blf3edgKz%2BXD3JcJgIgHNFo1AkgX%2FTps04zemILzbamMo1laR253dYQDTQXSmgq6AMIrP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARABGgwwNzc3NDI0OTk1ODEiDJx5pG8GiO1Ke9YXySq8A4pzm6uPJH%2FwR5rOeCGmDLIkNYt6Ffmoq%2FPELahB8IGAmjF%2BUyWhDxMsA7zHzId13qnjF6GdUwf2rmpi1EcW1Z0H7BdR2gCh1fu6nJuCUsGy%2FReQ%2F6F6Ix66gwZ8zHFVs8D6cstxHpqsslnpHbL3EDuGjPMjI7cjzlhfVukRLlOusOrZ8%2FkSku83ByJJAJ%2F7urlzN1RBHYkdbPQ2EoKdQ14201RIkrYMHe%2FacSTzO69MJlaRm3xtVyZikkms1FBMBKzVwBbG7tF%2Bk6RWG94%2FkG24c5t1iCjbkhWN3E%2FbGve8fbhXuLS8HtADz75hIFuNEAdWiKTHQ2w4QI4r91KrNKvRoiSzugSLhmNIezw5%2BV6316FzaO2m0nKNM8gO5fdzz2cmAPfyX1I9m3J687JUeO9hlIPKXCU2xQwxSXetmKKdXmTd5Uh7q83mjlEp92VyKjR07llSqeGw1i3PUUN8srtdMgobZuste4IIk4w9dvDt%2BRACFSZDYEox52q8LE7SUtMqAh4PtFGvZShBgGnmhNTJCinHv9Tc6zz9PNhXKcCWTMDoSu1fGLBN93SIBPuiWtCl39Q%2FC2ehF3fSljCL%2F%2BWlBjqlAeV86jCPrFA%2FZd0olALqfJspFNk4r%2BKPMiKSWR2VXLijXYR%2BH57buwEdNG6S9shekbJ3jQBr4gXs68FXiIL2kI5yJnNi7C%2FLXOgNPA0uHNiaBwR9EvhkAjk6EmlD38fxeOqsImWI2cwkStzn8K8RuYF6SccsqkVMJRaELASHCWbWXzAhRU2Akvy0ipawc%2B1T05oBs5vaQ4hw%2FJ%2BfK%2B6vnOWJCruE0g%3D%3D&X-Amz-Signature=064dd854e25e8f73b7c8336554cbbb1587024276e6415ba1ec5215109627d794 / Environment failed to download: 404 Client Error: Not Found for url: https://prod-coiled-cloud-env.s3.amazonaws.com/software-environments/prod/builds/nasa-openscapes/33033-8f7a6f2d3069c6dbf5363ab689ef52c2/21631/67.tar.lz4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAREGOQM36UPAWSM5S%2F20230720%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20230720T210258Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECMaCXVzLWVhc3QtMiJHMEUCIFqM2R8MucWKmz%2BA1Mw0S%2FbM%2FH06JtAtm0XMyCKwrhkBAiEAqmdOudFA%2Fn8fgFjsAh0wKq76awPBtOJUOGcJXJGluuAq6AMIrP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARABGgwwNzc3NDI0OTk1ODEiDCbTh3ZAWsYo8z4p8yq8A6cYq1x0z1ZRznxQt1nEQbehaUXNTO8PGvsqYysFlxjD2CrJC7DfH3ZWty2ASMs8rrc2b%2FF5ayV%2FPeoVQf7xMRoGzXQjOQuNe6MjQJNXBAkUCzfXu5rjVbqEVPr3NKjhFqR7pGESFyrqSO8%2F8Vvw%2B7bYbNiIQzizfAYTOxlmAmvaQPaapzVe3pONht0ePnTJqhFIEmN7%2BrJe43YfgRAWWm4%2Fpo8QasHsYGcT9Tgg7npYap09rDig8KhJGwv09L3ScUiWOhoqYTRlrYAtr5U78SztTOvojhLPNMkTcfnISKvGjrDWv6DIXKPTclJc3DGMXbloJK6OAO%2FUXTKakBUkHOt26ExjV9ivE4XieEBH7sb9IJfoc%2FIlV8nKiX35iUm8F%2B3I5wgu4wS9oxDkUYoFzyA3nQAQslEFeLfZN7xERHzMlPfChLsmEgtWwZykpHosU7rXHdRdIRmu1%2FMpdz00TUsqeWIKR0fJlDQtpJx9ibWi%2FyKYC%2BnXTdLYisxLOmC%2B%2FQiIJu7FJwB17OsMWtmeBNBCzSaogIA7aGR3BN40BXzoP09gs9%2FkEQ4QemcsHEEQfPS6c8jKzKmpmUwwKzCL%2F%2BWlBjqlATVfDnxOKIHxGwqh8aAgMXnqUhXjZvbMAvEElF7AJ%2B5u122HnBV7ZvINV7Dv4YYaMoYh4czFIhCjbFWJXX5zCkRdlD9yXeaIY0O99HiCpl4j33tfOebMx9M5BuNgI6JfGkV3HdMlRIPL%2BuYavOWlkvMmqVKSxdW3E8p7Kg8aD2Tykk0%2F0WDca31GxlJDRbFsjSnG8fSkwJABAh4iUF23vw1KFhtKGQ%3D%3D&X-Amz-Signature=63723993ce75bbb3657a24c3052560f733b60e73def9f42031d0cb86818b4e23 / Environment failed to download: 404 Client Error: Not Found for url: https://prod-coiled-cloud-env.s3.amazonaws.com/software-environments/prod/builds/nasa-openscapes/33033-8f7a6f2d3069c6dbf5363ab689ef52c2/21631/67.tar.lz4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAREGOQM36VGFZ3IGC%2F20230720%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20230720T210251Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECQaCXVzLWVhc3QtMiJHMEUCIQDE6FUs0cGEvqb9BwsTXuHSF1einY0I0x9Q93ZEnDFcHAIgJ0PNTFINw7kbZ3%2BMxJjXh1lOFZA7b3n%2FiQD40dkKLRsq6AMIrf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARABGgwwNzc3NDI0OTk1ODEiDCj%2FYTV0BzWKyL7u7Sq8A3DjLYNJlX9jqMRRbzzobUMj49qTWGUUEigQwA%2Fy%2BWaVDf7D3H1ZQXc2DWXRvmgb5YZoAGr%2Fg3Do9bOTQD3%2BQD6MEQkkManC2J%2BLY2VJTGXTpsxUjFMijjNa1uoutCz1TglIqQoZQQyi9uaGxEVmP%2BrGTu4uvI3f8alS%2F%2BraMV1rj8%2FnAVmXnHcL75tyoLbsqRtEIdqcLaDB2HVvhVpXRdex6Ly3xk2qcZ%2BLcVtXaSOHynJmzH0tWF11AS%2B%2FxL61Lixko4FABVPOaKwbY9q%2F6WptFDU4F5QbvSOXcCB6upIk7w3NfYhHXQ5wHD%2Bdk8mm%2F8zsyMQSQvfYviWo%2FIIxce2dfaw2wG5ccSOcuUCQ3KcZkB6zk11heI7l8QIzFM9j5%2BmF3HHNnFApXweAn5jeEohesYl605Nem%2BeMCPI2%2BlggCdi6nhty2E39XWoexZFwolZl9kvRf1tKky%2B13YNcMQmTTf3sbRFR2kI3kIfkEX4vKRAVuaaqRkzYImk5J5qk4mdBgNA5Imj9g64V17jJQ97heko1mmyP2Iz2sdaqICJTwpL5DDMfIzYAwx8yvIK%2FpjHHurHpAs360WvcCDDpqualBjqlAbi5kvGKspzGiwxgYwrr4ld5LuNHAr0jFsCd%2BDgDF%2FFiShEAyXbhbxRQKyNNKHJYnbEs6NU1V%2BgLCUez3fTbECkjSh0QMDq1EAvhmMkAx8b6dcmcGNiDekzAFsRP4Fnj7ozWpsl0uRi4orTxrh8WH5zbje3EvzyUt68bDs2ChMSyge2eUgId0EICc4Q6Y4KTtJzpKgWRUK7KAMjoQyi8zhVi58h67A%3D%3D&X-Amz-Signature=1b1fe806aae5e96ac895bae4a07c602f8966b161cd1e3eee60c55eb537166e46 / Environment failed to download: 404 Client Error: Not Found for url: https://prod-coiled-cloud-env.s3.amazonaws.com/software-environments/prod/builds/nasa-openscapes/33033-8f7a6f2d3069c6dbf5363ab689ef52c2/21631/67.tar.lz4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAREGOQM36XBATJQNZ%2F20230720%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20230720T210255Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECMaCXVzLWVhc3QtMiJHMEUCIGt8iJxH9JFS6luZKiMHrHGRMsniuGqDmnDQXOtXLefqAiEAi1JgMCHZsRtXc5gnEBxLrX2NffPVje4OJt37DfU6lAUq6AMIrP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARABGgwwNzc3NDI0OTk1ODEiDCR74sng%2BuUJ%2FXWfMCq8A7ZAiRzNYjwxfrf1DS12yVRC3I2z2CFHJmurjcK%2FSOvvR3LAvievr7Wu5ahAjDbsFYKMjS%2FAHz%2Fwm0nwsr6QoeWTEWQYlbIzC7lCJDSXRw%2FhXEFPbsoEXpfNxzkhAG8t9P8JTv%2FjGZqE7vWtrxg%2BF%2F5T%2FKBzY267OEyotQPIuqapaJFvMWY11ENL2q0A0XrXogEZ9q8PIFVgRlgWFIsImd2OEDAloHV%2BkNvveXYFcVwmZXEq2YvBuRZo9CbvJAisdLLxiIh7vWEMq57%2FAGfTbOekA4S6cm%2FEvBpoHnnKs1AJUVpBkdQ1njFx%2F1Evf03WXSjlvRIkMvlXtKif4oeD7%2BVdzDS%2FkjlSBrUTOMUPh2%2FJEXt6KyjpvKJ3no%2FY28zxUEhXWF3u4AaDhmEWwPz%2FUEm%2BIRxWPoPATurMIKUPDCNSIEGcZmkdsrcPr8xy3Z%2FiOr8wjHojwytkZEupXTkJumwYiEwJjeTA%2FPfpFfhe%2BNT53UNHupCOs8WhZyE82cVHujVp8sEO2oXy%2Ftzp0q1%2BFUCEPhxq%2B8Ppwk4qabA1YtVRWvDWhg3U2zEArZFxqYVfl0oCMVnWX8iJEAmUIjCL%2F%2BWlBjqlAZOrIt%2FE0J3PNIsLWIiq%2Fu0XWZjOeWHE8Oln8lagWNxAPdk5CXI4%2FMR0Nb8fJVBLw%2FWfa40K%2BpNceJU2WN5Vk2JwNrujmSAz0lcqeSM3NnS6M5hDr79E7F9v6Z1qX%2BDWR2HoqANRzYoqgUidoVKc0BsVHdu9uQTYMXb3tFo2ldRVE%2FWeDqaEKzQq0L8tW%2FCA17EprzkaOdDfmfcyh9mkm2y6JuO1kg%3D%3D&X-Amz-Signature=40d0285dc22defb662c9e1b1e1aec65f7740ed0ba6b28ed6822f21682a0742e5 / Environment failed to download: 404 Client Error: Not Found for url: https://prod-coiled-cloud-env.s3.amazonaws.com/software-environments/prod/builds/nasa-openscapes/33033-8f7a6f2d3069c6dbf5363ab689ef52c2/21631/67.tar.lz4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAREGOQM36XDKQ47YH%2F20230720%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20230720T210257Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECMaCXVzLWVhc3QtMiJHMEUCIQDTo6zdBmJ0lHvxswvOZjhjdwozEdUwE%2BiaZrjJNb44lwIga689P%2Bh5mOUm7ouFyNNp5Tvh0KvwPPA34GuCK%2F6uybgq6AMIrP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARABGgwwNzc3NDI0OTk1ODEiDG1b2OnK0kZyuYKEFiq8A2CTJRmVnQcXB9vSJOsCm6JNCqYBij0js%2BuOqtmKba3k7VKVbzOEBGpBk%2FOZfXbNVriwIITetsuamC6J6yP7p3z8oJ2121s1Wi5aG0nLd7T17CvdMOb1jvj1KHCf1sosQQziRLYkVTaqujcDg7IpDUT%2FZUV4Q%2BMjQUmU47vZslahVkoVF9ITLZuwnqXkMLAvv6oXKyuCF7qxLgcy51Keb7lCnIrEaHewxh%2FgijlABxG2Pad16TLQOMhaE%2FGaIy7UqI9lH8swrgL%2BCfkpzJaOAbHCZ5zcLZkKZszbztew4fk%2FkQzPwCwhdU0u2vS%2FJ2oOBdy%2FXgvNiygvQW0eg7ru7hj7vRLcVwAFmP98rORqboamuIsRS3W9D6vQmI8EtLKZFeAdJOtvrPguUvbF7XOSzjIgmFO6s%2FeU6e%2FTvC9HFnmr4xOfukQcq2hJw70c%2F5D1JvV4gk99KyzSArUdgh1ifTS831KomQH4Utjzm9IYzDLElUHSJv1bTjfW65NdYbvniX4OAfgkySS%2BVGMZvfyTbkCXUupntVqRWzthVnvyfaq6LGrbK2ltBIsmGtey%2BBC7BqHDepCoHEDF%2FzXspDCL%2F%2BWlBjqlAbWG%2FwmXS0AFqmns3kwFva55IQnXanj1GLRoqcrLtxvaXsoV4Zaws0Cgp%2Bh08pWKNGN00qcAmk50nd%2FXDuM9DQqhA2h3QcSSDEvX8YhZ33kPbqT091YqaPw9r2GQ0t3gfn82OCC41afWVFhyr%2B3P%2BxHAYrKQJYJLB8H%2BgzlvZbHib3cPKtrvshE99CCMC2DRRXVqy4HqIQ7DnBbAREw1UtOO9pB6fA%3D%3D&X-Amz-Signature=a84771fcb3ed5fe3ec8201dd16a61306f683ce7d0837e99144d7852dc3321146 / Environment failed to download: 404 Client Error: Not Found for url: https://prod-coiled-cloud-env.s3.amazonaws.com/software-environments/prod/builds/nasa-openscapes/33033-8f7a6f2d3069c6dbf5363ab689ef52c2/21631/67.tar.lz4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAREGOQM36ZWLFSPGO%2F20230720%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20230720T210253Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECEaCXVzLWVhc3QtMiJGMEQCIHQUBmQT3hs0DmX2vw6EK6%2B1cF5ULk%2FvMsCwP%2BXQdS16AiAa1fmsapvnI4uwbRyPatMLnPu6uhu%2Fa6x9s5qnzHXMRSroAwir%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAEaDDA3Nzc0MjQ5OTU4MSIM95whCQnX8FRxZrIYKrwDMd%2FzH85SCAhwUI9eqybYzUt5YDKIBLHEMU5JR6BsxLcdgTD2Lu33vhwbRuMjOvVqL8ZeKUxuhS3QlE8J2tih4cLCuIg4z4LZmX2vKh8DlAeRfY63AfbbXxDC6S4PqRSoTl3uTjGFp7nvI0Q0Wm5HHLRpAn2w1ypOCfeil4bMfvAA%2FUSHQblUOoW5pnPXUN0E3pD04LukNmIn8uhVDAodBpm9IKh45MU%2BvpSkvy364mDKCKoWzP1T5QkMtmcIs263j1vtx61HUeLJMFmdZy7DPCjvbKUK%2FqXEbU%2B2hDMV36MrFCQkHte1%2Bbfjt0UnEIxgaFObSpz8hFnXxJ3hS6kLL8recpXwDe50HOH%2B8AnPA%2FepbyzGWoEa9qmWHXGv8GsRVTZo0OBLen5RY1%2Bu%2B8UUWxG9%2BqWAXlVN6SJQfdm6nLTPEh8flGg4D7OhqLCWzrbJFLEqCogPoKA9utYeDwkCmGi9JksbZGUdMEaep%2F3weVq%2B24CJAY0Essbx5gSlnNMT%2F%2FiXgAoFkOAzukl2GYz6o%2BuKfbDJyTJuHjw8WP%2Bb8jtMSoQqea41ozWdgwrykGPE%2BACARWzlieCcA18YMJnb5aUGOqYB1m7ROXr%2Bv8VCt3DBgoSgeVYjvcSsrANsmLKUKalrPg6ngS9f2rRKBamjdQAoTuSZBJeE9RErsv%2FyM4R0VmjqCpeJklz7HmAxTngQ8F9xlHSdFE0DC%2Brjm4E0ms7JroL3PFsf9DTtxbrQgvY9%2F%2BFz9Q1E%2Bbu11uFm9mB59IiFlA9T%2FTWUk679%2Fq%2F3nRzjeOAdAq15yZ2dcfOUxPMgWc0zQAbC%2FcHOCA%3D%3D&X-Amz-Signature=173180b27f817df2e0b0902211766131f49adfc79561496e1e3a71c2322d07c0 / Environment failed to download: 404 Client Error: Not Found for url: https://prod-coiled-cloud-env.s3.amazonaws.com/software-environments/prod/builds/nasa-openscapes/33033-8f7a6f2d3069c6dbf5363ab689ef52c2/21631/67.tar.lz4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAREGOQM36ZZAUEWO5%2F20230720%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20230720T210249Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECUaCXVzLWVhc3QtMiJHMEUCIGxe0rqMBO48czzv2Ci%2Bf3dazjtVG4BX5yGSWoiO2OcKAiEAgDNOoE0vbhfuB5gb3FolZnrizHdxzly3pxyYoHriCywq6AMIrv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARABGgwwNzc3NDI0OTk1ODEiDL1aJIFg9SDZiELX4Sq8A%2BP43LOfvSTFjZIKh5cOZMkdL4EqyixB01IiYyxADEm6Q6eezX3%2B8iNfu3ZlKxFxNXkwx3I35%2BIlW%2BxiVi3CorXezD34pRlTw6NzWsu2q%2ByV7qw1rebA0HKS%2FNcbqzVgUH%2F4bFLHmHefplOXs%2BWUdGtlvGJxgftMwrJBZV%2BqX6h8pGUZsW3zaNHNPMCgyykUNCbTT%2Fx5JIBW%2FjcWk7JNcaTQ6bJHSS4qJK4VEkecPONzC4t1gEpWQIrw5QfBXTrP11RbmQ6SSNrFPWl%2Fr7YAu2FBsfsG4IFxY9NWZSRbl5rb5qh2e4noekSpNUyoH%2BHkoUkpsKgu3giElkasm1dNJ%2BR06a1DARmbuAeNVFGfDQsobutfONmlBAuhWBuu4GLQYmo1GwyVr7FHdDtS4YJQHHh41kiLVf1HBb3rPWVRqV44Npqc1Z7r4%2BDXVuWyJP8OukcG0hG5Fg2HYEMQ98nfakszzbADt0RyRI%2FA7a%2FJ3hrfeYDJwFvGnXqo0BjSq3FztDcCUY2GzQJiEiio%2Bqkq2jFJ4ljNPjz7NQPanFxi45XXl6YazVWqigf6T%2B6moSzoNRsxoHqaZmTI3xovZjDjs%2BalBjqlARZ%2B9v51pu7v4wsifRSfHo6WhWE%2FCvw%2FQfBpOcvgitj5upRhXDOWwV%2FQ5qRB4JagYCjeF8X06b%2BihEdISl1fSUifIzulJINT5BrCsaOENh%2BPH31wnfs8%2F7jqh88rKl8jBHH6Rhc81jOqg8ind4JzjzSE0KfRLum%2FwZkhY0Un5okTOOfQNfbyyzdzdMa9KpKaA7ezjGQ6B77BNhRbeEPFkUlnFfM20A%3D%3D&X-Amz-Signature=bde3c65cb090bced9e240a1be4d2595f1af543135378539a84cd4f6b9c415285) (cluster_id: 245455) ```
amfriesz commented 11 months ago

Okay, not sure why the cluster wasn't starting, but it's working now.

@shughes-uk ,

Your recommendation worked! I was able to write outputs to the s3 bucket after adding client_kwargs={'endpoint_url':'https://s3-us-west-2.amazonaws.com/'} to the s3 filesystem setup.

mrocklin commented 11 months ago

I'd love to figure out what was going on here if anyone has any ideas. This is an odd setup, but one that we're likely to run into I think with other NASA adjacent groups.

shughes-uk commented 11 months ago

Some weirdness with S3FS and the way it interacts with dask + remote credential setups I think?

dchudz commented 11 months ago

I'm trying to understand why it would work locally but not the cluster (until we specified that argument).

My only guess is that somehow locally the endpoint_url was configured as a default, but then it wasn't on the cluster.

https://docs.aws.amazon.com/sdkref/latest/guide/feature-ss-endpoints.html has some info about how to configure these as defaults.

It'd be nice to confirm whether JupyterHub had this stuff explicitly configured.

(Maybe we'd want to mirror this sort of config to the cluster.)

mrocklin commented 11 months ago

@amfriesz are you able to connect the right person here from the JHub team? We're a little curious if there was some custom configuration set up somewhere.

amfriesz commented 11 months ago

@mrocklin, I've reached out to some contacts. We'll see if they have any insights.

amfriesz commented 11 months ago

Looks like all the hub config files are publicly available in https://github.com/2i2c-org/infrastructure/tree/master/config/clusters/openscapes

There's also documentation on https://infrastructure.2i2c.org/ on how to interpret that config.

mrocklin commented 11 months ago

I'm curious, who are you asking these questions of. Is this Yuvi? Chris? James? Someone else? (I'm happy to ping them here directly) Ideally I'd avoid sifting through a bunch of yaml. My hope is that they'll say either:

  1. Yeah, we had to specify something special for these Hubs to access S3 data
  2. Nope, no atypical AWS configuration. Everything is running stock
amfriesz commented 11 months ago

Yuvi pointed me to the resources.

@yuvipanda, would you have insights into @mrocklin's question above, or is there someone else we should reach out to regarding the Openscapes 2i2c setup?

mrocklin commented 11 months ago

Hi @yuvipanda 👋

If you have a moment and can confirm if y'all have done anything to configure S3 access as David mentions above (https://github.com/coiled/feedback/issues/253#issuecomment-1646112379) that would be helpful. We're trying to track down some odd behavior and would like to exclude JHub if we can.

dchudz commented 11 months ago

Hi @amfriesz -- we have a guess about how we could have done the right thing automatically. If you're up for it, there a couple steps you could do to help us confirm that guess:

  1. Jupyter, run import boto3; boto3.session.Session().region_name. We're guessing that this is us-west-2.
  2. Try adding the argument environ={"AWS_DEFAULT_REGION": "us-west-2"} to the coiled.Cluster(...) call. Then see if your original code (before we suggested client_kwargs={'endpoint_url' ...) works.

If our guess is right then it should be easy for us to change Coiled so it detects the local default region, and mirror that to the cluster so that all of this would have worked the first time.

amfriesz commented 11 months ago

@dchudz ,

That seems to work! Running boto3.session.Session().region_name does indeed give me us-west-2. I was able to write output files to our S3 bucket after adding that new argument to the cluster and running the code without the client_kwargs in the s3fs.S3FileSystem.

dchudz commented 11 months ago

Nice! Thanks so much for testing that.

Should be an easy fix to get Coiled to do this automatically.

On Wed, Jul 26, 2023, 1:39 PM Aaron Friesz @.***> wrote:

@dchudz https://github.com/dchudz ,

That seems to work! Running boto3.session.Session().region_name does indeed give me us-west-2. I was able to write output files to our S3 bucket after adding that new argument to the cluster and running the code without the client_kwargs in the s3fs.S3FileSystem.

— Reply to this email directly, view it on GitHub https://github.com/coiled/feedback/issues/253#issuecomment-1652239218, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJKQRUGTDFG523RQJNC3B3XSFI47ANCNFSM6AAAAAA2RUX3GM . You are receiving this because you were mentioned.Message ID: @.***>

ntabris commented 11 months ago

Hi, @amfriesz. In coiled=0.9.0 (release this morning), the AWS_DEFAULT_REGION env var on the cluster will automatically be set based on your local session, so you shouldn't need the workaround anymore.

(More specifically, if you have local AWS credentials, Coiled by default ships an STS token so that the cluster can access the same AWS resources—e.g., S3—that you can access locally. Now when that happens, it also sets AWS_DEFAULT_REGION from your local default region.)

mrocklin commented 11 months ago

Thanks Nat.

On Thu, Jul 27, 2023 at 9:39 AM Nat Tabris @.***> wrote:

Closed #253 https://github.com/coiled/feedback/issues/253 as completed.

— Reply to this email directly, view it on GitHub https://github.com/coiled/feedback/issues/253#event-9936750690, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACKZTBFD5HNTBWXHN62Z23XSJ4SJANCNFSM6AAAAAA2RUX3GM . You are receiving this because you were mentioned.Message ID: @.***>

--

https://coiled.io

Matthew Rocklin CEO, Dask Maintainer