Пользовательская переменная для ENV всегда выдает ошибку при развертывании, безсерверная структура - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь использовать сервис S3 в моем проекте.

Я сохраняю пользовательскую переменную и использую ее в свойстве провайдера:

service: snapnext

custom:
  imagesBucketName: snapnext-images

provider:
  name: aws
  runtime: nodejs6.10
  iamRoleStatements: # IAM permissions granted to all functions
    - Effect: Allow
      Action:
        - S3:GetObject
      Resource:
        - Fn::Join:
            - ''
            - - 'arn:aws:s3:::'
              - '${self:custom.imagesBucketName}/*'
  environment:
    IMAGES_BUCKET_NAME: ${self:custom.imagesBucketName}

functions:
  downloadImage: # Define a new Function
    handler: functions/downloadImage.handler
    events:
      - http:
          path: images
          method: post

resources:
  Resources:
    ImagesBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:custom.imagesBucketName}
        AccessControl: PublicRead

plugins:
  - serverless-offline

Когда я пытаюсь развернуть, я всегда получаю сообщение об ошибке, подобное этому enter image description here

Есть идеи, почему это происходит? И как лучше отлаживать в безсерверной среде, особенно для .yml файла?

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Вы сконфигурировали сервер без сервера для создания корзины с именем snapnext-images, и когда он пытается это сделать, он не может этого сделать, потому что ... он уже существует.

При условии, что имя сегмента доступно (имена сегментов доступны всем), либо:

  • Убедитесь, что корзина не существует до первого развертывания, чтобы безсерверный сервер мог выполнять свою работу; или
  • Не определяйте корзину для создания и используйте существующую корзину; или
  • Выберите другое имя, если вы хотите создать новую корзину и сохранить существующую корзину.

Это не имеет ничего общего с пользовательскими переменными.

0 голосов
/ 06 марта 2019

Вы пытаетесь создать ресурс s3 при развертывании своего стека. Вы получите эту ошибку, только имя группы уже существует. Имена сегментов должны быть уникальными для разных регионов и аккаунтов. Вы должны быть осторожны / внимательны с созданием ресурсов S3 Bucket в формировании облака.

  • Перед развертыванием убедитесь, что он не существует Многократное удаление стека не удаляет корзину S3, созданную вместе со стеком, если в корзине есть объекты / файлы. Вам нужно написать пользовательскую лямбду, запускаемую при событии delete bucket, чтобы удалить все содержимое перед удалением корзины.
...