Skip to content
    Back to all Bounties

    Earn 112,500 ($1,125.00)

    Time Remainingdue 2 years ago
    Canceled

    Setting up AWS Environment

    Sinbad7
    Sinbad7
    Posted 2 years ago

    Bounty Description

    Problem Description

    Setting up the infrastructure for a KYC solution.

    Infrastructure Overview

    Database: AWS RDS (PostgreSQL engine).
    Object Storage: AWS S3.
    Event Bus: AWS SNS.
    Event Consumers: AWS Lambda (with SNS triggers).
    Web Server: AWS Lambda (with API Gateway triggers).
    Web Front-end: AWS S3 (with CloudFront CDN).
    CDN: AWS CloudFront.
    IAM/User Pool: Amazon Cognito.

    Infrastructure Requirements

    The database should be set up using the PostgreSQL engine on AWS RDS.
    KYC documents should be stored in an S3 bucket.
    Direct access to the S3 bucket should be restricted, and documents should be accessed using pre-signed URLs.
    Ensure CloudFront is used for secure content delivery.
    AWS SNS should be utilized for the event bus to manage and publish KYC events.
    AWS Lambda should be employed for event consumers and the web server.
    For Lambda deployments, use pre-compiled functions, which will be replaced with actual code during CI/CD.
    Identity and Access Management (IAM) tasks should be managed by Amazon Cognito.

    Deployment Environments

    The infrastructure should support the following environments:
    DEV: Development & testing.
    UAT: User acceptance testing.
    PROD: Production.

    Infrastructure as Code

    Utilize Terraform for infrastructure provisioning.
    Ensure no secrets are stored in the Terraform files. Use a git-ignored secrets.tfvars for sensitive information.
    Consider the use of remote state once a decision is made on the backend.

    CI/CD

    Implement the CI/CD process using GitHub Actions.
    Deployment strategies should include:
    Push to main branch for DEV and UAT.
    Tag/release for PROD.
    Manual dispatch for custom environments.

    Technical Considerations

    The terraform project is modular; each module is responsible for provisioning a specific component of the infrastructure. Each module is defined along with its variables and outputs in a separate directory under the modules directory