Определите роль для Http и websocket API в одном serverlss.yml - PullRequest
0 голосов
/ 27 февраля 2019

Я использую AWS Websocket API с бессерверной платформой 1.38.0 и хочу развернуть как http, так и webamcket lamda с одним serverless.yml и одной существующей ролью IAM.Поэтому для этого я объявил роль arn на вкладке провайдера, но когда я запускаю sls deploy -v, он говорит: error - cannot read properties undefined.

Насколько я понимаю, мы можем определить роль arn только на уровне функции для типа события http илиwss или наоборот.

Пожалуйста, помогите мне, как определить роль EXISTING для обоих API на глобальном или функциональном уровне, пример конфигурации YAML действительно поможет.

Мой пример YAML:

hello:
  handler: CsharpHandlers::AwsDotnetCsharp.Handler::Hello
  role: arn:aws:iam::019095984934:role/LambdaDeployment
  name: APITypeHello
  events:
    - http:
        path: api/shipments
        method: post
        cors: true
chatMessage:
  handler: CsharpHandlers::AwsDotnetCsharp.WebsocketHandler::GetWSSRequest
  #role: arn:aws:iam::019095984934:role/websocketTesting-dev-ap-southeast-1-lambdaRole - below is the custom admin role
  #role: arn:aws:iam::019095984934:role/LambdaDeployment
  name: chatMessage
  iamRoleStatements:
    - Effect: Allow
      Action:
        - lambda:InvokeFunction,
        - lambda:InvokeAsync
      Resource: “arn:aws:lambda:::function:*”

Спасибо, Анкур

1 Ответ

0 голосов
/ 28 февраля 2019

Вы можете установить role и iamRoleStatements на уровне provider, чтобы применять настраиваемые роли и операторы ролей ко всем функциям в вашем сервисе.

например,

provider:
  role: arn:aws:iam::019095984934:role/LambdaDeployment
  iamRoleStatements:
    - Effect: Allow
      Action:
        - lambda:InvokeFunction,
        - lambda:InvokeAsync
      Resource: “arn:aws:lambda:::function:*”

functions:
  hello:
    # ...
  chatMessage:
    # ...

Поставщикнастройки будут применены как к hello, так и к chatMessage функциям.

Я советую вам придерживаться настройки iamRoleStatements на уровне provider и использовать role только в том случае, если вам необходимо использовать предварительносуществующая роль за пределами вашего развертывания без сервера.

Дополнительные сведения см. в документации IAM .

...