curlでデータレイクへファイルをアップロードする

はじめに

このガイドでは curlコマンドを使ってファイルをデータレイクへアップロードする方法について説明します。

認証情報の確認

認証は Basic 認証で行うため、認証情報の確認が必要です。

Basic認証のユーザー名及びパスワードには、ユーザー認証(USER_IDPERSONAL_ACCESS_TOKEN)またはデータソース認証( DATASOURCE_IDDATASOURCE_SECRETS)のいずれかを選択することができます。

ユーザー認証

認証情報の取得については、認証情報の確認方法を参照ください。

  • ユーザー名 user-{USER_ID}
  • パスワード {PERSONAL_ACCESS_TOKEN}
$ curl --user user-1234567890123:8516bee2d1f3ae3299aaf9eac11e366ce5e83799 ...

データソース認証

データソース情報の確認は、各チャンネル詳細ページから参照することができます。

1-datasource-link.png

チャンネルのデータソース一覧ページから、使用するDATASOURCE_IDDATASOURCE_SECRETSを取得します。

  • ユーザー名 datasource-{DATASOURCE_ID}
  • パスワード {DATASOURCE_SECRETS}
$ curl --user datasource-1234567890123:8516bee2d1f3ae3299aaf9eac11e366ce5e83799 ...

データソースはデータを送信できるチャンネルを限定することが出来ます。また、データソースは特定のユーザーに紐づかないためシステム間連携やセンサー類からデータをアップロードする時は、データソースによるアップロードを推奨します。

ファイルの送信

以下の URL に対し POST リクエストを送ることにより、ファイルをアップロードできます。

POST https://api.abeja.io/channels/{CHANNEL_ID}/upload

以下が実際のファイル送信の発行例です。

$ curl -X POST --header "Content-Type: image/jpeg" \
               --header x-abeja-meta-filename:test.csv \
               --user datasource-1234567890123:8516bee2d1f3ae3299aaf9eac11e366ce5e83799 \
               --data-binary @/path/to/cat.jpeg \
       https://api.abeja.io/channels/1234567890123/upload

コマンド出力 (HTTP Body):

{
    "file_id": "20170704T062222-cb6750bf-e679-48a6-ab96-0f4292e09f76",
    "url_expires_on": "2017-05-17T13:24:57+00:00",
    "uploaded_at": null,
    "content_type": "image/jpeg",
    "metadata": {
        "x-abeja-meta-filename": "cat.jpeg",
        "x-abeja-meta-label": "cat"
    }
}

メターデータ

メターデータを付与する場合、アップロード用URL発行時のHTTP リクエスト・ヘッダーで x-abeja-meta-{FIELDNAME}: {FIELDVALUE} という形式で指定します。 この場合、filenameキーにcat.jpegを、labelキーにcatを登録しています。

filenameキーを指定すると、コンソールのファイル一覧ページ上でファイル名として表示されるため、指定することをお勧めします。

Content-Type

Content-Typeを指定することで、データレイク上で指定したContent-Typeとして認識されます。この場合、image/jpegを指定しています。

Content-Typeを指定しない場合、`binary/octet-stream` として認識されます。

アップロードできるファイルのサイズは最大 5TB までとなります。

ファイルの確認

コンソールのデータレイク詳細ページからアップロードしたファイルを確認することができます。

2-datalake-file-uploaded-by-curl.png