Учетные данные IBM Cloud Object Storage

Я пытаюсь настроить Raspberry Pi, который подключается к службе хранилища объектов в IBM Cloud. Во всех руководствах по объектному хранилищу учетные данные имеют следующий формат:

{
  "auth_url": "https://identity.open.softlayer.com",
  "project": "object_storage_xxxxxxxx_xxxx_xxxx_b35a_6d007e3f9118", 
  "projectId": "512xxxxxxxxxxxxxxxxxxxxxe00fe4e1", 
  "region": "dallas",
  "userId": "e8c19efxxxxxxxxxxxxxxxxxxx91d53e",
  "username": "admin_1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxa66",
  "password": "fTxxxxxxxxxxw8}l",
  "domainId": "15xxxxxxxxxxxxxxxxxxxxxxxxxxxx2a", 
  "domainName": "77xxx3",
  "role": "admin"
}

Согласно здесь, например,

Где дается следующий комментарий:

В веб-интерфейсе IBM Cloud вы можете создавать или читать существующие учетные данные. Если ваша программа работает в IBM Cloud (Cloudfoundry или Kubernetes), учетные данные также доступны через переменную среды VCAP

Однако я не запускаю свой сценарий Python в IBM Cloud, а скорее на RPi, который отправляет в него данные. В моей службе хранения объектов есть вкладка "учетные данные службы", которая имеет следующую форму:

{
  "apikey": "XXXXXX-_XXXXXXXXXXXXXXXXXX_XXXXXX",
  "endpoints": "https://cos-service.bluemix.net/endpoints",
  "iam_apikey_description": "Auto generated apikey during resource-key 
    operation for Instance - crn:v1:bluemix:public:cloud-object-
    storage:global:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "iam_apikey_name": "auto-generated-apikey-XXXXXXXX-XXXX-XXXX-XXXX-
    XXXXXXXXXXXX",
  "iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer",
  "iam_serviceid_crn": "crn:v1:bluemix:public:iam-
identity::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX::serviceid:ServiceId-
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "resource_instance_id": "crn:v1:bluemix:public:cloud-object-
storage:global:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

Итак, как мне найти необходимые учетные данные, чтобы я мог использовать протокол SWIFT в Python для отправки данных из моего Raspberry Pi в службу хранения объектов?

2 ответа

Решение

Вместо swift, который, я думаю, не поддерживается, вы можете использовать разновидность протокола хранения объектов S3 от IBM. Есть библиотека Python, которую вы можете использовать, чтобы сделать это легко

Например, чтобы подключиться к cos s3:

import ibm_boto3
from ibm_botocore.client import Config

api_key = 'API_KEY'
service_instance_id = 'RESOURCE_INSTANCE_ID'
auth_endpoint = 'https://iam.bluemix.net/oidc/token'
service_endpoint = 'https://s3-api.us-geo.objectstorage.softlayer.net'

s3 = ibm_boto3.resource('s3',
                      ibm_api_key_id=api_key,
                      ibm_service_instance_id=service_instance_id,
                      ibm_auth_endpoint=auth_endpoint,
                      config=Config(signature_version='oauth'),
                      endpoint_url=service_endpoint)

Библиотека IBM boto3 очень похожа на библиотеку boto3, которая используется для подключения к хранилищу объектов amazon s3. Основное отличие заключается в настройке начального соединения, которое я показал выше. После того, как вы это сделаете, вы можете найти множество примеров онлайн для использования boto3, вот один из них:

# Upload a new file
data = open('test.jpg', 'rb')
s3.Bucket('my-bucket').put_object(Key='test.jpg', Body=data)

От: http://boto3.readthedocs.io/en/latest/guide/quickstart.html

Возможно, вы захотите посмотреть на вопрос / ответ, который я перечислю ниже. По сути, вам нужен ключ доступа и секретный ключ, который нужно добавить в код Python для подключения к учетной записи Cloud Object Storage.

/questions/34350664/kak-vneshnee-prilozhenie-mozhet-poluchit-dostup-k-hranilischu-oblachnyih-obektov-ibm/34350675#34350675

Другие вопросы по тегам