Хранить записи на s3 с mod_rayo и mod_http_cache на freeswitch

Я пытаюсь сохранить свои записи на s3.

Вот мой rayo.conf.xml:

<configuration name="rayo.conf">
  <settings>
    <param name="max-idle-sec" value="300"/>
  </settings>
  <domain name="localhost" shared-secret="itsasecret">
    <listen type="c2s" port="5222" address="0.0.0.0" acl=""/>
    <users><user name="adhearsion" password="foo"/></users>
  </domain>

  <record>
    <param name="record-file-prefix" value="{profile=s3}http://bucket.domain.com.s3.amazonaws.com/records/"/>
  </record>

</configuration>

Вот мой http_cache.conf.xml

<configuration name="http_cache.conf" description="HTTP GET cache">
  <settings>
    <!-- set to true if you want to enable http:// and https:// formats.  Do not use if mod_httapi is also loaded -->
    <param name="enable-file-formats" value="true"/>
    <param name="max-urls" value="10000"/>
    <param name="location" value="$${base_dir}/http_cache"/>
    <param name="default-max-age" value="86400"/>
    <param name="prefetch-thread-count" value="8"/>
    <param name="prefetch-queue-size" value="100"/>
    <!-- absolute path to CA bundle file -->
    <param name="ssl-cacert" value="$${base_dir}/conf/cacert.pem"/>
    <!-- verify certificates -->
    <param name="ssl-verifypeer" value="true"/>
    <!-- verify host name matches certificate -->
    <param name="ssl-verifyhost" value="true"/>
  </settings>
<profiles>
    <profile name='s3'>
        <aws-s3>
            <access-key-id>
                <![CDATA[AWS_KEY_ID]]>
            </access-key-id>
            <secret-access-key>
                <![CDATA[AWS_KEY_SECRET]]>
            </secret-access-key>
        </aws-s3>
        <domains>
          <domain name='bucket.domain.com.s3.amazonaws.com' />
        </domains>
    </profile>
</profiles>
</configuration>

Вот журнал отладки:

2014-08-10 01:03:19.405172 [ERR] mod_http_cache.c:351 Received HTTP error 403 trying to save /usr/http_cache/64/6ee5dd-bb6d-49a4-96cc-34bd54ab9827.wav to http://bucket.domain.com.s3.amazonaws.com/records/b5ffe577-c8c1-48c5-847e-a330ddc7b6b9-2.wav

2014-08-10 01:03:19.405172 [ERR] mod_http_cache.c:351 Received HTTP error 403 trying to save /usr/http_cache/64/6ee5dd-bb6d-49a4-96cc-34bd54ab9827.wav to http://bucket.domain.com.s3.amazonaws.com/records/b5ffe577-c8c1-48c5-847e-a330ddc7b6b9-2.wav
[DEBUG] esl.c:1316 esl_recv_event() RECV HEADER [Content-Type] = [log/data]
[DEBUG] esl.c:1316 esl_recv_event() RECV HEADER [Content-Length] = [116]
[DEBUG] esl.c:1316 esl_recv_event() RECV HEADER [Log-Level] = [5]
[DEBUG] esl.c:1316 esl_recv_event() RECV HEADER [Text-Channel] = [3]
[DEBUG] esl.c:1316 esl_recv_event() RECV HEADER [Log-File] = [switch_core_session.c]
[DEBUG] esl.c:1316 esl_recv_event() RECV HEADER [Log-Func] = [switch_core_session_thread]
[DEBUG] esl.c:1316 esl_recv_event() RECV HEADER [Log-Line] = [1632]
[DEBUG] esl.c:1316 esl_recv_event() RECV HEADER [User-Data] = [b5ffe577-c8c1-48c5-847e-a330ddc7b6b9]
[DEBUG] esl.c:1480 esl_recv_event() RECV MESSAGE
Event-Name: SOCKET_DATA
Content-Type: log/data
Content-Length: 116
Log-Level: 5
Text-Channel: 3
Log-File: switch_core_session.c
Log-Func: switch_core_session_thread
Log-Line: 1632
User-Data: b5ffe577-c8c1-48c5-847e-a330ddc7b6b9
Content-Length: 116

2014-08-10 01:03:19.425141 [NOTICE] switch_core_session.c:1632 Session 2 (sofia/internal/1001@192.168.59.103) Ended

Я попытался указать его на локальный сервер, и оказалось, что единственные параметры, которые я получаю, это имя файла: audio_file.wav. похоже, что он не отправляет файл должным образом...

Я дважды проверил свои учетные данные, так что я уверен, что это не проблема. Кроме того, каталог записей доступен для записи для всего мира.

2 ответа

Решение

Две проблемы были найдены с этой конфигурацией:

  1. URL виртуального хоста не был правильно проанализирован FreeSWITCH.
  2. Пробелы вокруг конфигурации ключа S3 не были удалены.

Мастер ветки FreeSWITCH имеет исправления: см. Коммиты b60df39b96 и 3b45ef90a.

Также убедитесь, что у вас не загружено mod_httapi.

Единственное, что я вижу здесь, очевидно, что это неправильно, это то, что у вас есть "bucker.domain.com.s3.amazonaws.com" в rayo.conf.xml, но "bucket.domain.com.s3.amazonaws.com" в http_cache.conf.xml. Неправильный домен может быть причиной запрета HTTP 403.

Другие вопросы по тегам