aws mediaconvert is suitable for social media? - amazon-web-services

I am building a social media platform which allows the user to upload video as they want, I had try AWS MediaConvert but the price seems to be my concern, I would like to get advice on if I am right to choose AWS MediaConvert.

I know that it's a bit of late response to your question. MediaConvert is quite good interms of UGC use-cases. If your concern is only about pricing, depending on the volume, you can consider using RTS(Reserve Transcoding Slots).
https://aws.amazon.com/blogs/media/reserved-pricing-in-aws-elemental-mediaconvert-part-1-intro-and-how-to-use-it/

Related

How to configure AWS Elemental MediaLive regarding the cost

If the resolution is 1080P, how much does it cost if 10000 viewers watch the live stream for 1 hour?
You have several options :
MediaLive plus S3 plus CloudFront is one valid workflow if you don't need DASH formats or Encryption. Each service in the workflow has its own line item in the combined price.
MediaLive plus MediaPackage plus CloudFront is the high-end workflow most often chosen by media professionals. It provides multi-format streaming (creating DASH + CMAF automatically for example), and provides optional Encryption and optional Ad Insertion via MediaTailor. Each service in the workflow has its own line item in the combined price.
The AWS Interactive Video Service (IVS) offers "twitch-quality" 1080P HLS streaming at attractive prices with very fast easy configuration. This would be a one-stop shop solution with simplified pricing.
To answer your question you can look at the public pricing guides, or start a conversation with an AWS salesperson via the web form at: https://aws.amazon.com/contact-us/sales-support/
Good luck with your project!
AWS Elemental MediaLive is a Live encoder and it does not serve the content to viewers. In order to serve the video content to viewer, you have to output the video to an origin server such as AWS S3 or AWS Elemental MediaPackage. If you have 10,000 viewers, it is advised to use CloudFront when streaming the content.
AWS Elemental MediaLive is charged on a fixed rate base on the combination of codec, bitrate, and resolution of the input stream and output stream. Detail of the pricing can be found here:
https://aws.amazon.com/medialive/pricing/

Does AWS CloudFront "origin shield" matter if using S3 bucket as Origin?

I could not find any conclusive info while searching AWS docs or googling. My guess is that no, origin shield would not be necessary, if the origin is just an S3 bucket? Or, is there some benefit I'm missing? Thanks!
One of the benefits of using shielding is that it can reduce the origin load, but as you're using S3, it really doesn't matter.
Better network performance and cache hit, in this case depends, because as you need to pay for the extra new shielding layer, the "better things" are already done by AWS under the hood and it's probably more expensive if you "enable" it, depends if your shielding is in the same region, the users too...
Also, you can't see how good is the shielding, up today, is impssible to get a graph with that information, you only have the Cache Statistics graphs. And the billing account is complex.
If you can't monitor clear the app behind CF and see the advantage/disavantage, don't use it.

Appropriate AWS Service for Media(video) Streaming

I have an application which streams video like(NetFlix, Youtube).
I am trying to host it in the AWS platform. I have found two different options with this:
first one is store video files in s3.
the second one is store video files in AWS MediaStore.
In my existing platform, I have a problem with downloading video through IDM by end users.
So, I have to prevent downloading the video from IDM.
How can I do this in the AWS platform? Which AWS service will suit my case of preventing downloading?
Please take note of data-out charge when you use AWS as the primary mean to serve your video streams. Personally I found It prohibitively expensive to use AWS's service to serve your video
Netflix for example use S3 as a part of main storage for their video streams.
To the question of which service you can use to hide direct link / download link from AWS. Currently there is no service provided natively by AWS for that purpose

What would be the AWS equivalent to Firebase Realtime Database?

