Migrate AWS SDK for JavaScript v2 APIs to v3

This was cherry-picked from https://github.com/handlebars-lang/handlebars.js/pull/2020.
This commit is contained in:
Jakob Linskeseder
2026-03-18 20:22:55 +01:00
committed by Jay Linski
parent 71350d90ec
commit d025292e06
3 changed files with 4468 additions and 727 deletions
+4444 -705
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -64,6 +64,7 @@
"yargs": "^16.2.0" "yargs": "^16.2.0"
}, },
"devDependencies": { "devDependencies": {
"@aws-sdk/client-s3": "^3.1011.0",
"@playwright/test": "^1.58.2", "@playwright/test": "^1.58.2",
"@rspack/cli": "^1.7.8", "@rspack/cli": "^1.7.8",
"@rspack/core": "^1.7.8", "@rspack/core": "^1.7.8",
@@ -72,7 +73,6 @@
"@vitest/browser": "^4.0.18", "@vitest/browser": "^4.0.18",
"@vitest/browser-playwright": "^4.0.18", "@vitest/browser-playwright": "^4.0.18",
"@vitest/coverage-v8": "^4.0.18", "@vitest/coverage-v8": "^4.0.18",
"aws-sdk": "^2.1.49",
"concurrently": "^5.0.0", "concurrently": "^5.0.0",
"eslint": "^10.0.3", "eslint": "^10.0.3",
"eslint-plugin-compat": "^7.0.1", "eslint-plugin-compat": "^7.0.1",
+23 -21
View File
@@ -1,9 +1,11 @@
/* eslint-disable no-console */ /* eslint-disable no-console */
const fs = require('fs'); const fs = require('fs');
const AWS = require('aws-sdk'); const { S3, PutObjectCommand } = require('@aws-sdk/client-s3');
const git = require('./util/git'); const git = require('./util/git');
const semver = require('semver'); const semver = require('semver');
let s3Client;
async function main() { async function main() {
console.log('remotes: ' + (await git.remotes())); console.log('remotes: ' + (await git.remotes()));
console.log('branches: ' + (await git.branches())); console.log('branches: ' + (await git.branches()));
@@ -25,13 +27,13 @@ async function main() {
} }
if (suffixes.length > 0) { if (suffixes.length > 0) {
initSDK(); validateS3Env();
console.log('publishing file-suffixes: ' + JSON.stringify(suffixes)); console.log('publishing file-suffixes: ' + JSON.stringify(suffixes));
await publish(suffixes); await publish(suffixes);
} }
} }
function initSDK() { function validateS3Env() {
const bucket = process.env.S3_BUCKET_NAME, const bucket = process.env.S3_BUCKET_NAME,
key = process.env.S3_ACCESS_KEY_ID, key = process.env.S3_ACCESS_KEY_ID,
secret = process.env.S3_SECRET_ACCESS_KEY; secret = process.env.S3_SECRET_ACCESS_KEY;
@@ -39,8 +41,6 @@ function initSDK() {
if (!bucket || !key || !secret) { if (!bucket || !key || !secret) {
throw new Error('Missing S3 config values'); throw new Error('Missing S3 config values');
} }
AWS.config.update({ accessKeyId: key, secretAccessKey: secret });
} }
async function publish(suffixes) { async function publish(suffixes) {
@@ -65,25 +65,27 @@ async function publishSuffix(suffix) {
} }
async function uploadToBucket(localFile, nameInBucket) { async function uploadToBucket(localFile, nameInBucket) {
const bucket = process.env.S3_BUCKET_NAME; const s3 = getS3Client();
const uploadParams = {
Bucket: bucket, return s3.send(
Key: nameInBucket, new PutObjectCommand({
Body: fs.readFileSync(localFile, 'utf8'), Bucket: process.env.S3_BUCKET_NAME,
}; Key: nameInBucket,
return s3PutObject(uploadParams); Body: fs.readFileSync(localFile, 'utf8'),
})
);
} }
function s3PutObject(uploadParams) { function getS3Client() {
const s3 = new AWS.S3(); if (!s3Client) {
return new Promise((resolve, reject) => { s3Client = new S3({
s3.putObject(uploadParams, (err) => { credentials: {
if (err != null) { accessKeyId: process.env.S3_ACCESS_KEY_ID,
return reject(err); secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
} },
resolve();
}); });
}); }
return s3Client;
} }
function getNameInBucket(filename, suffix) { function getNameInBucket(filename, suffix) {