Файлы чтения laz хранятся в IBM COS
У меня проблема с чтением laz-файлов, которые хранятся в облачном хранилище объектов IBM. Я собрал библиотеку pywren-ibm со всеми требованиями, которые применили к одному из них с помощью докера, и затем развернул ее в облачной функции IBM в качестве действия, в котором появляется сообщение об ошибке "Невозможно открыть поток для" Colorea.laz"с ошибкой". Данный файл или каталог отсутствует.' Как я могу прочитать файлы с помощью pdal в облачной функции IBM?
Вот часть кода:
import pywren_ibm_cloud as pywren
import pdal
import json
def manip_data(bucket, key, data_stream):
data = data_stream.read()
cr_json ={
"pipeline": [
{
"type": "readers.las",
"filename": f"{key}"
},
{
"type":"filters.range",
"limits":"Classification[9:9]"
}
]
}
pipeline = pdal.Pipeline(json.dumps(cr_json, indent=4))
pipeline.validate()
pipeline.loglevel = 8
n_points = pipeline.execute()
bucketname = 'The bucket name'
pw = pywren.ibm_cf_executor(runtime='ammarokran/pywren-pdal:1.0')
pw.map(manip_data, bucketname, chunk_size=None)
print(pw.get_result())
Код работает с локального компьютера с ноутбуком Jupyter.
1 ответ
Вам нужно будет указать некоторые учетные данные и правильную конечную точку для корзины, содержащей файлы, к которым вы пытаетесь получить доступ. Не совсем уверен, как это работает с пользовательской средой выполнения, но обычно вы можете просто передать объект конфигурации в executor.
import pywren_ibm_cloud as pywren
config = {'pywren' : {'storage_bucket' : 'BUCKET_NAME'},
'ibm_cf': {'endpoint': 'HOST',
'namespace': 'NAMESPACE',
'api_key': 'API_KEY'},
'ibm_cos': {'endpoint': 'REGION_ENDPOINT',
'api_key': 'API_KEY'}}
pw = pywren.ibm_cf_executor(config=config)