Nuxt.js(v2.2.0)をAPI Gateway+AWS LambdaにNuxt.jsのgzip機能を有効化してデプロイしてみた

Nuxt.jsをAWS Lambdaで動作させるのに参考にした記事それぞれで、Nuxt.jsのgzip機能を無効化するように実装されていますが、有効化されていたらどうなるのか試してみました。

この辺の記事です。

Nuxt.js on AWS Lambda with Serverless Framework - mya-ake com
https://mya-ake.com/posts/nuxtjs-on-aws-lambda/

>Nuxt.js はデフォルトで gzip の機能が備わっています。 ありがたい機能ではあるのですが、このままだとブラウザで表示できなくなってしまいます。（Chrome では白い画面、 Firefox では Content-Encoding に問題があると表示されます。） 細かいところまで調べきれていないのですが、恐らく API Gateway にも gzip の機能が備わっているようです。 そのため、2重に gzip がかかった状態になってしまい、ブラウザがデコードできないのだと推測されます。

Explain why disable gzip · Issue #3 · jeehyukwon/nuxt-serverless
https://github.com/jeehyukwon/nuxt-serverless/issues/3

>Turning on the gzip compression option causes errors to pass through the AWS API Gateway. I have not solved this problem yet, so I have disabled the gzip compression option.

Serverless-Side Rendering With AWS Lambda & NuxtJS
https://medium.com/@fernalvarez/serverless-side-rendering-with-aws-lambda-nuxtjs-b94d15782af5

>“performance>gzip” is for performance configurations, since we don’t want gzip based request (not quite well supported by AWS Lambda), we just disable it.

## 結果

### gzip機能を有効化したままデプロイして動作しました

現状は、Nuxt.js(v2.2.0)のgzip機能を無効化しなくてもAWS LambdaにデプロイしてAPI Gateway経由でアクセスできるようになっているみたいですね。Nuxt.jsのgzip機能を無効化しないと駄目だった状況を知らないのでなんともですが^^(2018/11/14時点)

<img width="1261" alt="Hello__Nuxt_Serverless_Template-3.png" src="https://qiita-image-store.s3.amazonaws.com/0/48549/c0b36f41-9d29-eae4-575c-52fae80f128c.png">


## 検証

以下の記事で実装したソースを利用して検証してみます。

Nuxt.js(v2.2.0)+TypeScriptなアプリをAWS Lambda+αにデプロイしてみた
https://qiita.com/kai_kou/items/5b1ebb9abc5d62545e04


```sh
> git clone https://github.com/kai-kou/nuxt-serverless.git
> npm install install
```

gzipを無効化した```compressor: { threshold: Infinity }``` 状態で実行してみます。

```sh
> cat nuxt.config.js
(略)
  router: {
    base: '/dev/'
  },
  render: {
    etag: false,
    // Disabled compression
    compressor: { threshold: Infinity },
  }
}
```

```curl -v``` で詳細をみてみました。```-H 'Accept-Encoding: gzip,deflate'``` を指定することで```curl``` でgzipが有効化確認できました。

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

```sh
> npm run build
> npm run start

> curl -v -H 'Accept-Encoding: gzip,deflate' http://localhost:3000/dev/
(略)

* Connected to localhost (127.0.0.1) port 3000 (#0)
> GET /dev/ HTTP/1.1
> Host: localhost:3000
> User-Agent: curl/7.54.0
> Accept: */*
> Accept-Encoding: gzip,deflate
>
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=utf-8
< Content-Length: 1887
< Vary: Accept-Encoding
< Date: Wed, 14 Nov 2018 02:44:58 GMT
< Connection: keep-alive
<
<!doctype html>
<html data-n-head-ssr data-n-head="">
  <head>
```

はい。リクエスト時に```Accept-Encoding: gzip,deflate``` を指定しても、gzip圧縮されないことが確認できました。

```compressor``` で無効化しているのをコメントアウトして、デプロイし直します。

```js:nuxt.config.js(一部抜粋)
(略)
  router: {
    base: '/dev/'
  },
  render: {
    etag: false,
    // Disabled compression
    // compressor: { threshold: Infinity },
  }
```

### ローカルで確認

