Storage Configuration
The Storage section in appsettings.json defines which storage provider the system uses for file management.
Supported providers:
- Azure
- Amazon
Depending on the selected Provider, the corresponding section (Azure or Amazon) must be filled.
1. Provider
"Provider": "Azure" // or "Amazon"
- Amazon → Uses Amazon S3
⚠️ Important: The
Providersetting must be the same across all projects to ensure consistent storage behavior.
2. Common Fields
The following fields are common to both providers and define the logical storage folders used in the system.
They are created under the selected provider (Azure/Amazon).
| Field Name | Description |
|---|---|
PublishedContentFolder |
Stores published content |
MBTilerZipsFolder |
Stores zip files used in MBTiles processing |
MapscaleCadsFolder |
Stores CAD files |
FeatureImagesFolder |
Stores feature images |
MBTilerFolder |
Stores MBTiles files |
MapscaleResultsFolder |
Stores Mapscale processing results |
StylesWithContentsFolder |
Stores style files with metadata |
StylesFolder |
Stores map style files |
FilesFolder |
Stores general files |
CadToGeojsonFolder |
Stores CAD → GeoJSON conversions |
GeojsonToPngFolder |
Stores GeoJSON → PNG conversions |
ImdfFolder |
Stores IMDF format files |
3. Provider-Specific Fields
3.1 When Using Azure ("Provider": "Azure")
If Azure is selected, the following fields must be provided:
| Field Name | Description |
|---|---|
ConnectionString |
Azure Blob Storage connection string |
CDN |
Azure CDN/Blob access URL |
SasToken |
(Optional) Defines temporary access token expiration settings |
3.2 When Using Amazon ("Provider": "Amazon")
If Amazon is selected, the following fields must be provided:
| Field Name | Description |
|---|---|
BucketName |
Name of the S3 bucket |
Region |
AWS region (e.g., eu-central-1) |
CDN |
S3 access URL or CloudFront URL |
AccessKey |
AWS access key |
SecretKey |
AWS secret key |
4. API-Specific Configurations
Although all APIs share the same common fields, some APIs require additional Azure settings (SasToken).
Amazon usage remains the same across all APIs.
4.1 Pointr.Microservice.Identity.API
Requires Azure + SasToken (ExpireMinute, ExpireMinuteThreshold).
Example Snippet
"Azure": {
"ConnectionString": "...",
"CDN": "https://pointrcdnexample.blob.core.windows.net",
"SasToken": {
"ExpireMinute": 360,
"ExpireMinuteThreshold": 30
}
}
Explanation
- ExpireMinute (360) → SAS token is valid for 360 minutes (6 hours).
- ExpireMinuteThreshold (30) → If the remaining lifetime of the token is less than 30 minutes, a new token will be generated proactively.
This ensures uninterrupted access without token expiration issues.
Full Example (Pointr.Microservice.Identity.API appsettings.json Storage Section)
"Storage": {
"Provider": "Azure",
"Azure": {
"ConnectionString": "...",
"CDN": "https://pointrcdnexample.blob.core.windows.net",
"SasToken": {
"ExpireMinute": 360,
"ExpireMinuteThreshold": 30
}
},
"Amazon": {
"BucketName": "",
"Region": "",
"CDN": "",
"AccessKey": "",
"SecretKey": ""
},
"PublishedContentFolder": "published-content",
"MBTilerZipsFolder": "mbtiler-zips",
"MapscaleCadsFolder": "mapscale-cads",
"FeatureImagesFolder": "feature-images",
"MBTilerFolder": "mbtiler",
"MapscaleResultsFolder": "mapscale-results",
"StylesWithContentsFolder": "style-with-map-metadata",
"StylesFolder": "styles",
"FilesFolder": "files",
"CadToGeojsonFolder": "cad-to-geojson",
"GeojsonToPngFolder": "geojson-to-png",
"ImdfFolder": "imdf"
}
4.2 Pointr.Microservice.Content.API
Requires only basic Azure fields (no SasToken).
Example Snippet
"Azure": {
"ConnectionString": "...",
"CDN": "https://pointrcdnexample.blob.core.windows.net"
}
Full Example (Pointr.Microservice.Content.API appsettings.json Storage Section)
"Storage": {
"Provider": "Azure",
"Azure": {
"ConnectionString": "...",
"CDN": "https://pointrcdnexample.blob.core.windows.net"
},
"Amazon": {
"BucketName": "",
"Region": "",
"CDN": "",
"AccessKey": "",
"SecretKey": ""
},
"PublishedContentFolder": "published-content",
"MBTilerZipsFolder": "mbtiler-zips",
"MapscaleCadsFolder": "mapscale-cads",
"FeatureImagesFolder": "feature-images",
"MBTilerFolder": "mbtiler",
"MapscaleResultsFolder": "mapscale-results",
"StylesWithContentsFolder": "style-with-map-metadata",
"StylesFolder": "styles",
"FilesFolder": "files",
"CadToGeojsonFolder": "cad-to-geojson",
"GeojsonToPngFolder": "geojson-to-png",
"ImdfFolder": "imdf"
}
4.3 Pointr.Microservice.PublishedContentStream.API
Same as Content.API (only basic Azure fields).
Example Snippet
"Azure": {
"ConnectionString": "...",
"CDN": "https://pointrcdnexample.blob.core.windows.net"
}
Full Example (Pointr.Microservice.PublishedContentStream.APIappsettings.json Storage Section)
"Storage": {
"Provider": "Azure",
"Azure": {
"ConnectionString": "...",
"CDN": "https://pointrcdnexample.blob.core.windows.net"
},
"Amazon": {
"BucketName": "",
"Region": "",
"CDN": "",
"AccessKey": "",
"SecretKey": ""
},
"PublishedContentFolder": "published-content",
"MBTilerZipsFolder": "mbtiler-zips",
"MapscaleCadsFolder": "mapscale-cads",
"FeatureImagesFolder": "feature-images",
"MBTilerFolder": "mbtiler",
"MapscaleResultsFolder": "mapscale-results",
"StylesWithContentsFolder": "style-with-map-metadata",
"StylesFolder": "styles",
"FilesFolder": "files",
"CadToGeojsonFolder": "cad-to-geojson",
"GeojsonToPngFolder": "geojson-to-png",
"ImdfFolder": "imdf"
}
4.4 Pointr.Microservice.Utility.API
Requires Azure + SasToken (ReadPermissionExpireDays, WritePermissionExpireHours).
Example Snippet
"Azure": {
"ConnectionString": "...",
"CDN": "https://pointrcdnexample.blob.core.windows.net",
"SasToken": {
"ReadPermissionExpireDays": 365,
"WritePermissionExpireHours": 1
}
}
Explanation
- ReadPermissionExpireDays (365) → Read permission tokens are valid for 365 days (1 year).
- WritePermissionExpireHours (1) → Write permission tokens are valid for 1 hour.
This configuration allows long-term read access while limiting write access for security purposes.
Full Example (Pointr.Microservice.Utility.API appsettings.json Storage Section)
"Storage": {
"Provider": "Azure",
"Azure": {
"ConnectionString": "...",
"CDN": "https://pointrcdnexample.blob.core.windows.net",
"SasToken": {
"ReadPermissionExpireDays": 365,
"WritePermissionExpireHours": 1
}
},
"Amazon": {
"BucketName": "",
"Region": "",
"CDN": "",
"AccessKey": "",
"SecretKey": ""
},
"PublishedContentFolder": "published-content",
"MBTilerZipsFolder": "mbtiler-zips",
"MapscaleCadsFolder": "mapscale-cads",
"FeatureImagesFolder": "feature-images",
"MBTilerFolder": "mbtiler",
"MapscaleResultsFolder": "mapscale-results",
"StylesWithContentsFolder": "style-with-map-metadata",
"StylesFolder": "styles",
"FilesFolder": "files",
"CadToGeojsonFolder": "cad-to-geojson",
"GeojsonToPngFolder": "geojson-to-png",
"ImdfFolder": "imdf"
}
5. Summary
- The
Providermust be the same across all projects. - Pointr.Microservice.Content.API and PublishedContentStream.API → require only basic Azure fields.
- Pointr.Microservice.Identity.API → requires Azure + SasToken (ExpireMinute, ExpireMinuteThreshold).
- Pointr.Microservice.Utility.API → requires Azure + SasToken (ReadPermissionExpireDays, WritePermissionExpireHours).
- Amazon fields are consistent and must be configured if
Provider = Amazon.