I'm working on a new game project at the moment that will consist of a React Native front-end and a Lambda-based back-end. The app requires some real time features such as active user records, geofencing, etc.
I was looking at Firebase's Realtime Database that looks like a really elegant solution for real-time data sync but I don't think AWS has anything quite like it.
The 3 options I could think of for "serverless" realtime using only AWS services are:
Option 1: AWS IoT Messaging over WebSockets
This one is quite obvious, a managed WebSockets connection through the IoT SDK. I was thinking of triggering Lambdas in response to inbound and outbound events and just use WebSockets as the realtime layer, building custom handling logic on the app client as you typically would.
The downside to this, at least compared to Firebase, is that I will have to handle the data in the events myself which will add another layer of management on top of WebSockets and will have to be standardized with the API data layer in the application's stores.
Pros:
Scalable bi-directional realtime connection
Cons:
Only works when the app is open
Message structure needs to be implemented
Multiple transport layers to be managed
Option 2: Push-triggered re-fetch
Another option is to use push notifications as real-time triggers but use a regular HTTP request to API Gateway to actually get the updated payload.
I like this approach because it sticks to only one transport layer and a single source of truth for application state. It will also trigger updates when the app is not open since these are Push Notifications.
The downside is that this is a lot of custom work with potentially difficult mappings between push notifications to the data that needs to be fetched.
Pros:
Push notifications work even when app is closed
Single source of truth, transport layer
Cons:
Most custom solution
Will involve many more HTTP requests overall
Option 3: Cognito Sync
This is newer to me and I'm not sure if it can actually be interfaced with from the server.
Cognito Sync offers user state sync. across devices complete with offline support and is part of the Cognito SDK which I'll be using anyway. It sounds like just what I'm looking for but couldn't find any conclusive evidence as to whether it is possible to modify, or "trigger", updates from AWS and not just from one of the devices.
Pros:
Provides an abstracted real-time data model
Connected to Cognito user records OOTB
Cons:
Not sure if can be modified or updated from Lambdas
I'm wondering if anyone has experience doing real-time on AWS as part of a Lambda-based architecture and if you have an opinion on what is the best way to proceed?
I asked a similar question to the AWS Support, and this was their response.
My question to them:
What's the group of AWS services (if it's possible) to give that same
in-browser real-time DBaaS feel like Firebase?
AWS Cognito seems to be great for user-accounts. Is there anything
similar for the WebSockets / real-time DB part?
Their response:
To your question, Firebase is closest to the AWS service AWS
MobileHub. You can check out more details below about mobilehub from
below link.
https://aws.amazon.com/mobile/details/
https://aws.amazon.com/mobile/getting-started/
"AWS Cognito seems to be great for user-accounts. Is there anything
similar for the WebSockets / real-time DB part?"
Amazon Dynamodb is a fast and flexible NoSQL database service for all
applications that need consistent, single-digit millisecond latency at
any scale. It is a fully managed cloud database and supports both
document and key-value store models. Its flexible data model, reliable
performance, and automatic scaling of throughput capacity, makes it a
great fit for mobile, web, gaming, ad tech, IoT, and many other
applications.
Amazon Dynamodb can be further optimized with Amazon DynamoDB
Accelerator (DAX) which is a fully managed, highly available,
in-memory cache that can reduce Amazon DynamoDB response times from
milliseconds to microseconds, even at millions of requests per second.
For more information, please see below documentation.
https://aws.amazon.com/dynamodb/getting-started/
https://aws.amazon.com/dynamodb/dax/
Should you have any further questions, please do not hesitate to let
me know.
Thanks.
Best regards,
Tayo O. Amazon Web Services
Check out the AWS Support Knowledge Center, a knowledge base of
articles and videos that answer customer questions about AWS services:
https://aws.amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category
Also while researching this answer I also found this, looks interesting:
https://aws.amazon.com/blogs/database/how-to-build-a-chat-application-with-amazon-elasticache-for-redis/
The comments to that article is interesting as well.
Jacob Wakeem:
What advantage this
approach have over using aws iot? It seems that iot has all these
functionality without writing a single line of code and with
server-less architecture.
Sam Dengler:
The managed PubSub feature in the AWS IoT
service is also a good approach to message-based applications, like
the one demonstrated in the article. With Elasticache (Redis),
customers who use Pub/Sub are typically also using Redis as a data
store for other use cases such as caching, leaderboards, etc. With
that said, you could also use ElastiCache (Redis) with the AWS IoT
service by triggering an AWS Lambda function via the AWS IoT rules
engine. Depending on how the message-based application is architected
and how the data is leveraged, one solution may be a better fit than
the other.
Check out AWS AppSync for some of these realtime and offline features using different data sources, including databases search and compute.
AWS Amplify is AWS's modern answer to Firebase.
Fastest way to build mobile and web applications
AWS Amplify is a development platform for building secure, scalable
mobile and web applications. It makes it easy for you to authenticate
users, securely store data and user metadata, authorize selective
access to data, integrate machine learning, analyze application
metrics, and execute server-side code. Amplify covers the complete
mobile application development workflow from version control, code
testing, to production deployment, and it easily scales with your
business from thousands of users to tens of millions. The Amplify
libraries and CLI, part of the Amplify Framework, are open source and
offer a pluggable interface that enables you to customize and create
your own plugins.
Sounds like AWS Serverless is most suited alternative.
Also wondering: AWS vs Firebase - Is It Even a Fair Fight?
AWS Amplify. You can find more information here: AWS Amplify
You could consider using supabase.
It is opensource and can be installed onto ec2 / docker containers.
https://supabase.com/docs/guides/hosting/docker
I've found the hosted solution / free really poewrful to get up and running quickly. (yet to deploy to aws)
I know this is an old question, but nowadays AWS offers AppSync... a service that destroys Firebase RDB in every aspect

Movies and Videos on my clients website Amazon Ec2, S3 and Glacier Storage

My clients wants to build a website where in users can download videos.
We have kept, Max file size =800 MB.
S3 and EC2 costs us bomb and we really can not afford these services.
Glacier storage on Amazon however is cheap but my client says will it affect quality. In my opinion it is nothing to do with quality we are using amazon just to store the data (movies) and it is only when a user wants to download the movie fully we should bother about performance etc.
Is my narration to my client is correct? I spent hours in reading the documentation. Please help me if you know the correct solution on how to store video files on Amazon.
Glacier is not designed for this, its designed for long term archival with no or very little access. Accessing files from glacier will become expensive.
S3/Cloudfront is your best option within AWS. To save some money you an use Reduced Redundancy Storage (RRS). In addition, convert the videos to lower quality to save storage space.