This Guidance helps customers import, process, and display geospatial imagery with Amazon SageMaker geospatial capability. By demonstrating how to use a geospatial capability in the agricultural use case, this is a starting point for customers looking to build an agronomic data platform.
Define an area of interest (AOI) and time range, then run an earth observation job (EOJ) on Amazon SageMaker geospatial capability to ingest true color, normalized difference vegetation index (NDVI), cloud cover, and land cover satellite images.
The EOJ searches the images from a Sentinel-2/LandSat8 catalog on AWS open data, processes the requested images, and stores them in Amazon Simple Storage Service (Amazon S3).
Run additional processing using a SageMaker processing job and store the images in cloud optimized GeoTIFF (COG) format in Amazon S3.
Users navigate to a website to visualize satellite images. The website content is hosted on Amazon S3 and is served using Amazon CloudFront distribution.
Users interact with the satellite images on a map; concurrent map view requests are sent to Amazon API Gateway to load the map at the selected location.
API Gateway forwards the requests to the AWS Lambda tile server to return the tiles matching the current view on the map.
The Lambda tile server retrieves the original GeoTIFF images from Amazon S3 and generates small images corresponding to the current map view.
For subsequent map view requests on the same area, the images are pre-loaded from Amazon ElastiCache for a better user experience and faster response time.
The AWS Well-Architected Framework helps you understand the pros and cons of the decisions you make when building systems in the cloud. The six pillars of the Framework allow you to learn architectural best practices for designing and operating reliable, secure, efficient, cost-effective, and sustainable systems. Using the AWS Well-Architected Tool, available at no charge in the AWS Management Console, you can review your workloads against these best practices by answering a set of questions for each pillar.
The architecture diagram above is an example of a Solution created with Well-Architected best practices in mind. To be fully Well-Architected, you should follow as many Well-Architected best practices as possible.
To improve operational efficiency, it is recommended you enable logging to Amazon CloudWatch for each AWS service, as well as configure alarms, event notifications, and establish different subscriptions to events through Amazon Simple Notification Services (Amazon SNS). API Gateway can enable logging to CloudWatch to understand the API requests and backend responses from Lambda. CloudWatch logs enable the user to understand the system performance and if business outcomes are being achieved through successful end-user content consumption.
Use Amazon Cognito with a user pool token type to authenticate and authorize for website and API access. Machine access uses AWS Identity and Access Management (IAM) roles with least-privilege access to Lambda and API Gateway. Public assets reside in private Amazon S3 buckets with CloudFront for reduced latency. CloudFront is the only permitted role to access Amazon S3. API Gateway is protected by Amazon Cognito for public user authentication and authorization.
Serverless technologies implemented in this Guidance are highly available and scalable depending on traffic. ElastiCache includes a topology that allows scaling vertically and horizontally. ElastiCache for Redis cluster allows you to scale horizontally. The synchronous application does not require a workflow to be automated with retries, since it does not rely on a timed resolution. Default log streams from Lambda processing jobs are implemented for monitoring. Backups are stored in Amazon S3 and can be used to restore ElastiCache clusters or launch in a new region.
There is no comingled customer data due to the solution being implemented in single accounts.
Services were selected to meet end user expectations and needs related to scalability, elasticity, cost performance, and serverless in mind.
ElastiCache offers native customizations to cache data according to user requirements; SageMaker can create and modify ML workloads; Lambda functions can be customized with additional application logging; and CloudWatch logs and reports can be customized.
This Guidance uses serverless technologies to process data, train models, and optimize costs by using pay-as-you-go pricing. The scaling behaviours of AWS managed services and API Gateway help reduce over-provisioning resources; you can maximize resource use and reduce the amount of energy needed to run a given workload.
To further enhance minimization of resources required, users have configuration options such caching types, reserved memory levels, and cluster replication strategies.
This guidance utilizes Sentinel-2 satellite imagery that is updated and made available on Open Data on AWS Data Exchange.
A detailed guide is provided to experiment and use within your AWS account. Each stage of building the Guidance, including deployment, usage, and cleanup, is examined to prepare it for deployment.
The sample code is a starting point. It is industry validated, prescriptive but not definitive, and a peek under the hood to help you begin.
The sample code; software libraries; command line tools; proofs of concept; templates; or other related technology (including any of the foregoing that are provided by our personnel) is provided to you as AWS Content under the AWS Customer Agreement, or the relevant written agreement between you and AWS (whichever applies). You should not use this AWS Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the AWS Content, such as sample code, as appropriate for production grade use based on your specific quality control practices and standards. Deploying AWS Content may incur AWS charges for creating or using AWS chargeable resources, such as running Amazon EC2 instances or using Amazon S3 storage.