gzip無効化の設定を外すと、gzip圧縮されることが確認できました。

```sh
> npm run build
> npm run start

> curl -v -H 'Accept-Encoding: gzip,deflate' http://localhost:3000/dev/
(略)
* Connected to localhost (127.0.0.1) port 3000 (#0)
> GET /dev/ HTTP/1.1
> Host: localhost:3000
> User-Agent: curl/7.54.0
> Accept: */*
> Accept-Encoding: gzip,deflate
>
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=utf-8
< Vary: Accept-Encoding
< Content-Encoding: gzip
< Date: Wed, 14 Nov 2018 02:41:27 GMT
< Connection: keep-alive
< Transfer-Encoding: chunked
<
�UMo�0
      ��Whv���$v��n;
(略)
```



### デプロイして確認

デプロイしてAPI Gateway経由で確認してみます。
(余談)検証の途中でわかったのですが、```curl -I``` だとヘッダーしか返さないため、```content-encoding: gzip``` がつかないみたいです。```curl -i``` だとbodyも返すので、```content-encoding: gzip``` がつきました^^

```sh
> npm run sls:deploy

> 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 03:10:59 GMT
x-amzn-requestid: e94e34b9-e7ba-11e8-85ed-a9f080e8c709
content-encoding: gzip
x-amz-apigw-id: QVPKmHKQtjMFtYg=
vary: Accept-Encoding
x-powered-by: Express
x-amzn-trace-id: Root=1-5beb9243-755915c037d52100b400d740;Sampled=0
x-cache: Miss from cloudfront
via: 1.1 7eebbd2b614349709798674fc336acf2.cloudfront.net (CloudFront)
x-amz-cf-id: aHky4Z2VlCnno0kVCpzQ9JHL4LBVHuuvT22Rnv5stsgDUQXx-rIcNw==

�UMo�0
      ��Whv���$v��n;
```

問題なくアクセスできていますね。
ブラウザで確認してみてもコンテンツが正しく表示されました。

<img width="1261" alt="Hello__Nuxt_Serverless_Template-3.png" src="https://qiita-image-store.s3.amazonaws.com/0/48549/5a3f0f80-4398-cb86-7e40-1ff49db45be8.png">


AWS Lambdaの関数を直接起動してみます。```--payload``` パラメータの値はAWS マネジメントコンソールから引っ張ってきました。

