Установить запись aws authorizer для файла лямбда-функции asp.net core serverless.template

Я пытаюсь установить уже существующую функцию авторизации в моем приложении .Net Core Web API. Когда я использую исключительно aws lambda nodejs, файл .yml для этого выглядит так:

custom:
  defaultStage: test
  currentStage: ${opt:stage, self:custom.defaultStage} 
  defaultRegion: us-east-1
  currentRegion: ${opt:region, self:custom.defaultRegion}
  **defaultAuthorizer**: us-east-1:xxxxxxxx:function:TypeToken-test-Authorizer
  **currentAuthorizer**: ${opt:authorizer, self:custom.defaultAuthorizer}

provider:
  name: aws
  runtime: nodejs6.10
  stage: ${self:custom.currentStage}
  profile: ${opt:profile, "default"} 
  region: ${self:custom.currentRegion}

functions:
  MyFunctionName:
    handler: handlerTestAPI.myFunctionName
    events:
      - http:
          path: myFunctionName
          method: post
          cors: true
          integration: lambda
          **authorizer:**
            arn: arn:aws:lambda:${self:custom.currentAuthorizer}
            resultTtlInSeconds: 0
            identitySource: method.request.header.Authorization
            type: token

В этом случае файл serverless.template приложения ASP.NET Core выглядит следующим образом:

"Resources" : {

    "AspNetCoreFunction" : {
      "Type" : "AWS::Serverless::Function",
      "Properties": {
        "Handler": "Test.API::Project.API.LambdaEntryPoint::FunctionHandlerAsync",
        "Runtime": "dotnetcore2.1",
        "CodeUri": "",
        "MemorySize": 256,
        "Timeout": 30,
        "Role": null,
        "Policies": [ "AWSLambdaFullAccess" ],
        "Environment" : {
          "Variables" : {
            "TestTable" : { "Fn::If" : ["CreateProjectTable", {"Ref":"ProjectTable"}, { "Ref" : "ProjectTableName" } ] }
          }
        },
        "Events": {
          "PutResource": {
            "Type": "Api",
            "Properties": {
              "Path": "/{proxy+}",
              "Method": "ANY"
            }
          }
        }
      }
    }

Я искал шаблоны, в которых существующий авторизатор устанавливается поверх бессерверной функции ядра .net с использованием файла serverless.template, но еще не нашел его.

Спасибо за ответ.

3
0
1 055
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что это широко востребованная функция, но еще не поддерживаемая до нескольких днейs назад

Страница github теперь обновлена

https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api

Теперь вы можете использовать свойство AUTH

Auth configuration for this specific Api+Path+Method. Useful for overriding the API's DefaultAuthorizer or setting auth config on an individual path when no DefaultAuthorizer is specified.

Шаблон по умолчанию создает неявный шлюз API. Для установки анторизатора может потребоваться создать явный шлюз API

Кроме того, на их странице Github есть пример.

Я тоже видел эту опцию несколько дней назад и пробовал что-то вроде: "Events": {"PutResource": {"Type": "Api", "Properties": {"Path": "/ {proxy +}", "Method" : "ANY", "Auth": {"DefaultAuthorizer": "MyAuthorizer", "Authorizers": {"MyAuthorizer": {"FunctionPayloadType": "TOKEN", "FunctionArn": "arn: aws: lambda: us-west -1: 1234343545: function: MyAuthorizer-e‌ nv-Lambda "}}}}} Но я не вижу, чтобы в консоли API Gateway применялись какие-либо изменения в конфигурации авторизатора после его развертывания с обновленным бессерверным файлом.

CoderRoller 02.11.2018 03:00

@CoderRoller. Можете ли вы зайти в свою консоль => CloudFormation => ваш API => [Редактировать шаблон в дизайнере] и посмотреть, есть ли какие-либо изменения, отраженные в сгенерированном JSON?

qkhanhpro 02.11.2018 03:44

Я вижу это в исходном шаблоне: Events ": {" PutResource ": {" Type ":" Api "," Properties ": {" Path ":" / ‌ {proxy +} "," Method ":" ‌ ANY "," Auth ": {" Defaul‌ tAuthorizer ":" MyAuth‌ orizer "}}, но я не вижу его в обработанном шаблоне. У меня установлена ​​последняя версия .NetCore SDK и инструменты AWS для Visual Studio 2017, кстати .

CoderRoller 02.11.2018 05:56

@CoderRoller Я только что проверил последнюю версию. Шаблон по умолчанию создает неявный шлюз API. Чтобы установить анторизатор, мне нужно было создать явный шлюз API. Вам должно быть проще понять imgur.com/OkM9vpo И пример страницы GitHub github.com/awslabs/serverless-application-model/blob/release‌ /…

qkhanhpro 02.11.2018 16:36

Я попробовал конфигурацию здесь: imgur.com/EYwgRcs, но откат завершен, когда я вижу журналы событий, я вижу это: imgur.com/a/1qZvkWo, обратите внимание, что я просто использую уже развернутый авторизатор и его ARN, поэтому у меня нет части MyAuthFunction у вас есть в вашем образе. Мне это тоже нужно? Или теперь это может быть только проблема с разрешениями ?. Большое спасибо.

CoderRoller 03.11.2018 18:38

Похоже, для меня проблема с разрешением. В этой части я не уверен. Может быть, вы можете создать для этого отдельный вопрос. Обновлю последний комментарий к ответу

qkhanhpro 04.11.2018 03:34

Другие вопросы по теме