New serverless pattern - cloudfront-s3-signed-cookies-cognito #2913
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #, if available: #2914
Description of changes:
This pattern implements a secure content delivery solution that combines Amazon CloudFront signed cookies with Amazon Cognito user authentication. Users register and authenticate through API Gateway endpoints backed by Lambda functions, which interact with a Cognito User Pool for identity management.
Upon successful login, the Lambda function retrieves a private RSA key from AWS Secrets Manager and generates time-limited CloudFront signed cookies that grant access to private content stored in S3. The CloudFront distribution uses Origin Access Control (OAC) to securely serve content from a private S3 bucket, with behavior rules that allow public access to default paths while requiring valid signed cookies for private content under the /private/* path. The signed cookies are validated by CloudFront using a public key configured in a Key Group, ensuring that only authenticated users with valid cookies can access protected resources. This architecture provides a scalable, serverless approach to protecting content delivery with user authentication, leveraging AWS managed services for security, caching, and global content distribution.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.