Git Product home page Git Product logo

Comments (3)

GavinZZ avatar GavinZZ commented on July 19, 2024

Hi @Robsonwd, looking at your template your CORS setup generally looks right to me. I recommend making the below two changes and try again:

  1. Add AddDefaultAuthorizerToCorsPreflight: false under Auth property of your API. This is important so that SAM doesn't add authorizer to your OPTIONS method.
  2. Add AlwaysDeploy: true to your API property. This may be important as sometimes a small change in API doesn't get deployed. This property guarantees that it deploys the API.
MyGatewayApi:
    Type: AWS::Serverless::Api
    Properties:
        ......
        AlwaysDeploy: true

Try to add these two changes in your template, deploy the stack, and try again. Let me know if it still doesn't work for you.

Appendix: Full template that I tested and it worked

Here is the full template I used and guaranteed that it works:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Resources:
  MyCognitoUserPool:
    Type: AWS::Cognito::UserPool
    Properties:
      UserPoolName: MyUserPool

  MyCognitoUserPoolClient:
    Type: AWS::Cognito::UserPoolClient
    Properties:
      UserPoolId: !Ref MyCognitoUserPool
      ClientName: MyUserPoolClient

  MyGatewayApi:
    Type: AWS::Serverless::Api
    Properties:
      GatewayResponses:
        UNAUTHORIZED:
          StatusCode: 401
          ResponseParameters:
            Headers:
              Access-Control-Allow-Origin: "'*'"
        DEFAULT_4XX:
          ResponseParameters:
            Headers:
              Access-Control-Allow-Origin: "'*'"
        DEFAULT_5XX:
          ResponseParameters:
            Headers:
              Access-Control-Allow-Origin: "'*'"
      StageName: dev
      Cors: "'*'"
      AlwaysDeploy: true
      Auth:
        AddDefaultAuthorizerToCorsPreflight: false
        DefaultAuthorizer: CognitoAuthorizer
        Authorizers:
          CognitoAuthorizer:
            UserPoolArn: !GetAtt MyCognitoUserPool.Arn

  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world_function
      Handler: hello_world/app.lambda_handler
      Runtime: python3.10
      Events:
        GetToken:
          Type: Api
          Properties:
            Path: /token
            Method: GET
            RestApiId: !Ref MyGatewayApi

In my lambda handler, I used the same as you provided:

# import requests
import json

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps({
            'token': "11111"
        }),
        'headers': {
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Headers': 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token',
            'Access-Control-Allow-Methods': '*',
            'Content-Type': 'application/json'
        }
    }

from serverless-application-model.

aaythapa avatar aaythapa commented on July 19, 2024

Closing this because of lack of activity, please re-open if the issue persists.

from serverless-application-model.

github-actions avatar github-actions commented on July 19, 2024

This issue is now closed. Comments on closed issues are hard for our team to see.
If you need more assistance, please either tag a team member or open a new issue that references this one.

from serverless-application-model.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.