Пока что мой путь с Outreachy был невероятным! Мой график обучения резко вырос благодаря участию в проекте Qinling с помощью моего наставника, Линсянь Конга. Я искренне ценю и ценю все, чему я учусь у своего наставника и этого проекта. Он навсегда останется одним из главных факторов моего успеха и достижений.
В этом посте вы сможете создать функцию, используя службу хранилища объектов OpenStack, Swift. Qinling стремительно растет, теперь он интегрирован с Swift, где вы можете создавать функции и вызывать их без особых усилий. Я верю, что это проложит новые пути помощи пользователю / разработчику в достижении их задач. Итак, приступим!
Служба хранения объектов OpenStack, swift может быть интегрирован с Qinling для создания функций. Вы можете загрузить свой функциональный пакет в swift и создать функцию, указав имя контейнера и имя объекта в Swift. В этом примере функция вернет «Hello, Neerja!», вы можете заменить строку вводом функции. Эти шаги предполагают, что в развертывании уже есть среда выполнения Python 2.7.
Шаг 1. Создайте пакет развертывания функции.
$ mkdir ~/qinling_swift_test $ cd ~/qinling_swift_test $ cat <<EOF > hello_world.py def main(name='World',**kwargs): ret = 'Hello, %s' % name return ret EOF $ cd ~/qinling_swift_test && zip -r ~/qinling_swift_test/hello_world.zip ./*
Шаг 2. Загрузите файл в Swift.
1. Create a container named "functions" $ openstack container create functions +---------------------------------------+------------------+------------------------------------+ | account | container | x-trans-id | +---------------------------------------+------------------+------------------------------------+ | AUTH_6ae7142bff0542d8a8f3859ffa184236 | functions | 9b45bef5ab2658acb9b72ee32f39dbc8 | +---------------------------------------+------------------+------------------------------------+ 2. Add the function deployment package(.zip) to the container $ openstack object create functions hello_world.zip +-----------------+-----------+----------------------------------+ | object | container | etag | +-----------------+-----------+----------------------------------+ | hello_world.zip | functions | 9b45bef5ab2658acb9b72ee32f39dbc8 | +-----------------+-----------+----------------------------------+ 3. Display the container and its object $ openstack object show functions hello_world.zip +----------------+---------------------------------------+ | Field | Value | +----------------+---------------------------------------+ | account | AUTH_6ae7142bff0542d8a8f3859ffa184236 | | container | functions | | content-length | 246 | | content-type | application/zip | | etag | 9b45bef5ab2658acb9b72ee32f39dbc8 | | last-modified | Wed, 18 Jul 2018 17:45:23 GMT | | object | hello_world.zip | +----------------+---------------------------------------+
Шаг 3. Создайте функцию и получите идентификатор функции, замените runtime_id на тот, который используется в вашем развертывании. Также укажите быстрый контейнер и имя объекта.
$ openstack function create --name hello_world \ --runtime $runtime_id \ --entry hello_world.main \ --container functions \ --object hello_world.zip +-------------+----------------------------------------------------------------------------------------------+ | Field | Value | +-------------+----------------------------------------------------------------------------------------------+ | id | f1102bca-fbb4-4baf-874d-ed33bf8251f7 | | name | hello_world | | description | None | | count | 0 | | code | {u'source': u'swift', u'swift': {u'object': u'hello_world.zip', u'container': u'functions'}} | | runtime_id | 0d8bcf73-910b-4fec-86b1-38ace8bd0766 | | entry | hello_world.main | | project_id | 6ae7142bff0542d8a8f3859ffa184236 | | created_at | 2018-07-18 17:46:29.974506 | | updated_at | None | | cpu | 100 | | memory_size | 33554432 | +-------------+----------------------------------------------------------------------------------------------+
Шаг 4: вызовите функцию, указав function_id
$ function_id=f1102bca-fbb4-4baf-874d-ed33bf8251f7 $ openstack function execution create $function_id --input Neerja +------------------+-----------------------------------------------+ | Field | Value | +------------------+-----------------------------------------------+ | id | 3451393d-60c6-4172-bbdf-c681929fae07 | | function_id | f1102bca-fbb4-4baf-874d-ed33bf8251f7 | | function_version | 0 | | description | None | | input | None | | result | {"duration": 0.031,"output": "Hello, Neerja"} | | status | success | | sync | True | | project_id | 6ae7142bff0542d8a8f3859ffa184236 | | created_at | 2018-07-18 17:49:46 | | updated_at | 2018-07-18 17:49:48 | +------------------+-----------------------------------------------+
Пожалуйста, попробуйте это руководство, оно упрощает интеграцию Qinling и Swift для пользователей!