3.2.5. Media Service
3.2.5.1. Environment Variables
設定ファイル内の設定値は環境変数で上書きできます。
例えば、設定ファイルが次のようになっている場合、
[section]
attributes-1 = "value"
以下のような環境変数で設定を上書きできます。
MEDIA_SECTION_ATTRIBUTES_1="overwrite"
設定値が文字列の配列である場合は、カンマ区切りでの指定が可能です。
例えば、設定ファイルが次のようになっている場合、
[section]
array-attributes = ['val1', 'val2']
環境変数に以下のような値を与えることで設定を上書きできます。
MEDIA_SECTION_ARRAY_ATTRIBUTES="overwrite1,overwrite2
テーブルの配列([[section-name]]
のように二重角括弧で記述)の中の項目は、環境変数による上書きはできません。
3.2.5.2. Reference
すべての設定項目と、デフォルト値を示します。
3.2.5.2.1. api
Property |
Description |
Default |
---|---|---|
bind-address |
指定したホストとポートでサーバーをAPIサーバーをリスンします。 |
127.0.0.1:8094 |
[api]
# 指定したホストとポートでサーバーをAPIサーバーをリスンします。
bind-address = '127.0.0.1:8094'
3.2.5.2.2. postgres
Property |
Description |
Default |
---|---|---|
dbname |
DB名です。 |
media |
username |
DBユーザー名です。 |
media |
password |
DBパスワードです。 |
media |
address |
DBアドレスです。 |
127.0.0.1:5432 |
max-idle-conns |
コネクションプールの最大アイドルコネクション数です。 |
10 |
max-open-conns |
コネクションプールの最大オープンコネクション数です。 |
10 |
max-conn-idle-time |
コネクションの最大アイドル時間です。この時間を超えると切断されます。 |
0s |
max-conn-lifetime |
コネクションの最大接続時間です。この時間を超えると切断されます。 |
0s |
[postgres]
# DB名です。
dbname = 'media'
# DBユーザー名です。
username = 'media'
# DBパスワードです。
password = 'media'
# DBアドレスです。
address = '127.0.0.1:5432'
# コネクションプールの最大アイドルコネクション数です。
max-idle-conns = 10
# コネクションプールの最大オープンコネクション数です。
max-open-conns = 10
# コネクションの最大アイドル時間です。この時間を超えると切断されます。
max-conn-idle-time = '0s'
# コネクションの最大接続時間です。この時間を超えると切断されます。
max-conn-lifetime = '0s'
3.2.5.2.3. broker
Property |
Description |
Default |
---|---|---|
url |
Broker ServiceのURLです。 |
http://127.0.0.1:8080 |
[broker]
# Broker ServiceのURLです。
url = 'http://127.0.0.1:8080'
3.2.5.2.4. measurement
Property |
Description |
Default |
---|---|---|
url |
Measurement ServiceのURLです。 |
http://127.0.0.1:8080 |
[measurement]
# Measurement ServiceのURLです。
url = 'http://127.0.0.1:8080'
3.2.5.2.5. auth
Property |
Description |
Default |
---|---|---|
url |
Authentication ServiceのURLです。 |
http://127.0.0.1:8080 |
[auth]
# Authentication ServiceのURLです。
url = 'http://127.0.0.1:8080'
3.2.5.2.6. media
Property |
Description |
Default |
---|---|---|
conversion-timeout |
brokerからデータが受け取れなくなってから、ffmpegプロセスを再起動するまでの時間です。 |
5s |
ffmpeg |
ffmpegへのパスです。 |
ffmpeg |
ffmpeg-log-level |
ffmpegのログレベルです。 https://ffmpeg.org/ffmpeg.html |
debug |
[media]
# brokerからデータが受け取れなくなってから、ffmpegプロセスを再起動するまでの時間です。
conversion-timeout = '5s'
# ffmpegへのパスです。
ffmpeg = 'ffmpeg'
# ffmpegのログレベルです。 https://ffmpeg.org/ffmpeg.html
ffmpeg-log-level = 'debug'
3.2.5.2.7. media-filmed
Property |
Description |
Default |
---|---|---|
ffmpeg |
ffmpegへのパスです。 |
ffmpeg |
ffmpeg-log-level |
ffmpegのログレベルです。 https://ffmpeg.org/ffmpeg.html |
debug |
ffmpeg-threads |
libopenh264を使用して変換を行うときの`-threads` オプション(使用されるスレッド数)です。0を指定するとスレッド数は自動で設定されます。 |
0 |
dummy-file-path |
変換に失敗した場合に使用するダミー動画へのパスです。 |
./dummy.ts |
storage.type |
ストレージのタイプです。 (s3, local) |
local |
storage.local.base-dir |
ローカルストレージに保存する際の基準となるパスです。 |
./media-filmed/hls |
storage.s3.bucket-name |
バケット名です。 |
intdash-media-service |
storage.s3.region |
リージョンです。 |
ap-northeast-1 |
storage.s3.aws-access-key |
AWSアクセスキーです。 |
|
storage.s3.aws-secret-access-key |
AWSシークレットです。 |
|
storage.s3.endpoint |
S3のエンドポイントです。 |
|
storage.s3.s3-force-path-style |
オブジェクトの指定にpath-styleのURLを使用します。 https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/interfaces/bucketendpointinputconfig.html#forcepathstyle |
true |
nats-streaming.url |
nats-streamingのURLを指定します |
nats://127.0.0.1:4222 |
nats-streaming.username |
ユーザー名です。 |
intdash |
nats-streaming.password |
パスワードです。 |
aptpod1234 |
nats-streaming.cluster-id |
クラスタIDです。 |
intdash |
jet-stream.url |
jet-streamのURLを指定します。 |
nats://nats:4222 |
jet-stream.username |
ユーザー名です。 |
intdash |
jet-stream.password |
パスワードです。 |
aptpod1234 |
jet-stream.max-delivery-count |
サブスクライバーの最大配信数です。 |
3 |
jet-stream.max-pings-outstanding |
Pingの最大未処理数です。 |
3 |
jet-stream.ping-interval |
Pingの間隔です。 |
5s |
jet-stream.max-reconnects |
再接続回数です。 |
1800 |
jet-stream.reconnect-wait |
再接続間隔です。 |
2s |
event.driver |
イベントバスのドライバーです。(nats-streaming/jet-stream) |
nats-streaming |
event.driver-only-subscribe |
サブスクライブ専用のイベントバスのドライバーです。(nats-streaming/jet-stream) |
|
event.subscriber.redelivery-allowed-max-count |
Measurement Serviceからの1つのメッセージを再処理する最大回数です。 |
10 |
job.creator.reconvert-threshold |
finished ステータスではない計測に対する再変換実行までのインターバルです。 |
6h |
job.worker.max-work-time |
1つのjobを処理する際のタイムアウトです。 |
1h |
job.worker.max-concurrent |
jobを処理するgoroutineの最大数です。 |
3 |
job.worker.converter-parallel-number |
ffmpegコマンドが使用するCPUのコア数です。 |
0 |
[media-filmed]
# ffmpegへのパスです。
ffmpeg = 'ffmpeg'
# ffmpegのログレベルです。 https://ffmpeg.org/ffmpeg.html
ffmpeg-log-level = 'debug'
# libopenh264を使用して変換を行うときの`-threads` オプション(使用されるスレッド数)です。0を指定するとスレッド数は自動で設定されます。
ffmpeg-threads = 0
# 変換に失敗した場合に使用するダミー動画へのパスです。
dummy-file-path = './dummy.ts'
[media-filmed.storage]
# ストレージのタイプです。 (`s3`, `local`)
type = 'local'
[media-filmed.storage.local]
# ローカルストレージに保存する際の基準となるパスです。
base-dir = './media-filmed/hls'
[media-filmed.storage.s3]
# バケット名です。
bucket-name = 'intdash-media-service'
# リージョンです。
region = 'ap-northeast-1'
# AWSアクセスキーです。
aws-access-key = ''
# AWSシークレットです。
aws-secret-access-key = ''
# S3のエンドポイントです。
endpoint = ''
# オブジェクトの指定にpath-styleのURLを使用します。 https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/interfaces/bucketendpointinputconfig.html#forcepathstyle
s3-force-path-style = true
[media-filmed.nats-streaming]
# nats-streamingのURLを指定します
url = 'nats://127.0.0.1:4222'
# ユーザー名です。
username = 'intdash'
# パスワードです。
password = 'aptpod1234'
# クラスタIDです。
cluster-id = 'intdash'
[media-filmed.jet-stream]
# jet-streamのURLを指定します。
url = 'nats://nats:4222'
# ユーザー名です。
username = 'intdash'
# パスワードです。
password = 'aptpod1234'
# サブスクライバーの最大配信数です。
max-delivery-count = 3
# Pingの最大未処理数です。
max-pings-outstanding = 3
# Pingの間隔です。
ping-interval = '5s'
# 再接続回数です。
max-reconnects = 1800
# 再接続間隔です。
reconnect-wait = '2s'
[media-filmed.event]
# イベントバスのドライバーです。(nats-streaming/jet-stream)
driver = 'nats-streaming'
# サブスクライブ専用のイベントバスのドライバーです。(nats-streaming/jet-stream)
driver-only-subscribe = ''
[media-filmed.event.subscriber]
# Measurement Serviceからの1つのメッセージを再処理する最大回数です。
redelivery-allowed-max-count = 10
[media-filmed.job]
[media-filmed.job.creator]
# `finished` ステータスではない計測に対する再変換実行までのインターバルです。
reconvert-threshold = '6h'
# HLS動画のdelete, update, finalizeといったjobを実行する非同期ワーカーの設定です。
[media-filmed.job.worker]
# 1つのjobを処理する際のタイムアウトです。
max-work-time = '1h'
# jobを処理するgoroutineの最大数です。
max-concurrent = 3
# ffmpegコマンドが使用するCPUのコア数です。
converter-parallel-number = 0
3.2.5.2.8. logger
Property |
Description |
Default |
---|---|---|
level |
ログレベルです。debug、warn、info、warn、error から指定します。 |
info |
encoding |
ログの出力フォーマットです。 json、console から指定します。 |
json |
[logger]
# ログレベルです。`debug`、`warn`、`info`、`warn`、`error` から指定します。
level = 'info'
# ログの出力フォーマットです。 `json`、`console` から指定します。
encoding = 'json'
3.2.5.2.9. gops
Property |
Description |
Default |
---|---|---|
enable |
gopsによるプロファイリングを有効にします。 |
false |
address |
gopsのプロファイリングのアドレスを指定します。 |
127.0.0.1:0 |
[gops]
# gopsによるプロファイリングを有効にします。
enable = false
# gopsのプロファイリングのアドレスを指定します。
address = '127.0.0.1:0'
3.2.5.2.10. rate-limit
Property |
Description |
Default |
---|---|---|
quota-set-type |
レートリミットの設定を選択します(small、medium、large)。 large が最も多くのトラフィックを許可する設定です。 |
large |
enable |
レートリミットを有効にします。 |
false |
store.driver |
レートリミットの状態をキャッシュする際のドライバーとして inmem または redis のいずれかを指定します。 |
inmem |
store.redis.network |
Redisとの接続方法として tcp または unix (UNIXドメインソケット)を選択します。 |
tcp |
store.redis.address |
Redisのアドレスです。 |
127.0.0.1:6749 |
store.redis.password |
Redisのパスワードです。 |
P@ssw0rd |
store.redis.db |
DB |
0 |
store.inmem.max-keys |
キャッシュ保存時のキーの最大数 |
65535 |
[rate-limit]
# レートリミットの設定を選択します(`small`、`medium`、`large`)。 `large` が最も多くのトラフィックを許可する設定です。
quota-set-type = 'large'
# レートリミットを有効にします。
enable = false
[rate-limit.store]
# レートリミットの状態をキャッシュする際のドライバーとして `inmem` または `redis` のいずれかを指定します。
driver = 'inmem'
[rate-limit.store.redis]
# Redisとの接続方法として `tcp` または `unix` (UNIXドメインソケット)を選択します。
network = 'tcp'
# Redisのアドレスです。
address = '127.0.0.1:6749'
# Redisのパスワードです。
password = 'P@ssw0rd'
# DB
db = 0
# inmemを使用する場合の設定
[rate-limit.store.inmem]
# キャッシュ保存時のキーの最大数
max-keys = 65535
3.2.5.2.11. health
Property |
Description |
Default |
---|---|---|
enable |
ヘルスチェックサービスを有効にします。 |
true |
bind-address |
指定したホストとポートでヘルスチェックサーバーををリスンします。 |
0.0.0.0:9080 |
base-path |
ヘルスチェックのベースとなるパスを指定します。 |
|
disable-aws |
AWSへのヘルスチェックを無効にします。AWSのアカウントがビジネスプラン未満の場合、ヘルスチェックが実行不可なのでtrueにしてください。ref: https://docs.aws.amazon.com/health/latest/ug/health-api.html |
false |
disable-micro-services |
依存するサービスへのヘルスチェックを無効にします。 |
false |
http-health-urls.authentication-service |
Authentication Serviceのヘルスチェックエンドポイントです。 |
http://auth:9080/status |
http-health-urls.broker-service |
Broker Serviceのヘルスチェックエンドポイントです。 |
http://broker:9080/status |
http-health-urls.measurement-service |
Measurement Serviceのヘルスチェックエンドポイントです。 |
http://measurement:9080/status |
[health]
# ヘルスチェックサービスを有効にします。
enable = true
# 指定したホストとポートでヘルスチェックサーバーををリスンします。
bind-address = '0.0.0.0:9080'
# ヘルスチェックのベースとなるパスを指定します。
base-path = ''
# AWSへのヘルスチェックを無効にします。
# AWSのアカウントがビジネスプラン未満の場合、ヘルスチェックが実行不可なのでtrueにしてください。
# ref: https://docs.aws.amazon.com/health/latest/ug/health-api.html
disable-aws = false
# 依存するサービスへのヘルスチェックを無効にします。
disable-micro-services = false
# 外部のHTTPサービスのヘルスチェックエンドポイントの設定です。
[health.http-health-urls]
# Authentication Serviceのヘルスチェックエンドポイントです。
authentication-service = 'http://auth:9080/status'
# Broker Serviceのヘルスチェックエンドポイントです。
broker-service = 'http://broker:9080/status'
# Measurement Serviceのヘルスチェックエンドポイントです。
measurement-service = 'http://measurement:9080/status'
3.2.5.3. 補足
ローカルストレージとS3は同時には使用できません。使用するストレージをローカルストレージからS3に変更する場合、または逆方向に変更する場合は、既存のファイルも移動する必要があります。