Выполнение не выполнено из-за ошибки конфигурации: неверные разрешения для функции Lambda - файл YAML - PullRequest
0 голосов
/ 09 июля 2019

Привет, ребята, поэтому я пытаюсь создать API-шлюз, который использует лямбду, но у меня проблема с недопустимыми разрешениями. Я нашел некоторую информацию в Интернете, но я не смог ее выяснить. Вот некоторая соответствующая информация из моего файла yaml:

ApiGatewayUploadImageMethod:
Type: AWS::ApiGateway::Method
Properties:
  ApiKeyRequired: false
  AuthorizationType: NONE
  HttpMethod: "POST"
  OperationName: "uploadImage"
  ResourceId: !Ref ImagesApiResource
  RestApiId: !Ref ImagesApiGateway
  Integration:
    ConnectionType: INTERNET
    Credentials: !GetAtt LambdaRole.Arn
    IntegrationHttpMethod: POST
    PassthroughBehavior: WHEN_NO_MATCH
    TimeoutInMillis: 29000
    Type: AWS_PROXY
    Uri: !Sub 'arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${myLambdaFunction.Arn}/invocations'


LambdaRole:
Type: AWS::IAM::Role
Properties:
  ManagedPolicyArns:
    - Ref: LogPolicy
    - Ref: LambdaPolicy
  AssumeRolePolicyDocument:
    Version: 2012-10-17
    Statement:
      - Effect: Allow
        Action:
          - sts:AssumeRole
        Principal:
          Service:
            - appsync.amazonaws.com
            - apigateway.amazonaws.com
            - lambda.amazonaws.com


LambdaPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
  PolicyDocument:
    Version: 2012-10-17
    Statement:
      - Effect: Allow
        Action:
          - lambda:*
        Resource:
          - !GetAtt MyLambdaFunction.Arn
          - !Sub ${MyLambdaFunction.Arn}:*

MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
  CodeUri: src/project-images
  Handler: post.handler
  Role: !GetAtt XrS3Role.Arn
  Runtime: nodejs10.x
  Timeout: 60

Под ApiGateway: Method doc указано L Use the AWS::Lambda::Permission resource to grant API Gateway permission to invoke your Lambda function., поэтому я считаю, что мой виновник таков:

LambdaPermission:
Type: AWS::Lambda::Permission
Properties:
  Action: lambda:InvokeFunction
  FunctionName: !Ref MyLambdaFunction
  Principal: apigateway.amazonaws.com

Я видел, как онлайн люди добавляли sourcerArn, но я не уверен, какой формат использовать. Я также понимаю, что sourceArn ограничивает доступ только к предоставляемым услугам. Я что-то упустил в своем разрешении лямбда? или я что-то упускаю или делаю не так?

Я должен также упомянуть, что я тестировал свой API-шлюз с использованием HTTPie. Оттуда я получаю ошибку 500 и вижу ошибку Invalid Lambda Permissions при проверке журналов шлюза API.

Заранее спасибо за помощь!

Редактировать: Я добавил лямбда-код. Я попытался использовать AWS :: Lambda :: Function, но он выдал ту же ошибку.

...