share facebook facebook twitter menu hatena pocket slack

2018.12.11 TUE

API Gatewayでgzipが有効かcurlを利用して確認する方法

甲斐 甲

WRITTEN BY 甲斐 甲

Nuxt.jsのgzip機能を検証するのにAPI Gatewayのエンドポイントでgzip圧縮が有効かcurl で確認していたのですが、そのときにわかったオプションの利用方法についてまとめました。

API Gatewayでは-i オプションで確認する

実際にgzipが有効なAPI Gatewayのエンドポイントで試してみます。
-I オプションでHeaderのみ取得します。

> curl -I -H 'Accept-Encoding: gzip,deflate' https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/

HTTP/2 200
content-type: text/html; charset=utf-8
content-length: 1887
date: Wed, 14 Nov 2018 04:36:25 GMT
x-amzn-requestid: d810a342-e7c6-11e8-a275-c181ecb58436
x-amzn-remapped-content-length: 1887
x-amz-apigw-id: QVbrZHWFtjMFRlQ=
vary: Accept-Encoding
x-powered-by: Express
x-amzn-trace-id: Root=1-5beba648-ea3c9a54a60a0c3010121cf0;Sampled=0
x-cache: Miss from cloudfront
via: 1.1 13f9acb9132808e8bc1d9cdb66665fd2.cloudfront.net (CloudFront)
x-amz-cf-id: GEfg6hZZ7Q0ZSpOHITs4w1JdeHqWnsXRTzoVMqrxe4SQRIubAqzddg==

はい。
content-encoding: gzip がありません。

-i オプションでBodyも合わせて取得してみます。

> curl -i -H 'Accept-Encoding: gzip,deflate' https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/

HTTP/2 200
content-type: text/html; charset=utf-8
content-length: 713
date: Wed, 14 Nov 2018 04:37:17 GMT
x-amzn-requestid: f72be533-e7c6-11e8-816a-6bda176640bb
content-encoding: gzip
x-amz-apigw-id: QVbzjH91NjMFfOw=
vary: Accept-Encoding
x-powered-by: Express
x-amzn-trace-id: Root=1-5beba67d-eedd4e78b2aca1ac1dc09830;Sampled=0
x-cache: Miss from cloudfront
via: 1.1 c0e128ce87e0e7831036286606c64e34.cloudfront.net (CloudFront)
x-amz-cf-id: -E9TiEC9mDdPyrfF70uPmE0O0IKXaonk_ksBUem60lKsLjW6__uOLQ==

�UMo�0
      ��Whv���$v��n;
                    =�6`Y�c��eHJڠ��d']Z4]��,�z�|�I���f�j�Z�W�{ F
                                                                �Z��<������B(w{��[Í��w��.?�r��7݀ڂ�5��u'��<�e�C��#���xcj/���-YC���;��E��@k�����`����0B���iJ�{������@S�;�e{p�����Z�F���-7
D�9u<�����6�p�d�̾]�"7���){|gWI>��lm4�t
i�1Ic2���EQ���]�AùL0�R��z<%�"��'�eL�*�njUs�TI=N"����     8����4���t��,�h>�P]:c�%l�"�@ϒ8��b��Q�I5O�iDf    0�n�zn���I��
����lOA�@���Zd�;�Q��Tm�:��)�R���G���,��h������EE��J�M�<*�TY%�e!;B��e���y��      ���W;��������S��B?�c+>*Qޕ7d��y��Dג�-J�(��}�~���u"-���Xr�o7J�������*���{e��,�y�/���~�.���9�ӧ&�ȕ%������
                                                                  _�?��R6��F���>�=ڔi;�2ܧ
?�����>s�Z��>�}�H+z���@��ğl�3�'�֙�����%�B�7
                                          ��?�3��_⏎

content-encoding: gzip が付きました。なんで?

他のサイトは-I オプションで大丈夫(っぽい)

API Gatewayのエンドポイントを利用していなさそうなサイトで確認してみます。

> curl -I -H 'Accept-Encoding: gzip,deflate' https://qiita.com

HTTP/2 200
date: Wed, 14 Nov 2018 04:40:25 GMT
content-type: text/html; charset=utf-8
server: nginx
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
etag: W/"35a6585bbe0ad2d1ef8c3f53e8882d8e"
cache-control: max-age=0, private, must-revalidate
set-cookie: _qiita_login_session=dmlTUS9HVjRnSUs1b2JpS2QzSWttL3VxSlpnM0RpTlNrMnl2cnp2ZUhTYUE4aC8vY3pZTjRSWE9OMlVGcXBySktVcmw2dklodTBMcjVBU3lhUDdPQkw0dk55T2orc0FOb3I3UG92MkRHZytiekdkd3JoUDk0MU9IVEdpemJSUW1INkdtRUpSaDlqZ0tHcXdRcE9OOWxuZGg4WWFPMXRFK0FBMHBWZ0oxWk9Rd2QvUDJITG1BcWtkSDIva3RRQVJ4LS1OK2pRNHQ4MHRsTjBDTHh0Vy9XN3VnPT0%3D--7368e2740a4c60dc13e235bf32b4bc3e26a04734; domain=.qiita.com; path=/; expires=Thu, 14 Nov 2019 04:40:25 -0000; HttpOnly
x-runtime: 0.136748
strict-transport-security: max-age=2592000
x-request-id: f7138814-44ff-4d74-8163-ddf9ebcffa49
content-encoding: gzip
> curl -i -H 'Accept-Encoding: gzip,deflate' https://qiita.com

HTTP/2 200
date: Wed, 14 Nov 2018 04:40:49 GMT
content-type: text/html; charset=utf-8
server: nginx
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
etag: W/"21cf86018eed14eac764c519337453e6"
cache-control: max-age=0, private, must-revalidate
set-cookie: _qiita_login_session=xxx; domain=.qiita.com; path=/; expires=Thu, 14 Nov 2019 04:40:49 -0000; HttpOnly
x-runtime: 0.160464
strict-transport-security: max-age=2592000
x-request-id: 041b5079-05bb-4da7-be4c-2f358bcf5048
content-encoding: gzip

�}{w��|��Y�����_���1�A��Bఴ���&�4bfd��d�ئ�z�-Ph�
�KK��iK[Z�z��b'���Gx{ό��F���t�����}y�����綟}�[���_�x�P����C�'%��&����I�xf�{%sJ�����Ag��~LU�i٠�ʮ�n\�q�������c�4J�CtFւ�֠�ȏii����;$��o�h�zH���J��|�Fq�R�ކ�13�=�i+�$t����FZ:y0%p��Lq\��Z �v#�ү���Tj�z48j�6��!�&"y"�h���LM       Q�?�8nGӕ����a������3��:-��&��x�^�r�� a��iD�z/r�Rt�a�EW�GILx����s'hy~
 Bw��T�#+hE�Z~�Mc�
                  B�YF���&      �i�jBM�8k
(略)

Qiitaさんは-I-i の両方でcontent-encoding: gzip が含まれています。

API Gatewayだけの問題なのでしょうか?

参考

curl コマンド 使い方メモ – Qiita
https://qiita.com/yasuhiroki/items/a569d3371a66e365316f

Nginxのgzipが動いているか確認する方法 ~ クライアントサイド~ – Qiita
https://qiita.com/ukitazume/items/fff67c15da7b81cfa6ac

元記事はこちら

API Gatewayでgzipが有効かcurlを利用して確認する方法

甲斐 甲

甲斐 甲

2018/7にJOIN。 最近の好みはサーバレスです。なんでもとりあえず試します。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。