Files
2026-07-26 18:25:37 +09:00

26 lines
1.2 KiB
JavaScript

import { URL } from "node:url";
import { getAgentByUrl } from "../../misc/fetch.js";
import { S3Client } from "@aws-sdk/client-s3";
import { NodeHttpHandler } from "@smithy/node-http-handler";
export function getS3(meta) {
const endpointPrefixed = meta.objectStorageEndpoint && (meta.objectStorageEndpoint.startsWith("http://") || meta.objectStorageEndpoint.startsWith("https://"));
const endpoint = meta.objectStorageEndpoint ? endpointPrefixed ? meta.objectStorageEndpoint : `${meta.objectStorageUseSSL ? "https://" : "http://"}${meta.objectStorageEndpoint}` : undefined;
const agentUrl = new URL(endpoint);
const agent = getAgentByUrl(agentUrl, !meta.objectStorageUseProxy);
return new S3Client({
endpoint,
region: meta.objectStorageRegion || "us-east-1",
credentials: {
accessKeyId: meta.objectStorageAccessKey,
secretAccessKey: meta.objectStorageSecretKey
},
forcePathStyle: meta.objectStorageEndpoint ? meta.objectStorageS3ForcePathStyle : false,
requestChecksumCalculation: "WHEN_REQUIRED",
responseChecksumValidation: "WHEN_REQUIRED",
requestHandler: new NodeHttpHandler({
httpAgent: agent,
httpsAgent: agent
})
});
}