苦労したAWSサーバレスAPI構築物語

お仕事でAWSでサーバレスAPIを提案し構築しました。

しかし、APIゆえにAPIクライアントの事情を組む必要があり、構築の際に苦労した話をしたいと思います。

 

<前提>

APIはインターネット公開

・特定のパッケージソフトから利用される

 

はじめに、APIGatewayにてモックAPIを作成し、OpenAPIのスキーマyaml)をクライアント開発チームへ提供し、開発を進めていただいた。(スキーマ駆動開発)

ここまでは良かったのですが、問題が発生。

 

<当初の構成案>

APIGateway→Lambda

 

 

1、TLS対応問題

APIをコールする側のクライアントのアプリケーションがレガシーであり、TLS1.0しか対応できないとのこと。

APIGatewayではTLS1.1以上の対応となっており、頭を悩ませた。

 

<対応策>

TLS1.0対応のCloudFrontをAPIGatewayのフロントにおいて対応。

 

2、ペイロードサイズ問題

アップロードされるファイルサイズは10MB以内の前提であった、10MB以内で問題はなかっただが、Lamdaでエラーが発生!

Lamabdaペイロードサイズが6MBであることが判明

 

<対策>

S3署名URLを発行し、S3に直接PUTしてもらい、それをトリガーにLambdaを起動させる方法に変更

 

<変更後の構成>

CloudFront→APIGateway→Lambda(S3署名URL発行)

S3→Lambda

 

いろいろと勉強になりました。

しかし、AWSは問題にぶつかっても何かと別の方法があって助かります。