Amazon говорит, что у меня есть синтаксическая ошибка в этом yml-файле, может ли кто-нибудь ее найти? - PullRequest
0 голосов
/ 16 июня 2020

Я создаю остальной api с лямбда и динамодб.

Я набираю sls deploy в терминале, который должен развернуть мою функцию на aws, но это дает мне синтаксическую ошибку и не говорит, где ошибка.

Другой файл создается с использованием файла yml, который использует aws, но я отправляю файл yml, так как его легче читать.

Это файл yml. Я возился с ним, чтобы получить правильный синтаксис, но он все еще не работает.

Точная ошибка:

Произошла ошибка: IamRoleLambdaExecution - синтаксические ошибки в политике. (Сервис: AmazonIdentityManagement; Код состояния: 400; Код ошибки: MalformedPolicyDocument; Идентификатор запроса: b089926b-6d47-4111-9710-e3b6987fd8d7).

Я могу опубликовать другой файл, если это упростит решение . Может кто-нибудь найти недоработку в этом файле?

service: sls

custom:
  settings:
    POSTS_TABLE: posts

provider:
  name: aws
  runtime: nodejs12.x
  environment: ${self:custom.settings}
  region: eu-west-2
  iamRoleStatements: 
    - Effect: "Allow"
      Action:
        - dynamodb: DescribeTable
        - dynamodb: Scan
        - dynamodb: GetItem
        - dynamodb: PutItem
        - dynamodb: UpdateItem
        - dynamodb: DeleteItem
      Resource:
        - "arn:aws:dynamodb:${self:provider.region}:*:table/${self:custom.settings.POSTS_TABLE}"

functions:
  createPost:
    handler: handler.createPost
    events:
    - http:
        path: /post
        method: post

resources: 
  Resources:
    PostsTable:
      Type: AWS::DynamoDB::Table
      Properties:
        AttributeDefinitions:
        - AttributeName: "id"
          AttributeType: "S"
        KeySchema:
        - AttributeName: "id"
          KeyType: "HASH"
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1
        TableName: ${self:custom.settings.POSTS_TABLE}

1 Ответ

1 голос
/ 16 июня 2020

Вероятная причина в том, что в названиях правильных действий нет пробелов . Таким образом, вместо

        - dynamodb: DescribeTable
        - dynamodb: Scan
        - dynamodb: GetItem
        - dynamodb: PutItem
        - dynamodb: UpdateItem
        - dynamodb: DeleteItem

должно быть

        - dynamodb:DescribeTable
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
...