Я создал файл template.yaml для объявления простой лямбда-функции, которая вызывается шлюзом API.Когда я пытаюсь вызвать функцию из URL-адреса шлюза API, происходит сбой запроса с {"message": "Internal server error"}
, и в логах шлюза API Cloudwatch появляется сообщение об ошибке Недопустимые разрешения для функции Lambda .
Этоmy template.yaml:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Parameters:
AliasName:
Type: String
Default: dev
Resources:
DynamoDBTenantTable:
Type: AWS::DynamoDB::Table
Properties:
AttributeDefinitions:
- AttributeName: clientApiKey
AttributeType: S
KeySchema:
- AttributeName: clientApiKey
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
TableName: !Sub "authtable-${AliasName}"
AmeAuthenticatorLambda:
Type: AWS::Serverless::Function
Properties:
Handler: authenticator.handler
Policies: AmazonDynamoDBFullAccess
Runtime: nodejs8.10
CodeUri: src/
Environment:
Variables:
TABLE_NAME: !Sub "authtable-${AliasName}"
Events:
AuthenticatorEvent:
Type: Api
Properties:
Path: /authentication/
Method: POST
Документация SAM гласит, что приведенный выше синтаксис способен создавать необходимые разрешения и декларацию API неявно .
Я также следовалпример с веб-сайт AWS .
Если я добавлю в файл template.yaml разрешение lambda: InvokeFunction , вызов будет выполнен, но при чтении документации это должно сделатьне нужно.
Что может быть не так?