chore: migrate AWS SDK for JavaScript v2 APIs to v3 in scripts folder (#28249)

* fix: contributor checkout (run ci)

* .

* chore: run codemod on scripts/binary/s3-api.ts

* chore: format as per rest of the code

* chore(deps): use s3 client from AWS SDK for JavaScript v3

* chore(deps): use v3.450.0 of AWS SDK for JavaScript v3

* Update .circleci/config.yml

---------

Co-authored-by: Emily Rohrbough <emilyrohrbough@yahoo.com>
Co-authored-by: Emily Rohrbough <emilyrohrbough@users.noreply.github.com>
Co-authored-by: Jordan <jordan@jpdesigning.com>
This commit is contained in:
Trivikram Kamat
2023-11-20 19:48:48 -08:00
committed by GitHub
parent a22fd5cb82
commit 537642a8c7
3 changed files with 1055 additions and 584 deletions
+13 -11
View File
@@ -1,7 +1,7 @@
const debug = require('debug')('cypress:binary')
import la from 'lazy-ass'
import is from 'check-more-types'
import S3 from 'aws-sdk/clients/s3'
import { CopyObjectCommandInput, CopyObjectCommandOutput, ObjectCannedACL, S3 } from '@aws-sdk/client-s3'
export const hasOnlyStringValues = (o) => {
return Object.values(o).every((v) => is.unemptyString(v))
@@ -22,9 +22,11 @@ export const s3helpers = {
}
return new S3({
accessKeyId: aws.accessKeyId,
secretAccessKey: aws.secretAccessKey,
sessionToken: aws.sessionToken,
credentials: {
accessKeyId: aws.accessKeyId,
secretAccessKey: aws.secretAccessKey,
sessionToken: aws.sessionToken,
},
})
},
@@ -83,12 +85,12 @@ export const s3helpers = {
* and ACL 'public-read'
*/
copyS3 (sourceKey: string, destinationKey: string, bucket: string,
contentType: S3.ContentType, acl: S3.ObjectCannedACL,
s3: S3): Promise<S3.CopyObjectOutput> {
contentType: string, acl: ObjectCannedACL,
s3: S3): Promise<CopyObjectCommandOutput> {
return new Promise((resolve, reject) => {
debug('copying %s in bucket %s to %s', sourceKey, bucket, destinationKey)
const params: S3.CopyObjectRequest = {
const params: CopyObjectCommandInput = {
Bucket: bucket,
CopySource: `${bucket}/${sourceKey}`,
Key: destinationKey,
@@ -116,7 +118,7 @@ export const s3helpers = {
* but the returned object has these prefixes stripped. Thus if we set
* a single "x-amz-meta-user: gleb", the resolved object will be simply {user: "gleb"}
*/
getUserMetadata (bucket: string, key: string, s3: S3): Promise<S3.Metadata> {
getUserMetadata (bucket: string, key: string, s3: S3): Promise<Record<string, string>> {
return new Promise((resole, reject) => {
debug('getting user metadata from %s %s', bucket, key)
@@ -139,15 +141,15 @@ export const s3helpers = {
* Setting user metadata can be accomplished with copying the object back onto itself
* with replaced metadata object.
*/
setUserMetadata (bucket: string, key: string, metadata: S3.Metadata,
contentType: S3.ContentType, acl: S3.ObjectCannedACL, s3: S3): Promise<S3.CopyObjectOutput> {
setUserMetadata (bucket: string, key: string, metadata: Record<string, string>,
contentType: string, acl: ObjectCannedACL, s3: S3): Promise<CopyObjectCommandOutput> {
la(hasOnlyStringValues(metadata),
'metadata object can only have string values', metadata)
return new Promise((resolve, reject) => {
debug('setting metadata to %o for %s %s', metadata, bucket, key)
const params: S3.CopyObjectRequest = {
const params: CopyObjectCommandInput = {
Bucket: bucket,
CopySource: `${bucket}/${key}`,
Key: key,