DEV Community

architec
architec

Posted on • Edited on

AWS Cloud Quest: Templating Serverless Applications Study Note

This is the DIY challenge of the Templating Serverless Applications task in AWS Cloud Quest.

DIY Steps:

  1. Add an Amazon DynamoDB table to the AWS SAM template template.yaml, you can read more about this topic here

    AWSTemplateFormatVersion: '2010-09-09'
    Transform: AWS::Serverless-2016-10-31
    Description: >
      appfn
    
      Sample SAM Template for appfn
    
    # More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
    Globals:
      Function:
        Timeout: 3
    
    Resources:
      HelloWorldFunction:
        Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
        Properties:
          CodeUri: hello_world/
          Handler: app.lambda_handler
          Runtime: python3.7
          Events:
            HelloWorld:
              Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
              Properties:
                Path: /hello
                Method: get
      DynamoDBTable:
        Type: AWS::DynamoDB::Table
        Properties: 
          AttributeDefinitions: 
            - AttributeName: id
              AttributeType: S
          KeySchema: 
            - AttributeName: id
              KeyType: HASH
          ProvisionedThroughput: 
            ReadCapacityUnits: 5
            WriteCapacityUnits: 5
          StreamSpecification:
            StreamViewType: NEW_IMAGE
    Outputs:
      # ServerlessRestApi is an implicit API created out of Events key under Serverless::Function
      # Find out more about other implicit resources you can reference within SAM
      # https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api
      HelloWorldApi:
        Description: "API Gateway endpoint URL for Prod stage for Hello World function"
        Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/"
      HelloWorldFunction:
        Description: "Hello World Lambda Function ARN"
        Value: !GetAtt HelloWorldFunction.Arn
      HelloWorldFunctionIamRole:
        Description: "Implicit IAM Role created for Hello World function"
        Value: !GetAtt HelloWorldFunctionRole.Arn
    
  2. Deploy the AWS SAM template

  3. Push the update to AWS CodeCommit

    git add .
    git commit -m "diy"
    git push
    

Top comments (0)