aws-samples / serverless-patterns

Serverless patterns. Learn more at the website: https://serverlessland.com/patterns.
https://serverlessland.com
Other
1.61k stars 928 forks source link

New serverless pattern - appsync-lambda-dynamodb-athena-dotnet-cdk #2479

Closed tejasavora closed 2 months ago

tejasavora commented 2 months ago

Issue #, if available: N/A

Description of changes: This pull request implements a new serverless pattern demonstrating a GraphQL API with hot and cold data storage using AWS AppSync, Lambda, DynamoDB, S3, and Athena. The key changes include:

  1. Created a new CDK stack (GraphqlHotColdStorageCdkStack) that sets up:

    • An AWS AppSync API for handling GraphQL queries
    • Two AWS Lambda functions: one for hot data queries and another for cold data queries
    • An Amazon DynamoDB table for storing hot (frequently accessed) data
    • An Amazon S3 bucket for storing cold (less frequently accessed) data
    • An AWS Glue Data Catalog for managing the schema of cold data
    • Integration with Amazon Athena for querying cold data
  2. Implemented Lambda functions that serve as resolvers for the GraphQL API:

    • HotDataResolver: Queries data from DynamoDB
    • ColdDataResolver: Queries data from S3 using Athena
  3. Set up a GraphQL schema that provides unified querying for both hot and cold data

  4. Configured IAM permissions to allow secure interactions between services:

    • Lambda functions have necessary permissions to access DynamoDB, S3, Glue, and Athena
    • Athena has permissions to read from S3 and write query results
  5. Created comprehensive test cases for both Lambda functions and the overall GraphQL API

  6. Added detailed README.md with information about the pattern, its architecture, deployment instructions, and testing procedures

  7. Included an example-pattern.json file describing the serverless pattern for the Serverless Land website

This pattern showcases an efficient approach to managing data with varying access patterns, demonstrating how to combine multiple AWS services to create a scalable and cost-effective serverless architecture.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

bfreiberg commented 2 months ago

Hello @tejasavora

Thank you so much for your contribution!

After carefully reviewing your submission, we've decided not to merge it at this time. Let me explain why:

Our serverless patterns are designed to be primarily Infrastructure as Code (IaC) implementations that showcase 2-4 AWS services working together, with minimal custom code. The goal is to demonstrate commonly used combinations that help developers quickly get started with serverless architectures.

While your contribution is valuable, it doesn't quite align with our current focus on simple serverless patterns. It represents more a sample application that would normally be published at https://serverlessland.com/repos, however intake for those submissions is currently paused.

Thank you again for your contribution and for your understanding. We look forward to your future submissions!

tejasavora commented 1 month ago

Hi @bfreiberg

Thank you very much for looking into my submission and providing valuable feedback. As I understand, this PR aligns more with repos, what changes can I make to this PR so that it could still be validated for patterns. In the future, when submission to repos open up, I can certainly submit bigger changes at that time.

Thank you once again!