Search code examples
amazon-web-serviceslambdapolicysam

AWS SAM Unable to call Rekognition and access S3 from Lambda


I am trying to call the detectText method from Rekognition framework and it failed to call S3 bucket. I am not sure how to give roles in SAM Template. Below is my SAM template

GetTextFunction:
Type: AWS::Serverless::Function
Properties:
  CodeUri: gettextfn/
  Handler: text.handler
  Runtime: nodejs12.x
  Timeout: 3
  MemorySize: 128
  Environment:
    Variables:
        imagebucket: !Ref s3bucket
  Events:
    TextApiEvent:
      Type: HttpApi
      Properties:
        Path: /gettext
        Method: get
        ApiId: !Ref myapi

Solution

  • Looks like your lambda needs RekognitionDetectOnlyPolicy and also looks you miss the policy to read/write data from S3 bucket also. Have a look at below Policies: added after Environment:

    Environment:
        Variables:
          imagebucket: !Ref s3bucket
      Policies:
        - S3ReadPolicy:
            BucketName: !Ref s3bucket
        - RekognitionDetectOnlyPolicy: {}
      Events:
    

    You can refer the complete list of AWS SAM policy templates here https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-policy-templates.html

    Also have a look at a sample template here https://github.com/rollendxavier/serverless_computing/blob/main/template.yaml