```sh
aws lambda invoke \
--invocation-type RequestResponse \
--function-name nuxt-serverless-dev-nuxt-renderer \
--log-type Tail \
--payload '{
  "body": "eyJ0ZXN0IjoiYm9keSJ9",
  "resource": "/{proxy+}",
  "path": "/",
  "httpMethod": "GET",
  "isBase64Encoded": true,
  "queryStringParameters": {},
  "pathParameters": {
    "proxy": "/"
  },
  "stageVariables": {},
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate, sdch",
    "Accept-Language": "en-US,en;q=0.8",
    "Cache-Control": "max-age=0",
    "CloudFront-Forwarded-Proto": "https",
    "CloudFront-Is-Desktop-Viewer": "true",
    "CloudFront-Is-Mobile-Viewer": "false",
    "CloudFront-Is-SmartTV-Viewer": "false",
    "CloudFront-Is-Tablet-Viewer": "false",
    "CloudFront-Viewer-Country": "US",
    "Host": "1234567890.execute-api.ap-northeast-1.amazonaws.com",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Custom User Agent String",
    "Via": "1.1 08f323deadbeefa7af34d5feb414ce27.cloudfront.net (CloudFront)",
    "X-Amz-Cf-Id": "cDehVQoZnx43VYQb9j2-nvCh-9z396Uhbp027Y2JvkCPNLmGJHqlaA==",
    "X-Forwarded-For": "127.0.0.1, 127.0.0.2",
    "X-Forwarded-Port": "443",
    "X-Forwarded-Proto": "https"
  },
  "requestContext": {
    "accountId": "123456789012",
    "resourceId": "123456",
    "stage": "prod",
    "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef",
    "requestTime": "09/Apr/2015:12:34:56 +0000",
    "requestTimeEpoch": 1428582896000,
    "identity": {
      "cognitoIdentityPoolId": null,
      "accountId": null,
      "cognitoIdentityId": null,
      "caller": null,
      "accessKey": null,
      "sourceIp": "127.0.0.1",
      "cognitoAuthenticationType": null,
      "cognitoAuthenticationProvider": null,
      "userArn": null,
      "userAgent": "Custom User Agent String",
      "user": null
    },
    "path": "/",
    "resourcePath": "/{proxy+}",
    "httpMethod": "POST",
    "apiId": "1234567890",
    "protocol": "HTTP/1.1"
  }
}' \
outputfile.txt

{
    "StatusCode": 200,
    "LogResult": "U1RBUlQgUmVxdWVzdElkOiBmYmRjNGYxNi1lN2JiLTExZTgtYWIwNS1iN2FjNzgwM2E2MjIgVmVyc2lvbjogJExBVEVTVApFTkQgUmVxdWVzdElkOiBmYmRjNGYxNi1lN2JiLTExZTgtYWIwNS1iN2FjNzgwM2E2MjIKUkVQT1JUIFJlcXVlc3RJZDogZmJkYzRmMTYtZTdiYi0xMWU4LWFiMDUtYjdhYzc4MDNhNjIyCUR1cmF0aW9uOiAyNy43OCBtcwlCaWxsZWQgRHVyYXRpb246IDEwMCBtcyAJTWVtb3J5IFNpemU6IDUxMiBNQglNYXggTWVtb3J5IFVzZWQ6IDEzOCBNQgkK",
    "ExecutedVersion": "$LATEST"
}


> cat outputfile.txt

{"isBase64Encoded":true,"statusCode":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","vary":"Accept-Encoding","content-encoding":"gzip"},"body":"H4sIAAAAAAAAA51VTW/bMAy991doAnaLv+IkdhzbwG47DD2sHTZgGAJZomOtimVIStqg6H+fZCddWjRdloss0XqPfKRJ5x+YpGbXAWrMWpRXuXsgRgzxWq8Bwjyt1fG5wLi8Qih3e7exW8ONgJd3jNoALj+DEHKErjcPBt2A2oISoDW6hXUniIE86JFlvgZD3sAj2hCjwRR4Y2ovxcHpmy1ZQ4G3HO47qYxFytZAa5H3nJmmYLDlFLz+MEK85YYT4WlKBBTRe7y9qeH2zEBTxTvDZXtw98L07PGUWudG8PbuLTcKRIE5dTyNgrrAgTbEcBrUZOvMvl0cviIaDjespgDvKXt8Z1dJGD6+sGxtNMF0CmkdhjFJYzKdp4xFUez/1hgRXeBBw7lMMJlSmrJ6PCWsIoTOJ9VlTBGLKhqNx4xVc5pUST1OIp/qA5XZCTiTic3pNK2tpnSSwiyFaD67UF06Y5QlbMIimEAdz5I4gctimtRRGMdJNU/GaURmCTD6bp56bt0AmP9J1dkMJ4X1rRwcejmvJNu90ez2DePb4YXuv2xPQctAwfMX7Fpk2TuzUbnLVBBttTqL1ym5UuDy2Ee578os/LhogK8ak427h0VF6N1KyU3LPCqFVFklrGUhO0K52WXhwhIHlnmgH/wJspObVx47sgKP2+gerL2JylP9iEI/9GMrPipR3pU3ZIf6eYWMRNeSgS0XSv0otOMCffp+g76QdcUIIi0bBtrYD/Ogs1hynG83Sg/1/bvPA/L64pAqt7qXe2XH64As760Uee8vl9ffftwul8XjoDmz06cmG2HwyJUl+/m4tuKs9AxfogQ//RqBUjbr7UaIkZs+kD3alGk73DLcpwo/jYbif93XPnOlf1rkwT7UfchIK3re+LESQJX/xJ9spjPxJ4fWmfiTA+YVvu8l10L2NxoMv9M/qDPo+F8HAAA="}
```

こちらも問題なし。

API GatewayのリソースをAWS-CLIから実行してログを確認してみます。

