Is there any decentralized, “serverless” network of any kind in existence with more than a handful of users?

I’m trying to verify that the findings of my own private "research", spanning over 10 years are accurate.

Basically, I’ve been actively hunting for any signs of any kind of "Internet alternative", decentralized network running "inside" the Internet, or even just individual applications for a specific task, which have more than a nominal group of hardcore fans who don’t actually use it meaningfully because they are just to few.

I first attempted to make a list of all the services I’ve already concluded are dead or won’t ever get ready, but I soon gave up and removed that part from the post. Whether I have such a list or not, I know that there will be tongue-in-cheek suggestions such as "Tor" or "Freenet" or "Zeronet", but please try to take this seriously.

I have so many times got excited (Dat, SAFE Network, IPFS, etc.) only to fall back into my chair, depressed from the total lack of activity inside each network. It’s not meaningful to sit and create things that nobody will ever be able to access, and which stands an even lesser chance of being profitable.

(No, I’m not greedy, but I need to make money somehow in order to survive and the old Internet has been utterly destroyed in every way. However, I’m not going to elaborate on that since, if you don’t already agree with me at this point, there isn’t really anything I can ever say to convince you otherwise.)

My sad conclusion is that there just is no such network/protocol/service as I’m looking for. Nobody has managed to market their solution in any meaningful way, perpetually working on code while ignoring the world which has never heard of their fantastic thing which is just a directory tree on GitHub, year after year…

The only non-fake, semi-useful individual applications I’ve been able to find are Bitcoin Core and Bisq. However, neither of those help me reach out to people or communicate in any way. The first is just a "digital wallet" and the second enables me to buy Bitcoin for fiat money via bank transfers with individuals without having to send in a photo id to some centralized site (which is one of the reasons why the old Internet is destroyed).

So, could it actually be that, in spite of actively searching everywhere for this, I’ve somehow missed something which is huge and decentralized? Another huge problem is that there’s a million sites/projects/whitepapers which lie about being dencentralized/privacy-respecting/secure, which further complicates things. I’ve seen countless websites which appear to have been mass produced just to "muddle the waters".

I’m looking for some way to reach out to people and not be harassed with "phone verification" or "sorry, we cannot grant access at this time" fake error messages for VPN/Tor users. "SAFE Network" has been working for over a decade and are forever and always "just a few months away" from release…

PS: Please don’t reply something about how "the Internet is already decentralized". No. It isn’t. It’s the most centralized network imaginable in its current form.

AWS serverless site security. Anything else I should add?

I have an AWS static site in an S3 bucket, accessible through CloudFront and a bunch of lambda functions that form the backend of the site. Is there anything else I can/should do security wise? Since I know the IP’s of my users I set up:

  • a web ACL for the API Gateway that allows a whitelist of ips (US-east)
  • a web ACL for the CloudFront endpoint that allows the same ips (global)
  • a simple lambda login function that matches a hardcoded password. Successful login sets a token which gets passed to a lambda authorizer.

Serverless Apps Authenticate Users After Page Load – Flaw?

Server-based apps check for a session cookie before returning any content to the user. If an authentication cookie isn’t sent from the user’s browser, the only content delivered to the user is a redirect/error message.

I’m new to server-less apps. In the several Javascript S3/Cognito-based tutorials I saw (for example AWS’ WildRydes), this authentication is client-based. It’s triggered only after the entire page has loaded and then redirects to a login page.

Isn’t that a fundamental flaw? what stops an unauthenticated user from viewing the page before the redirect?

Is serverless architecture a good fit for Django Rest Framework app?

I am building a web/mobile application with Django Rest Framework (DRF) that enables authenticated users to post snippets and/or vote for other user’s snippets. All users (authenticated or not) can also get the list of recent snippets (paginated, ex: 5 per page). Snippets, users and votes are stored backend in database.

I’m totally new to serverless architecture so I’m asking the question: is this application a good fit for this kind of architecture? Obviously, my DRF application is built around Web REST APIs which seems to be at first glance a good fit but the authentication part of users and paginated list of snippets let me think it could not be the case.

Can someone enlighten me?

Serverless Architecture – Integrating with Data Layer

My question is in context with the Serverless Architecture (e.g. AWS Lambda) and how does one interact with the Databases in this system.

Typically in a 3 Tier architecture, we have a web service which interacts with the Database. The idea here is to ensure that one database table is owned by one component. So changes in there, does not require changes in multiple places and there is also a clear sense of ownership so scaling and security are easier to manage.

However, moving to serverless architecture, this ownership is no more clear and exposing a web service to access a database and having a Lambda use this web service does not make sense to me.

I would like to know a bit on the common patterns and practices around this.

Serverless architecture for an I/O operation App [on hold]

I have a NodeJS app that does the following :

  1. accept a zip file as an input.

  2. extract the zip file, take all the PDF attachments out of it,

  3. and merge them all into 1 single PDF. (The final PDF is what matter and store the final PDF persistently on a local drive)

