どうやっても繋がらない
[デバイス]-CloudFront-APIGateway-Lambda(S3に保存)というサーバーレス構成を作っています。
これに対して画像を送信しようとしてるんだけど、どうにも接続できない。
なんで?と思って色々調べてみたら、コレが怪しいということに気が付きました。
SNI 非対応クライアントのために API Gateway をハックする
確かにデバイス自体は古いので、SNIに対応していない可能性がある。
とはいえ、サーバーレス構成からサーバー構成にするのは悔しい。
SNI非対応クライアントへの対応
ということで、ならばSNI非対応クライアント用に対応させればいい。
CloudFrontを調べてみるとこんなものがある。
CloudFront で HTTPS リクエストを供給する方法の選択
「代替ドメイン名を使用するように CloudFront を構成すると、CloudFront は、各エッジロケーションの専用 IP アドレスを使用するか、Server Name Indication (SNI) を使用して、HTTPS リクエストを供給できます。このセクションでは各オプションの仕組みについて説明します。 」
ということは、代替ドメイン名を使用するようにCloudFrontを構成する、ということをすればSNIを使用しない構成になるということだ。
専用IPアドレスの料金
なればやってみよう!という前に、料金の確認。
「毎月 600 USD をお支払。この月額料金は時間数で案分。」
「6 月に 24 時間だけ使用の場合、(1 日/30 日)* 600 USD = 20 USD となります。」
非常に高い。試すとしてもリミットは1時間まで!
やってみよう
まとめると、これを実現するには、以下2つのことが必要ということ。
1.CloudFrontで独自証明書を使用する
2.専用IPアドレスモードに変更する
1はコチラがとても参考になりました。ありがとうございます。
Amazon CloudFrontの独自ドメインSSL証明書をAWS CLIでアップロードする
独自証明書を選択すると、専用IPアドレスモードが選択できるようになります。
ということで選択します。
結果
[デバイス]-CloudFront-APIGateway-Lambda(S3に保存)というサーバーレス構成で接続することができました!わーい!
但し、すぐにCloudFrontの構成を元に戻しました。高すぎる。
まぁ、デバイス側では対応できないこともあるでしょうし、お金出せるのであればやっていいと思います。
今日はここまで。