```sh
aws apigateway test-invoke-method \
--rest-api-id xxxxxxxxxx \
--resource-id xxxxxxxxxx \
--http-method GET \
--path-with-query-string '/' \
--headers '{"Accept-Encoding": "gzip,deflate"}'

{
    "status": 200,
    "body": "\u001f�\b\u0000\u0000\u0000\u0000\u0000\u0000\u0003�UMo�0\f��Wh\u0002v���$v\u001c��n;\f=�\u001d6`\u0018\u0002Y�c��eHJڠ��d']Z4]��,�z�|�I�\u001f��f�\u0001j�Z�W�{ F\f�Z�\u0001�<������B(w{��[Í��w��\u0000.?�\u0010r��7\u000f\u0006݀ڂ\u0012�5��u'��<�e�\u0006C��#�\u0010��\u0014xcj/���-YC��\u001c�;��E��@k�����`��\u0014��0B��\u0013�iJ\u0004\u0014�{������@S�;�e{p�����Z�F���-7\nD�9u<�����6�p\u001a�d�̾]\u001c�\"\u001a\u000e7��\u0000�){|gWI\u0018>��lm4�t\ni\u001d�1Ic2���EQ���\u0018\u0011]�AùL0�R��z<%�\"��'�eL\u0011�*\u001a�ǌUs�TI=N\"��\u0003��\t8����4���t��,�h>�P]:c�%l�\"�@\u001dϒ8��b��Q\u0018�I5O�iDf\t0�n�zn�\u0000��I��\f'���\u001c\u001cz9�$۽���\r����lOA�@��\u0017�Zd�;�Q��T\u0010m�:��)�R���G���,��h��\u001a����EE��J�M�<*�TY%�e!;B��e��\u0012\u0007�y�\u001f�\t���W\u001e;�\u0002���\u001e����S��B?�c+>*Qޕ7d��y��Dג�-\u0017J�(��\u0002}�~���u�\b\"-\u001b\u0006��\u000f�Xr�o7J\u000f����\u0003���*���{e��,�\u0014y�/���~�.���9�ӧ&\u001ba�ȕ%������\f_�\u0004?�\u001a�R6��F���>�=ڔi;�2ܧ\n?�����>s�Z��>�}�H+z���\u0012@��ğl�3�'�֙��\u0003�\u0015��%�B�7\u001a\f��?�3��_\u0007\u0000\u0000",
    "headers": {
        "X-Amzn-Trace-Id": "Root=1-5beb97b0-9fa2e94feaeabe07a1be900f;Sampled=0",
        "content-encoding": "gzip",
        "content-type": "text/html; charset=utf-8",
        "vary": "Accept-Encoding",
        "x-powered-by": "Express"
    },
    "multiValueHeaders": {
        "X-Amzn-Trace-Id": [
            "Root=1-5beb97b0-9fa2e94feaeabe07a1be900f;Sampled=0"
        ],
        "content-encoding": [
            "gzip"
        ],
        "content-type": [
            "text/html; charset=utf-8"
        ],
        "vary": [
            "Accept-Encoding"
        ],
        "x-powered-by": [
            "Express"
        ]
    },
    "log": "Execution log for request 24e4b1aa-e7be-11e8-9f95-b53002e38ff7\nWed Nov 14 03:34:08 UTC 2018 : Starting execution for request: 24e4b1aa-e7be-11e8-9f95-b53002e38ff7\nWed Nov 14 03:34:08 UTC 2018 : HTTP Method: GET, Resource Path: /\nWed Nov 14 03:34:08 UTC 2018 : Method request path: {}\nWed Nov 14 03:34:08 UTC 2018 : Method request query string: {}\nWed Nov 14 03:34:08 UTC 2018 : Method request headers: {Accept-Encoding=gzip,deflate}\nWed Nov 14 03:34:08 UTC 2018 : Method request body before transformations: \nWed Nov 14 03:34:08 UTC 2018 : Endpoint request URI: https://lambda.ap-northeast-1.amazonaws.com/2015-03-31/functions/arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxxx:function:nuxt-serverless-dev-nuxt-renderer/invocations\nWed Nov 14 03:34:08 UTC 2018 : Endpoint request headers: {x-amzn-lambda-integration-tag=24e4b1aa-e7be-11e8-9f95-b53002e38ff7, Authorization=*****************************************************************************************************************************************************************************************************************************************************************************************************************************2911da, X-Amz-Date=20181114T033408Z, x-amzn-apigateway-api-id=xxxxxxxxxx, X-Amz-Source-Arn=arn:aws:execute-api:ap-northeast-1:xxxxxxxxxxxxx:xxxxxxxxxx/test-invoke-stage/GET/, Accept=application/json, User-Agent=AmazonAPIGateway_xxxxxxxxxx, X-Amz-Security-Token=FQoGZXIvYXdzEOz//////////wEaDCTYQzpetIWQ1eEffyLBA8lI/unpTeaxyAloEAc6gttD0iPTTCHNPsGfFRwvbY2OoxJjTLHzIOtxCgsUVRzOKVJxhhbOibRkhQBurVZp2SdWyt2gPNZ+HAlouupfS6YJeg6zgUjHMT87aewlxKi9P/560vYt6h0NO9CcED60DPcdbkU3/zBmpD/kDKFxI2B/gQqpz+eVXUfEiMGzxYgh3dM3n0wjjvGKCP1hx4bzXR3jAFUpfoZdtLzNFI8qCzEvdeyvNQsmhIWzHrIqTwUObhKRdPhJW8P3LL5WYqlhiPid9cwJj9qBb/ [TRUNCATED]\nWed Nov 14 03:34:08 UTC 2018 : Endpoint request body after transformations: {\"resource\":\"/\",\"path\":\"/\",\"httpMethod\":\"GET\",\"headers\":{\"Accept-Encoding\":\"gzip,deflate\"},\"multiValueHeaders\":{\"Accept-Encoding\":[\"gzip,deflate\"]},\"queryStringParameters\":null,\"multiValueQueryStringParameters\":null,\"pathParameters\":null,\"stageVariables\":null,\"requestContext\":{\"path\":\"/\",\"accountId\":\"xxxxxxxxxxxxx\",\"resourceId\":\"xxxxxxxxxx\",\"stage\":\"test-invoke-stage\",\"domainPrefix\":\"testPrefix\",\"requestId\":\"24e4b1aa-e7be-11e8-9f95-b53002e38ff7\",\"identity\":{\"cognitoIdentityPoolId\":null,\"cognitoIdentityId\":null,\"apiKey\":\"test-invoke-api-key\",\"cognitoAuthenticationType\":null,\"userArn\":\"arn:aws:iam::xxxxxxxxxxxxx:user/kai\",\"apiKeyId\":\"test-invoke-api-key-id\",\"userAgent\":\"aws-cli/1.16.27 Python/3.6.6 Darwin/17.7.0 botocore/1.12.17\",\"accountId\":\"xxxxxxxxxxxxx\",\"caller\":\"AIDAJSYPBDTBET63KDNTY\",\"sourceIp\":\"test-invoke-source-ip\",\"accessKey\":\"AKIAJANRYGXYRZBIMEXA\",\"cognitoAuthenticationProvider\":null,\"user\":\"AIDAJSYPBDTBET63KDNTY\"},\"domainName\":\"testPrefix.testDomainName\",\"re [TRUNCATED]\nWed Nov 14 03:34:08 UTC 2018 : Sending request to https://lambda.ap-northeast-1.amazonaws.com/2015-03-31/functions/arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxxx:function:nuxt-serverless-dev-nuxt-renderer/invocations\nWed Nov 14 03:34:08 UTC 2018 : Received response. Integration latency: 322 ms\nWed Nov 14 03:34:08 UTC 2018 : Endpoint response body before transformations: {\"isBase64Encoded\":true,\"statusCode\":200,\"headers\":{\"x-powered-by\":\"Express\",\"content-type\":\"text/html; charset=utf-8\",\"vary\":\"Accept-Encoding\",\"content-encoding\":\"gzip\"},\"body\":\"H4sIAAAAAAAAA51VTW/bMAy991doAnaLv+IkdhzbwG47DD2sHTZgGAJZomOtimVIStqg6H+fZCddWjRdloss0XqPfKRJ5x+YpGbXAWrMWpRXuXsgRgzxWq8Bwjyt1fG5wLi8Qih3e7exW8ONgJd3jNoALj+DEHKErjcPBt2A2oISoDW6hXUniIE86JFlvgZD3sAj2hCjwRR4Y2ovxcHpmy1ZQ4G3HO47qYxFytZAa5H3nJmmYLDlFLz+MEK85YYT4WlKBBTRe7y9qeH2zEBTxTvDZXtw98L07PGUWudG8PbuLTcKRIE5dTyNgrrAgTbEcBrUZOvMvl0cviIaDjespgDvKXt8Z1dJGD6+sGxtNMF0CmkdhjFJYzKdp4xFUez/1hgRXeBBw7lMMJlSmrJ6PCWsIoTOJ9VlTBGLKhqNx4xVc5pUST1OIp/qA5XZCTiTic3pNK2tpnSSwiyFaD67UF06Y5QlbMIimEAdz5I4gctimtRRGMdJNU/GaURmCTD6bp56bt0AmP9J1dkMJ4X1rRwcejmvJNu90ez2DePb4YXuv2xPQctAwfMX7Fpk2TuzUbnLVBBttTqL1ym5UuDy2Ee578os/LhogK8ak427h0VF6N1KyU3LPCqFVFklrGUhO0K52WXhwhIHlnmgH/wJspObVx47sgKP2+gerL2JylP9iEI/9GMrPipR3pU3ZIf6eYWMRNeSgS0XSv0otOMCffp+g76QdcUIIi0bBtrYD/Ogs1hynG83Sg/1/bvPA/L64pAqt7qXe2XH64As760Uee8vl9ffft [TRUNCATED]\nWed Nov 14 03:34:08 UTC 2018 : Endpoint response headers: {Date=Wed, 14 Nov 2018 03:34:08 GMT, Content-Type=application/json, Content-Length=1133, Connection=keep-alive, x-amzn-RequestId=24e6ade6-e7be-11e8-8b99-0da3eca928e4, x-amzn-Remapped-Content-Length=0, X-Amz-Executed-Version=$LATEST, X-Amzn-Trace-Id=root=1-5beb97b0-9fa2e94feaeabe07a1be900f;sampled=0}\nWed Nov 14 03:34:08 UTC 2018 : Method response body after transformations: [Binary Data]\nWed Nov 14 03:34:08 UTC 2018 : Method response headers: {x-powered-by=Express, content-type=text/html; charset=utf-8, vary=Accept-Encoding, content-encoding=gzip, X-Amzn-Trace-Id=Root=1-5beb97b0-9fa2e94feaeabe07a1be900f;Sampled=0}\nWed Nov 14 03:34:08 UTC 2018 : Successfully completed execution\nWed Nov 14 03:34:08 UTC 2018 : Method completed with status: 200\n",
    "latency": 331
}
```

長くなったので、ログを抜粋します。

```log
Execution log for request 24e4b1aa-e7be-11e8-9f95-b53002e38ff7
Wed Nov 14 03:34:08 UTC 2018 : Starting execution for request: 24e4b1aa-e7be-11e8-9f95-b53002e38ff7
Wed Nov 14 03:34:08 UTC 2018 : HTTP Method: GET, Resource Path: /
Wed Nov 14 03:34:08 UTC 2018 : Method request path: {}
Wed Nov 14 03:34:08 UTC 2018 : Method request query string: {}
Wed Nov 14 03:34:08 UTC 2018 : Method request headers: {Accept-Encoding=gzip,deflate}
Wed Nov 14 03:34:08 UTC 2018 : Method request body before transformations: 
Wed Nov 14 03:34:08 UTC 2018 : Endpoint request URI: https://lambda.ap-northeast-1.amazonaws.com/2015-03-31/functions/arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxxx:function:nuxt-serverless-dev-nuxt-renderer/invocations
Wed Nov 14 03:34:08 UTC 2018 : Endpoint request headers: {x-amzn-lambda-integration-tag=24e4b1aa-e7be-11e8-9f95-b53002e38ff7, Authorization=*****************************************************************************************************************************************************************************************************************************************************************************************************************************2911da, X-Amz-Date=20181114T033408Z, x-amzn-apigateway-api-id=xxxxxxxxxx, X-Amz-Source-Arn=arn:aws:execute-api:ap-northeast-1:xxxxxxxxxxxxx:xxxxxxxxxx/test-invoke-stage/GET/, Accept=application/json, User-Agent=AmazonAPIGateway_xxxxxxxxxx, X-Amz-Security-Token=FQoGZXIvYXdzEOz//////////wEaDCTYQzpetIWQ1eEffyLBA8lI/unpTeaxyAloEAc6gttD0iPTTCHNPsGfFRwvbY2OoxJjTLHzIOtxCgsUVRzOKVJxhhbOibRkhQBurVZp2SdWyt2gPNZ+HAlouupfS6YJeg6zgUjHMT87aewlxKi9P/560vYt6h0NO9CcED60DPcdbkU3/zBmpD/kDKFxI2B/gQqpz+eVXUfEiMGzxYgh3dM3n0wjjvGKCP1hx4bzXR3jAFUpfoZdtLzNFI8qCzEvdeyvNQsmhIWzHrIqTwUObhKRdPhJW8P3LL5WYqlhiPid9cwJj9qBb/ [TRUNCATED]
Wed Nov 14 03:34:08 UTC 2018 : Endpoint request body after transformations: {\"resource\":\"/\",\"path\":\"/\",\"httpMethod\":\"GET\",\"headers\":{\"Accept-Encoding\":\"gzip,deflate\"},\"multiValueHeaders\":{\"Accept-Encoding\":[\"gzip,deflate\"]},\"queryStringParameters\":null,\"multiValueQueryStringParameters\":null,\"pathParameters\":null,\"stageVariables\":null,\"requestContext\":{\"path\":\"/\",\"accountId\":\"xxxxxxxxxxxxx\",\"resourceId\":\"xxxxxxxxxx\",\"stage\":\"test-invoke-stage\",\"domainPrefix\":\"testPrefix\",\"requestId\":\"24e4b1aa-e7be-11e8-9f95-b53002e38ff7\",\"identity\":{\"cognitoIdentityPoolId\":null,\"cognitoIdentityId\":null,\"apiKey\":\"test-invoke-api-key\",\"cognitoAuthenticationType\":null,\"userArn\":\"arn:aws:iam::xxxxxxxxxxxxx:user/kai\",\"apiKeyId\":\"test-invoke-api-key-id\",\"userAgent\":\"aws-cli/1.16.27 Python/3.6.6 Darwin/17.7.0 botocore/1.12.17\",\"accountId\":\"xxxxxxxxxxxxx\",\"caller\":\"AIDAJSYPBDTBET63KDNTY\",\"sourceIp\":\"test-invoke-source-ip\",\"accessKey\":\"AKIAJANRYGXYRZBIMEXA\",\"cognitoAuthenticationProvider\":null,\"user\":\"AIDAJSYPBDTBET63KDNTY\"},\"domainName\":\"testPrefix.testDomainName\",\"re [TRUNCATED]
Wed Nov 14 03:34:08 UTC 2018 : Sending request to https://lambda.ap-northeast-1.amazonaws.com/2015-03-31/functions/arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxxx:function:nuxt-serverless-dev-nuxt-renderer/invocations
Wed Nov 14 03:34:08 UTC 2018 : Received response. Integration latency: 322 ms
Wed Nov 14 03:34:08 UTC 2018 : Endpoint response body before transformations: {\"isBase64Encoded\":true,\"statusCode\":200,\"headers\":{\"x-powered-by\":\"Express\",\"content-type\":\"text/html; charset=utf-8\",\"vary\":\"Accept-Encoding\",\"content-encoding\":\"gzip\"},\"body\":\"H4sIAAAAAAAAA51VTW/bMAy991doAnaLv+IkdhzbwG47DD2sHTZgGAJZomOtimVIStqg6H+fZCddWjRdloss0XqPfKRJ5x+YpGbXAWrMWpRXuXsgRgzxWq8Bwjyt1fG5wLi8Qih3e7exW8ONgJd3jNoALj+DEHKErjcPBt2A2oISoDW6hXUniIE86JFlvgZD3sAj2hCjwRR4Y2ovxcHpmy1ZQ4G3HO47qYxFytZAa5H3nJmmYLDlFLz+MEK85YYT4WlKBBTRe7y9qeH2zEBTxTvDZXtw98L07PGUWudG8PbuLTcKRIE5dTyNgrrAgTbEcBrUZOvMvl0cviIaDjespgDvKXt8Z1dJGD6+sGxtNMF0CmkdhjFJYzKdp4xFUez/1hgRXeBBw7lMMJlSmrJ6PCWsIoTOJ9VlTBGLKhqNx4xVc5pUST1OIp/qA5XZCTiTic3pNK2tpnSSwiyFaD67UF06Y5QlbMIimEAdz5I4gctimtRRGMdJNU/GaURmCTD6bp56bt0AmP9J1dkMJ4X1rRwcejmvJNu90ez2DePb4YXuv2xPQctAwfMX7Fpk2TuzUbnLVBBttTqL1ym5UuDy2Ee578os/LhogK8ak427h0VF6N1KyU3LPCqFVFklrGUhO0K52WXhwhIHlnmgH/wJspObVx47sgKP2+gerL2JylP9iEI/9GMrPipR3pU3ZIf6eYWMRNeSgS0XSv0otOMCffp+g76QdcUIIi0bBtrYD/Ogs1hynG83Sg/1/bvPA/L64pAqt7qXe2XH64As760Uee8vl9ffft [TRUNCATED
nWed Nov 14 03:34:08 UTC 2018 : Endpoint response headers: {Date=Wed, 14 Nov 2018 03:34:08 GMT, Content-Type=application/json, Content-Length=1133, Connection=keep-alive, x-amzn-RequestId=24e6ade6-e7be-11e8-8b99-0da3eca928e4, x-amzn-Remapped-Content-Length=0, X-Amz-Executed-Version=$LATEST, X-Amzn-Trace-Id=root=1-5beb97b0-9fa2e94feaeabe07a1be900f;sampled=0}
Wed Nov 14 03:34:08 UTC 2018 : Method response body after transformations: [Binary Data]
Wed Nov 14 03:34:08 UTC 2018 : Method response headers: {x-powered-by=Express, content-type=text/html; charset=utf-8, vary=Accept-Encoding, content-encoding=gzip, X-Amzn-Trace-Id=Root=1-5beb97b0-9fa2e94feaeabe07a1be900f;Sampled=0}
Wed Nov 14 03:34:08 UTC 2018 : Successfully completed execution
Wed Nov 14 03:34:08 UTC 2018 : Method completed with status: 200
```

どうやら、Nuxt.jsのgzip機能を有効化したままでも問題ないみたいです。


## まとめ

現状は、Nuxt.js(v2.2.0)のgzip機能を無効化しなくてもAWS LambdaにデプロイしてAPI Gateway経由でアクセスできるようになっているみたいですね。Nuxt.jsのgzip機能を無効化しないと駄目だった状況を知らないのでなんともですが^^
(2018/11/14時点)


## 参考

Nuxt.js on AWS Lambda with Serverless Framework - mya-ake com
https://mya-ake.com/posts/nuxtjs-on-aws-lambda/

Explain why disable gzip · Issue #3 · jeehyukwon/nuxt-serverless
https://github.com/jeehyukwon/nuxt-serverless/issues/3

Serverless-Side Rendering With AWS Lambda & NuxtJS
https://medium.com/@fernalvarez/serverless-side-rendering-with-aws-lambda-nuxtjs-b94d15782af5

curlでgzipが効いているかどうか確認する | ハックノート
https://hacknote.jp/archives/13627/

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

ステップ 3: Lambda 関数を呼び出す (AWS CLI) - AWS Lambda
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-userapp-walkthrough-custom-events-invoke.html

test-invoke-method — AWS CLI 1.16.54 Command Reference
https://docs.aws.amazon.com/cli/latest/reference/apigateway/test-invoke-method.html

Nuxt.js(v2.2.0)+TypeScriptなアプリをAWS Lambda+αにデプロイしてみた
https://qiita.com/kai_kou/items/5b1ebb9abc5d62545e04