AWS Загрузка файла ALB / Cloudfront - возвращает код состояния 413 - PullRequest
0 голосов
/ 20 февраля 2020

Контекст

Я запускаю свои приложения, используя CloudFront, S3, ALB и Kubernetes. Бэкэнд (то есть API) работает в Kubernetes (EKS), предоставленный с помощью publi c ALB. Интерфейс работает как сайт c, размещенный в корзине S3 и обслуживаемый через облачный фронт. Все это управляется через Terraform.

Проблема

Когда я загружаю файл размером более 7 МБ, загрузка завершается неудачно. Если я проверяю журналы API в контейнере k8s, я вижу:

 Completed 413 Payload Too Large in 1651ms

Как видите, возвращается код состояния 413.

Мой фрагмент ALB:

resource "kubernetes_ingress" "example" {
  metadata {
    name      = "example_name"
    namespace = "example_namespace"

    annotations = {
      "kubernetes.io/ingress.class"                = "alb"
      "alb.ingress.kubernetes.io/scheme"           = "internet-facing"
  ...
    }
...

Есть идеи, почему я это понимаю?

1 Ответ

0 голосов
/ 21 февраля 2020

Это ограничение может быть связано с текущими настройками вашего nginx входного контроллера . Как вы можете прочитать в документации :

Максимальный размер тела пользователя

Для NGINX будет возвращена ошибка 413 клиенту, когда размер запроса превышает максимально допустимый размер тела запроса клиента. Этот размер можно настроить с помощью параметра client_max_body_size.

. Чтобы настроить этот параметр глобально для всех правил входа, значение proxy-body-size можно задать в NGINX ConfigMap . Чтобы использовать пользовательские значения в правиле Ingress, определите эти аннотации:

nginx.ingress.kubernetes.io/proxy-body-size: 8m

Поэтому, если вы не хотите устанавливать эту опцию глобально в nginx ingress controller ConfigMap, вы можете настроить его, добавив следующую аннотацию к определению входного ресурса :

nginx.ingress.kubernetes.io/proxy-body-size: 8m

Дайте мне знать, если это поможет.

...