-1

イメージをオブジェクト ストレージ コンテナーにアップロードし、ノード js アプリを使用して Bluemix にデプロイされたイメージの URL を取得しようとしています。これを実現するには、post または put api 呼び出しを使用する必要があります。 API呼び出しを介して機能を実現することができません。そのため、API呼び出しについて助けが必要です。オブジェクトストレージ上の画像を使用してそのような種類のAPI呼び出しに取り組んでいた場合、誰かが私を助けることができます.(オブジェクトを使用して) -storage npm。あらゆる種類のサンプル作業 API 呼び出しを共有することもできます。

4

1 に答える 1

2

オブジェクト ストレージ API は、OpenStack Swift API 仕様から派生しています。あらゆる種類のオブジェクトを Bluemix Object Storage コンテナーに追加するには、次の 2 つのことを行う必要があります。

  1. Object Storage インスタンスに対して認証を行い、認可トークンを取得します。
  2. 取得したトークンを使用してコンテナーでアクションを実行します。

オブジェクト ストレージ サービスによって提供される JSON 資格情報に既にアクセスしていると仮定します...次のように:

{

 "auth_url": "https://identity.open.softlayer.com",

 "domainId": "nice_long_hex_value",

 "domainName": "some_number",

 "password": "not_gonna_tell_you",

 "project": "object_storage_hex_value",

 "projectId": "project_hex_value",

 "region": "dallas",

 "userId": "another_fine_hex_value",

 "username": "some_text_with_hex_values"
}

ステップ 1 : X-Auth-token を取得します。4 つの項目 (user_id、user_name、password、および auth_url) は、提供された資格情報から取得する必要があります。

curl -i -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
    "auth": {
        "identity": {
            "methods": [
                "password"
            ],
            "password": {
                "user": {
                    "id": "another_fine_hex_value",
                    "password": "not_gonna_tell_you"
                }
            }
        },
        "scope": {
            "project": {
                "id": "project_hex_value"
            }
        }
    }
}' "{auth_url}/v3/auth/tokens" | tee response.txt | grep X-Subject-Token | sed 's/.*X-Subject-Token: \([^ ]*\).*/\1/g' | tee >(awk '{printf("\nX-Auth-Token: %s\n\nJSON Response Body:\n", $0)}' > /dev/tty) | sed -n '/{/,$p' <response.txt | python -m json.tool && rm response.txt

これにより、次のような 500 行以上の JSON 応答 BODY (swift endpoints 配列内のダラス地域のパブリック インターフェイスに注意してください) が生成されます。</p>

{
  "token": {
    "methods": [
      "password"
    ],
    "roles": [
      {
        "id": "redacted",
        "name": "ObjectStorageOperator"
      }
    ],
    "expires_at": "2016-03-09T20:26:39.192753Z",
    "project": {
      "domain": {
        "id": "some_hex_value",
        "name": "some_int"
      },
      "id": "another_hex_value",
      "name": "one_more_hex_value"
    },
    "catalog": [
        ...
      {
        "endpoints": [
          {
            "region_id": "london",
            ...
          },
          {
            ...
          },
          {
            "region_id": "dallas",
            "url": "https://dal.objectstorage.open.softlayer.com/v1/AUTH_",
            "region": "dallas",
            "interface": "public",
            "id": "some_unique_id"
          },
          {
            ...
          },
          {
            ...
          },
          {
            ...
          }
        ],
        "type": "object-store",
        "id": "hex_values_rock",
        "name": "swift"
      },
      ...
    ],
    "extras": {},
    "user": {
      "domain": {
        "id": "hex_value",
        "name": "another_fine_int"
      },
      "id": "tired_of_hex_values_yet?",
      "name": "cheers_one_more_hex_value_for_the_road"
    },
    ...
  }
}

具体的には、Swift Object Storage API の URL を次の形式で識別したいと考えています: https://dal.objectstorage.open.softlayer.com/v1/AUTH_some-hex-value https://dal.objectstorage.open.softlayer.com/v1/AUTH_some-hex-valueは、目的のオブジェクト ストレージ リージョン (ダラス、ロンドン、 …) パブリック インターフェイスに関連付けられています。これは、「swift」という名前を含むエンドポイント セクション内にあります。

さらに重要なことは、この /v3/auth/tokens 呼び出しの生成された HTTP 応答ヘッダー内に、後続の認証済み HTTP API 呼び出しを容易にするために記録する必要がある認証トークンです。

HTTP 応答ヘッダーのサンプルを次に示します。

Connection: Keep-Alive
Content-Length: 12089
Content-Type: application/json
Date: Wed, 09 Mar 2016 19:26:39 GMT
Keep-Alive: timeout=5, max=21
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_wsgi/3.4 Python/2.7.5
Vary: X-Auth-Token
X-Subject-Token: gAAAAABW4Hjv5O8yQRwYbkV81s7KC0mTxlh_tXTFtzDEf3ejsP_CByfvvupOeVWWcWrB6pfVbUyG5THZ6qM1-BiQcBUo1WJOHWDzMMrEB5nru69XBd-J5f5GISOGFjIxPPnNmEDZT_pahnBwaBQiJ8vrg9p5obdtRJeuxk7ADVRQFcBcRhAL-PI
x-openstack-request-id: req-26a078fe-d0a7-4a75-b32d-89d3461c55f1

X-Subject-Token は重要な応答ヘッダーです。その値は、ヘッダー X-Auth-Token を使用して、後続のすべての HTTP 要求ヘッダー内で再利用されます。明らかですよね?

ステップ 2 : このトークンを使用して、「ibmjstart」という名前のコンテナーにオブジェクトを追加しましょう。

curl -s -X PUT -i -H "Content-Type: text/plain"\
    -H "X-Auth-Token: X-Subject-Token from above"\
    -H "Cache-Control: no-cache"\
  -d "Awesome sauce is best served warm" "{API AUTH URL obtained above}/ibmjstart/test.txt"

すべてがうまくいけば、ibmjstart という名前の新しいコンテナーが作成されます。このコンテナーには、内容が 1 行のtest.txtという名前のテキスト ファイルが含まれています。

于 2016-08-29T03:18:42.323 に答える