この操作を呼び出して、特定の Logstore にログデータを書き込むことができます。 現時点では、Protocol Buffers (Protobuf) 形式のロググループのみが記述できます。

ログデータは、ロググループ単位でパッケージ化されます。

2 つの書き込みモードがあります。

  • LoadBalance モード:Log Service は、LoadBalance モードで Logstore 内のすべての書き込み可能なシャードにログ データを自動的に書き込みます。 このモードはデータの書き込み可能性が高いです (SLA:99.95)。 この方法は、データの書き込みと消費がシャードとは独立しているシナリオ (例:非リオーダリング) に適用可能です。
  • KeyHash モード:データを書き込む場合にキーが指定されます。 Log Service は、MD5 値の範囲にキー値が含まれているシャードにログデータを自動的に書き込みます。 たとえば、Log Service は、名前に基づいてインスタンスなどのプロデューサを固定シャードにハッシュして、シャードにデータが厳密に書き込まれ、使用されるようにすることができます。 シャードをマージまたは分割すると、キーは一度にシャードの MD5 値範囲のみに含まれます。 詳細については、「シャード」をご参照ください。

リクエスト構文

LoadBalance モード
POST /logstores/<logstorename>/shards/lb HTTP/1.1
Authorization: <AuthorizationString>
Content-Type: application/x-protobuf
Content-Length: <Content Length>
Content-MD5: <Content MD5>
Date: <GMT Date>
Host: <Project Endpoint>
x-log-apiversion: 0.6.0
x-log-bodyrawsize: <BodyRawSize>
x-log-compresstype: lz4
x-log-signaturemethod: hmac-sha1
<Compressed data of logs in Protobuf format>

KeyHash モード

Log Service は、MD5 値幅にキー値を含むシャードを指定するために x-log-hashkey フィールドをリクエストヘッダーに追加します。 このフィールドはオプションです。 このフィールドを指定しない場合、ログ サービスは自動的に LoadBalance モードでログ データを書き込みます。
POST /logstores/<logstorename>/shards/lb HTTP/1.1
Authorization:<AuthorizationString>
Content-Type: application/json
Content-Length:<Content Length>
Content-MD5:<Content MD5>
Date:<GMT Date>
'Host': <Project Endpoint>
'x-log-apiversion': '0.6.0',
x-log-bodyrawsize: <BodyRawSize>
x-log-compresstype: lz4
x-log-hashkey : 14d2f850ad6ea48e46e4547edbbb27e0
x-log-signaturemethod: hmac-sha1
<Compressed data of logs in Protobuf format>

リクエストパラメーター

パラメーター データ型 必須 / 省略可能 説明
logstorename String 必須 ログを書き込む LogStore の名前。
リクエストヘッダー フィールド

KeyHash モードでは、x-log-hashkey フィールドをリクエストヘッダーに追加する必要があります。 詳細については、前述のリクエスト構文をご参照ください。

Log Service 操作の一般的なリクエストヘッダーフィールドの詳細については、「一般的なリクエストヘッダーフィールド」をご参照ください。

レスポンスヘッダーフィールド

この操作は、特別なレスポンスヘッダーフィールドを返しません。 log Service 操作の一般的なレスポンスヘッダーフィールドの詳細については、「一般的なレスポンスヘッダーフィールド」をご参照ください。

レスポンスパラメーター

リクエストが送信された後、レスポンスは返されません。

詳細な説明
  • PutLogs 操作を使用すると、最大 3 MB まで、最高 4,096 個のログを書き込むことができます。 ロググループ内のログは、1 つのサイズが 1 MB を超えることはできません。 上記のいずれかの条件が満たされないと、リクエストが失敗し、ログデータの書き込みができません。
  • Log Service は、PutLogs 操作によって書き込まれたログデータの形式をチェックします。 基本概念についての詳細は、「基本概念 (Basic concepts)」をご参照ください。 ログが形式仕様に準拠していないと、リクエストが失敗し、ログデータの書き込みはできません。
エラーコード

Log Service 操作の 一般的なエラー に加えて、この操作は以下の表に載っている特定のエラーも返します。

HTTP ステータスコード エラーコード エラーメッセージ 説明
400 PostBodyInvalid Protobuffer content cannot be parsed. Protobuf 形式のログを解析できないため、エラーメッセージが返されました。
400 InvalidTimestamp Invalid timestamps are in logs. ログに無効なタイムスタンプが含まれているため、エラーメッセージが返されました。
400 InvalidEncoding Non-UTF8 characters are in logs. ログに UTF-8 でエンコードされていない文字が含まれているため、エラーメッセージが返されました。
400 InvalidKey Invalid keys are in logs. ログに無効なキーが含まれているため、エラーメッセージが返されました。
400 PostBodyTooLarge Logs must be less than or equal to 3 MB and 4096 entries. ログの数が 4,096 を超えるか、ログのサイズが 3 MB を超えているため、エラーメッセージが返されました。
400 PostBodyUncompressError Failed to decompress logs. ログの解凍に失敗したため、エラーメッセージが返されました。
499 PostBodyInvalid The post data time is out of range ログ タイムスタンプが [-7 × 24 時間+15 分] の有効な間隔を超えているため、エラーメッセージが返されました。
404 LogStoreNotExist logstore {Name} does not exist. 指定された VPC ID が存在しない場合に表示されるエラーメッセージ。
表中のエラーメッセージの {name} 変数は、特定の Logstore 名に置き換えられます。

リクエスト例
POST /logstores/sls-test-logstore
{
    Content-Length:180
    "Content-Type":"application/x-protobuf",
    "x-log-bodyrawsize":1356,
    "ホスト": "ali-test-project.cn-hangzhou-devcommon-intranet.sls.aliyuncs.com",
    "コンテンツ-MD5""6554BD04149C844761C2C094A8FECCE",
    "Date":"Thu, 12 Nov 2015 06:54:26 GMT",
    "x-log-apiversion": "0.6.0",
    "x-log-compresstype":"lz4"
    x-log-signaturemethod: hmac-sha1
    "Authorization":"LOG <yourAccessKeyId>:<yourSignature>"
}
<Binary data obtained after logs in Protobuf format are compressed by using the LZ4 algorithm>
サンプル成功例
Header
{   
    "date": "Thu, 12 Nov 2015 06:53:03 GMT",
    "connection": "close",
    "x-log-requestid": "5644160399248C060600D216",
    "content-length": "0",
    "server": "nginx/1.6.1"
}