Open template.yaml file in fcj-book-shop folder.
Add the following script at the end of the file that creates the POST method.
Firstly, we need to refresh to create a new deployment version for POST Api in a few next steps. Comment BookApiDeployment block.
# BookApiDeployment:
#   Type: AWS::ApiGateway::Deployment
#   Properties:
#     RestApiId: !Ref BookApi
#   DependsOn:
#     - BookApiGet
BookApiStage:
  Type: AWS::ApiGateway::Stage
  Properties:
    RestApiId: !Ref BookApi
    StageName: !Ref stage
    # DeploymentId: !Ref BookApiDeployment

Run the following command to deploy SAM.
sam build
sam validate
sam deploy

Next, we will create BookApiCreate and BookApiCreateInvokePermission.
BookApiCreate:
  Type: AWS::ApiGateway::Method
  Properties:
    HttpMethod: POST
    RestApiId: !Ref BookApi
    ResourceId: !Ref BookApiResource
    AuthorizationType: NONE
    Integration:
      Type: AWS_PROXY
      IntegrationHttpMethod: POST # For Lambda integrations, you must set the integration method to POST
      Uri: !Sub >-
        arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${BookCreate.Arn}/invocations
      IntegrationResponses:
        - StatusCode: "200"
          ResponseParameters:
            method.response.header.Access-Control-Allow-Origin: "'*'"
            method.response.header.Access-Control-Allow-Methods: "'GET,POST,OPTIONS'"
            method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
    MethodResponses:
      - StatusCode: "200"
        ResponseParameters:
          method.response.header.Access-Control-Allow-Origin: "'*'"
          method.response.header.Access-Control-Allow-Methods: "'GET,POST,OPTIONS'"
          method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
BookApiCreateInvokePermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName: !Ref BookCreate
    Action: lambda:InvokeFunction
    Principal: apigateway.amazonaws.com
    SourceAccount: !Ref "AWS::AccountId"

Then, we uncomment the codeblock that we commented above.
BookApiDeployment:
  Type: AWS::ApiGateway::Deployment
  Properties:
    RestApiId: !Ref BookApi
  DependsOn:
    - BookApiGet
    - BookApiCreate
BookApiStage:
  Type: AWS::ApiGateway::Stage
  Properties:
    RestApiId: !Ref BookApi
    StageName: !Ref stage
    DeploymentId: !Ref BookApiDeployment

Run the following command to deploy SAM.
sam build
sam validate
sam deploy

Open AWS API Gateway console.


