# SDKリファレンス - streams
このセクションでは、ファイルストリーム生成アクションを作成するために使用できるストリーミングコールバックを定義するためのすべての可能なキーを列挙します。ファイルストリーミングについて詳しく学ぶ。
クイック概要
streams
キーは、アクションまたはトリガーと組み合わせて使用する必要があります。これにより、Workato Files、Google Cloud Storage、S3などのファイルストレージプロバイダーに接続できるアクションを構築することができます。大量のデータ(CSVファイルやビデオなど)をチャンク単位でダウンロードすることができます。
# 構造
streams: {
[Unique_stream_name]: lambda do |input, starting_byte_range, ending_byte_range, byte_size|
Array
end,
[Another_unique_stream_name]: lambda do |input, starting_byte_range, ending_byte_range, byte_size|
Array
end,
},
属性 | 説明 |
---|---|
キー | [Unique_stream_name] |
タイプ | ラムダ関数 |
説明 | このラムダ関数は、workato.stream.out コールバックを使用して、ストリーミングアクションから呼び出すことができます。 |
可能な引数 | input - workato.stream.out で定義されたユーザーが入力した値を表すハッシュ starting_byte_range - この特定のチャンクのリクエストされた開始バイト範囲を表す整数 ending_byte_range - この特定のチャンクのリクエストされた終了バイト範囲を表す整数 byte_size - この特定のチャンクの正確なバイト数を表す整数 |
期待される出力 | サイズが2の配列。最初のインデックスは、この特定のチャンクの実際のバイトを表します。2番目のインデックスは、このファイルが最後のチャンクであるかどうかをWorkatoフレームワークに伝えるブール値です。 |
ファイルストリームの作成
Workato上のファイルストリームは、一般的なHTTP RFC標準のRange
ヘッダー (opens new window)を活用して作成されます。以下に、ファイルストリーミングを使用したシンプルなダウンロードファイルアクションの例を示します。
actions: {
download_file: {
title: "ファイルをダウンロード",
input_fields: lambda do
[
{
name: "file_id",
label: "ファイルID"
}
]
end,
execute: lambda do
{
file_contents: workato.stream.out("download_file", { file_id: file_id })
}
end,
output_fields: lambda do
[
{
name: "file_contents"
}
]
end
}
}
workato.stream.out
メソッドで定義されたdownload_file
ストリームは、プラットフォームによって要求されたバイト範囲を取得するコードを保持する役割を担っています。これは、ストリームコンシューマーに送信され、ダウンストリームの宛先にアップロードされます。
したがって、このコールバックに渡される引数は、HTTPリクエストでこのバイト範囲を取得するために使用できる明確な入力を提供します。
ストリームラムダの出力は、バイト文字列を最初のインデックスに、ファイルの終わりである場合は真であるブール値を2番目のインデックスに期待しています。
streams: {
download_file: lambda do |input, starting_byte_range, ending_byte_range, byte_size|
# 例: starting_byte_range = 0
# 例: ending_byte_range = 10485759
# 例: byte_size = 10485760 (10MB)
# アクションから渡されるinputはフレンドリーなURLであると仮定できます
chunk = get("/#{input['file_id']}/download").
headers("Range": "bytes=#{starting_byte_range}-#{ending_byte_range}").
response_format_raw
# もしchunk.sizeが要求されたbyte_sizeよりも小さい場合、
# ファイルの終わりに到達したことを知ることができます。
[chunk, chunk.size < byte_size]
end
}
download_file
ラムダは、file_contents
のデータピルがダウンストリームアクションにマッピングされたときにのみ実行されることに注意してください。
Last updated: 2024/2/13 16:59:53