Я создаю остальной 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}