Everything is working fine locally. I am trying to run this app on Public Cloud server-less services such as AWS Lambda, or Azure function, but I am not sure if server-less can fit such scenario ?

Using CloudWatch Events as a Central Messaging Hub for a Serverless Architecture

I’ve read recently about using CloudWatch Events as a coordination tool to trigger actions (https://aws.amazon.com/blogs/aws/building-serverless-pipelines-with-amazon-cloudwatch-events/). It seems a clever way to orchestrate various parts of a Serverless architecture where different parts can put custom Events onto the CloudWatch bus and then those Events can trigger other actions. It seems a really interesting idea to have a central repository for actions that can drive actions not just in one account, but potentially in many (see the article for cross-account actions). However, when I thought more about it, I was having a hard time distinguishing between why you’d use this methodology rather than say SQS or SNS or other existing messaging platform. It seems like if you have one service sending Events to the CloudWatch bus, and those then trigger actions, it’s not a whole lot different that sending messages to SNS and then hooking up (for example) a Lambda function to trigger on an SNS-message publication. Or similarly, putting the message in an SQS queue and attaching a Lambda function to automatically trigger against that SQS queue. ┬┐Any thoughts on what the advantages may be, if any, to using the CloudWatch Events bus as a central messaging system to a Serverless architecture?

What could be improved in my Serverless stack definition YAML?


Design

My desired outcome is as follows:

  1. S3 event triggers Lambda Function startTextractStateMachine

  2. Lambda Function startTextractStateMachine kicks off State Machine textractStepFunc execution (AWS Step Functions)

  3. State Machine textractStepFunc starts with Lambda Function callTextract; calls Textract async command to start process

  4. Output of Textract command is attached to SQS queue TextractSQS

  5. SQS queue output triggers Lambda Function getTextractOutput

  6. Lambda Function getTextractOutput publishes message to SNS Topic

  7. SNS Topic triggers final Lambda Function parseTextractOutput via subscription

  8. Done

Implementation

I made this system work without any AWS Step Functions initially, but realized that I needed more control over retry/failure of the individual Lambda Functions (especially callTextract), so I’ve tried to move the system to AWS Step Functions and the Serverless Framework at the same time.

I’ve come to realize it was harder than I thought it would be. I keep running into roadblocks with the Serverless Framework.

I used several guides, blog posts and Github issues (here, here and here) to reach this point, but am permanently stuck.

Serverless Setup

I’ve left out much of my Design ideas and simply need to have the S3 event trigger when a file is added to the Bucket.

Here is my configuration file:

# serverless.yml  service: textract-service  provider:   name: aws   runtime: python3.7   timeout: 10   region: us-east-1   environment:     STATE_MACHINE_ARN: $  {self:resources.Outputs.TextractStepFunctions.Value}   iamRoleStatements:     - Effect: "Allow"       Action:         - "s3:PutObject"         - "states:*"       Resource:         Fn::Join:           - ""           - - "<the-chumiest-bucket's ARN> or *"             - $  {self:resources.Outputs.TextractStepFunctions.Value}  plugins:   - serverless-plugin-existing-s3   - serverless-step-functions   - serverless-pseudo-parameters  layers:   boto3Layer:     package:       artifact: boto3_layer.zip     allowedAccounts:       - "*"  functions:   startTextractStateMachine:     handler: src/start_textract_state_machine.lambda_handler     role: arn:...lambda-s3-role     layers:       - {Ref: Boto3LayerLambdaLayer}     events:       - existingS3:           bucket: the-chumiest-bucket           events:             - s3:ObjectCreated:*           rules:             - prefix: input1/             - suffix: .pdf       - existingS3:           bucket: the-chumiest-bucket           events:             - s3:ObjectCreated:*           rules:             - prefix: input2/             - suffix: .pdf   callTextract:     handler: src/call_textract.lambda_handler     role: arn:...lambda-s3-role     layers:       - {Ref: Boto3LayerLambdaLayer}   getTextractOutput:     handler: src/get_textract_output.lambda_handler     role: arn:...lambda-s3-role     layers:       - {Ref: Boto3LayerLambdaLayer}   parseTextractOutput:     handler: src/parse_textract_output.lambda_handler     role: arn:...lambda-s3-role     layers:       - {Ref: Boto3LayerLambdaLayer}  stepFunctions:   stateMachines:     textractStepFunc:       name: TextractStepFunctions       definition:         StartAt: StartTextractStateMachine         States:           StartTextractStateMachine:             Type: Task             Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:#{AWS::StackName}-startTextractStateMachine"             Next: CallTextract           CallTextract:             Type: Task             Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:#{AWS::StackName}-callTextract"             End: true  resources:   Outputs:     TextractStepFunctions:       Description: The ARN of the state machine       Value:         Ref: TextractStepFunctions 

How I deploy it:

sls deploy -v && sls s3deploy