Add possibility to use path style discovery on S3 tech docs. Enables the possibility to support S3-like buckets that rely on path style API like Localstack.

Signed-off-by: Jussi Hallila <jussi@hallila.com>
This commit is contained in:
Jussi Hallila
2021-04-29 09:43:10 +02:00
parent 7122e20b79
commit e9e56b01ac
5 changed files with 27 additions and 0 deletions
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/techdocs-common': patch
---
Adding optional config to enable S3-like API for tech-docs using s3ForcePathStyle option.
This allows providers like LocalStack, Minio and Wasabi (+possibly others) to be used to host tech docs.
+2
View File
@@ -41,8 +41,10 @@ Kaewkasi
Knex
Leasot
Lerna
LocalStack
Luxon
Minikube
Minio
Mkdocs
Monorepo
Namespaces
+5
View File
@@ -78,6 +78,11 @@ techdocs:
# https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#constructor-property
endpoint: ${AWS_ENDPOINT}
# (Optional) Whether to use path style URLs when communicating with S3.
# Defaults to false.
# This allows providers like LocalStack, Minio and Wasabi (and possibly others) to be used to host tech docs.
s3ForcePathStyle: false
# Required when techdocs.publisher.type is set to 'azureBlobStorage'. Skip otherwise.
azureBlobStorage:
@@ -80,10 +80,17 @@ export class AwsS3Publish implements PublisherBase {
'techdocs.publisher.awsS3.endpoint',
);
// AWS forcePathStyle is an optional config. If missing, it defaults to false. Needs to be enabled for cases
// where endpoint url points to locally hosted S3 compatible storage like Localstack
const s3ForcePathStyle = config.getOptionalBoolean(
'techdocs.publisher.awsS3.s3ForcePathStyle',
);
const storageClient = new aws.S3({
credentials,
...(region && { region }),
...(endpoint && { endpoint }),
...(s3ForcePathStyle && { s3ForcePathStyle }),
});
return new AwsS3Publish(storageClient, bucketName, logger);
+7
View File
@@ -90,6 +90,13 @@ export interface Config {
* @visibility secret
*/
endpoint?: string;
/**
* (Optional) Whether to use path style URLs when communicating with S3.
* Defaults to false.
* This allows providers like LocalStack, Minio and Wasabi (and possibly others) to be used to host tech docs.
* @visibility backend
*/
endpoint?: string;
};
}
| {