サーバレス練習帳

着眼大局着手小局

さぁ、再び、AWS SDKへ!

Server error: Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1
・・・とのことで、まずは、AWS Credentialですね!
次のページを見ながら、aws cliaws configureをやってみよう。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-configure.html

それで、ローカル環境で出たのが、これ。
"error": "AWS authorization failed"

サーバーが動いていないときはこんなのが出る。
Failed to fetch

仕方がない、Cloud9でやってみるか。
次に、Cloud9で出てきたのが、これ。
Cannot read property 'addEventListener' of undefined

一度、バージニア北部で全て作り直してみるか。
北部バージニアでも同じエラーが出るな・・・

さて、tsファイルの"addEventListener"は26個あるのですが、うち2つ以外の24個をコメントアウトして実行。
その2つとは、

182行目
document.getElementById('form-authenticate').addEventListener('submit', e => {


1461行目(何行か追加しちゃったから、本当はもっと少ないかも)
window.addEventListener('load'


なんだけど、明らかに怪しいのは後者だね。なんたって、windows.loadなんだから。
これは、調べてみるかな。

検索用語は「window.addEventListener('load'」です。

とりあえず、後者を「window.onload = function(){new DemoMeetingApp();}」に書き換えてみたけど・・・まだ同じのが出るなぁ。

iPhoneから接続したら新しいエラーが、、、

ちなみに、navigator.mediadevice.addeventlistenerはbundle.jsで1か所のみ。

もしかして、navigator.mediadeviceに新旧がある?(次のリンク)
qiita.com

次によると、Navigator.getUserMediaはMediaDevices.getUserMedia() に名前が変更されましたと書かれており・・・
developer.mozilla.org

しかも、ここには衝撃的に怪しいことが書いてある・・・undefinedと。
https://developer.mozilla.org/ja/docs/Web/API/MediaDevices/getUserMedia

f:id:urbanplanner:20200505225746p:plain
かなり怪しい文章

メモ: 現在の文書が安全に読み込まれなかった場合は、 navigator.mediaDevices は undefined になり、 getUserMedia() を使用することはできません。セキュリティの節に、この件やその他の getUserMedia() の使用に関するセキュリティ問題の詳細があります。

ここで成り立つ仮説は・・・navigator.mediaDevicesをMediaDevicesに全変換せよ、だよね。全部で15か所ある。
・・・やってみたけど、違った模様。

というか、もっと問題のあることがこちらに書かれていた。
www.fxsitecompat.dev

Firefox 69 以降、navigator.mediaDevices オブジェクトと非標準の navigator.mozGetUserMedia メソッドは HTTPS で配信されたウェブサイトでのみ使用可能となります。安全でないサイトにおいて navigator.mediaDevices オブジェクト上の getUserMedia、enumerateDevices その他のメソッドを呼び出すと、オブジェクトが存在しないため TypeError 例外が投げられます。Google Chrome は既に同じ変更をバージョン 74 で行っています。

なお、getUserMedia メソッドは Firefox 68 で既に安全なサイトでのみ使用可能となっています。一方、これらのメソッドは、安全なオリジンとみなされる http://localhost では引き続き使用可能となっており、ウェブ開発者はカメラやマイク機能をローカル環境でテストすることが可能です。ただ、本番サイトは常に HTTPS で配信しなければなりません。

HTTPSじゃないからか、、、そして、LocalHostなら大丈夫らしい。なるほどね。では、対処はHTTPS化だな。