AWS Шаблон SAM не выполняет BuildMethod - PullRequest
1 голос
/ 29 мая 2020

У меня есть лямбда-функция с несколько нестандартной упаковкой. Я использую Makefile, чтобы упаковать то, что мне нужно, и использовать его в качестве метода сборки с командой sam build. Однако я не вижу выполнения этого make-файла. Не могу понять, почему нет. Вот что у меня есть:

sam_template.yaml:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  subscriptions_functions

  Sample SAM Template for subscriptions_functions

Globals:
  Function:
    Timeout: 3

Resources:
  GetSubscriptionsFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: .
      Handler: app.lambda_handler_individual_methods
      Runtime: python3.7
      Events:
        GetSubscriptions:
          Type: Api 
          Properties:
            Path: /subscriptions
            Method: get
    Metadata:
      BuildMethod: makefile
    Environment:
      Variables:
        SERVICE_METHOD_NAME: 'xyz'
        REQ_CLASS_NAME: 'xyz'
        RES_CLASS_NAME: 'xyz'

Makefile: (название основано на некоторых AWS примерах)


build-GetSubscriptionsFunction:
    @echo "Buliding artifacts with sls. Destination dir " $(ARTIFACTS_DIR)
    sls package --env aws
    mkdir -p $(ARTIFACTS_DIR)
    unzip .serverless/subscriptions.zip -d $(ARTIFACTS_DIR)
    cp requirements.txt $(ARTIFACTS_DIR)
    python -m pip install -r requirements.txt -t $(ARTIFACTS_DIR)
    rm -rf $(ARTIFACTS_DIR)/bin

Сборка завершена когда я запускаю sam build -t sam_template.yaml, но могу сказать, что Makefile не запускался (сообщения не распечатывались, и он создал бы каталог .serverless, но этого не произошло)

Кто-нибудь знает, что такое неправильно в этой настройке?

1 Ответ

0 голосов
/ 29 мая 2020

так что я понял это, и это не имеет ничего общего с синтаксисом. Я работал с терминала IntelliJ. Так как я врезался в стену этим, я начал ковыряться и запускать несколько других команд SAM. Запуск sam validate также продолжал давать сбой, но с ошибкой, указывающей на неустановленную область по умолчанию. Мой регион был правильно установлен в .aws/config, и я даже попытался экспортировать переменную env AWS_DEFAULT_REGION, но ничего не сработало. С неустановленным регионом все время выходило из строя. Итак, я начал изучать свои плагины в IntelliJ и обнаружил, что у меня установлены как AWS Toolkit, так и Debugger for AWS Lambda (от Thundera). Я удалил последнюю и снова в деле. Непонятно, почему этот плагин мешал работе моей консоли и cli, но это было так. Избавление от него помогло

...