Hot answers tagged

5

AWS Organizations is the standard approach to managing a hierarchy of accounts. However, it does not allow billing to be consolidated at arbitrary points in the organization; it's a tree, not a graph. Given that, here is what I would recommend: Adopt an "infrastructure as code" tool to manage your users and permissions. This is the most important thing ...


3

A full answer to your question depends on the complexity of deployment. If you are looking to host a single ASP.Net (core or classic) website, with no additional services, then I would recommend the Azure App Services specifically. When testing Azure App Services, the end-to-end story is really nice: Integration with github or Bitbucket git repositories ...


3

Of course you can scale databases. Also, with a strict interpretation of monolith and microservice there generally shouldnt be this kind of performance scaling advantage to microservices. A monolith can be just all the microservices in one big package. It sounds to me like this person is using the term 'monolith' to imply a solution which is very tied to ...


2

Make a .net web service that receives the data submitted by the form. Add that data to a database, using transactions to maintain consistency After adding the data to the Database call a second FileExport FileExport reads the database, generates the file and writes it to the s3 bucket. FileExport also buckets incoming requests. So if you get 50 updates ...


2

There are several options. 1) If you have AWS credentials on the machine with your client, you could use basic SDK (e.g. API C# SDK JavaScript SDK) 2) If you want to use the API Gateway, you can use Lambda Authorizer (Documentation). Credentials must be obtained from somewhere (e.g. AWS Cognito). 3) One option is to use API keys. Generate key for your ...


2

Database backups and restores are not designed to be an undo button for users. So its always going to be a hard process if you use them to provide that functionality For example, say your user accidentally deletes an article, but after that correctly adds some more articles. To restore the deleted article while retaining the new ones is going to be a manual ...


2

I believe there is a 6Mb limit on the request/response, which would make it unsuitable. https://docs.aws.amazon.com/lambda/latest/dg/limits.html Ideally you want a resumable stream of data for large stuff.


2

Shall we store the request as is with Body, URL, and Headers in a blob/text in db so it is easier for the Scheduled Service to Resend it, Baaad, bad idea. Consider things like authentication tokens that a) you will need to store securely and b) tend to expire. Then some services (e.g. AWS SES) require you to sign each request so they're only valid in-...


2

Update In the comment thread you clarified that the database belongs to service B and is managed by you. This gives you the authority to control access to the database. This does mean you have to expose an endpoint and route this traffic through your service, but it also gives you the authority to throttle requests as you see fit. If you draw the line at ...


2

ENI is a network interface, which embodies some configuration, which can include IP addresses, an elastic IP (EIP), various security groups (firewall rules), a MAC address, a source/destination check flag, and a description. An EIN can be attached to an EC2 instance (a virtual server); the server that it is attached to can change over time. This allows you ...


2

On a very high level, you are not missing out on anything crucial. Docker (and Kubernetes) provide a runtime environment, control plane, deployment, network abstraction etc. which are also provided by cloud vendors. They are different mechanisms but they solve the same problems. With containers, it's a little easier to avoid vendor lock-in. Although AWS and ...


2

Okay so a CSV is a table where the column labels are unknown at design time. I don't think there is a firm spec for a CSV but let's assume it's comma separated and has the column lables in the first line. first,last,age john,doe,52 sue,mary,42 My MVP would be to use a single table / collection userid fileid rowid content 100 1 1 first,last,age ...


2

There's rarely, if ever, one correct solution when it comes to software solutions. I'm going to just provide some confirmation around one of your options and a few tips. You can do this pretty easily with Dynamo and since you are already using it, it might be a good enough solution for your needs. It's resilient and if you design things to work with the ...


2

Really you are just rearranging code to your personal tastes. You can have various arrangements such as: Object.Deploy() Deployer.Deploy(object) Deployer(object).Deploy() Personally, I don't like the Deployer(object).Deploy() because it leaves behind a useless Deployer object. Object.Deploy() is nice for things where the Object hangs around and has ...


2

You should probably look over this: AWS lambda best practices. The first bullet is one thing you should definitely consider: Initialize SDK clients and database connections outside of the function handler, and cache static assets locally in the /tmp directory. Subsequent invocations processed by the same instance of your function can reuse these ...


1

It sounds like you want to submit a form from your front end. I don’t know how React works, but they probably POST the form data to an endpoint you specify, and they probably let you choose between form encoding and json encoding Your endpoint is provided by API gateway, which lets you forward the request to your Lambda function. Your lambda will write to ...


1

HMAC is an enhancement of option A that prevents your auth key from being stolen "over the wire", and provides protection from replay and message tampering attacks. It could be a good enough solution for your needs, but in my experience may place a development burden on that third-party if there isn't a ready-made HMAC implementation available on that ...


1

The big things to address are: non-repudiation: the user should be unable to deny that the actions are theirs. That means that the identity cannot be easily stolen by someone, and that the token provided can be validated that it is correct. auditable: you need to be able to determine if any users are behaving badly, and terminate access if so. controllable:...


1

I have found that usually the overriding concern with this kind of thing is "what does the third party support?" If they are able to do stuff like oauth or client ssl certs, then great you can put in whatever the standard security library that your platform supports. As with all security problems the answer is always to use a standard off the shelf package ...


1

It's a managed service operated by AWS. That being said I'd look at https://cloud.elastic.co/ which can run on AWS, GCP and Azure. 14 days for free. It's managed by elastic, creator of elasticsearch. Cloud by elastic is one way to have access to all features, all managed by us. Think about what is there yet like Security, Monitoring, Reporting, SQL, Canvas,...


1

HTTPS encryption protects the parameters. You just make sure you are connecting to the correct server and don't accept certificate exceptions. Establish a mechanism to have one of the query parameters changing over time in a non predictable way.


1

The strategy for unit testing a worker process that listens for messages on a queue is the same as unit testing any other component. You need to hide the message receiver and/or queue behind one or more interfaces, and then use dependency injection to pass those objects to your worker class. This allows you to mock the message queue and receiver in your unit ...


1

I think it is best not to append the files while uploading. You could upload the different files. Then you could have a lambda trigger on new files in S3 which does the concatenation. But in any case there will be a short moment where no file is available while the concatenated file is being uploaded.


1

I would say Option 2 is standard practice. A direct client to database connection has always been considered bad practice, but usually this is in the context of standard privately hosted SQL databases. To make a direct connection to a DB work your main problem is preventing the user accessing other peoples data, or changing their own data without ...


Only top voted, non community-wiki answers of a minimum length are eligible