Skip to content

Commit

Permalink
chore: migrate AWS SDK for JavaScript v2 APIs to v3 in scripts folder (
Browse files Browse the repository at this point in the history
…#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 <[email protected]>
Co-authored-by: Emily Rohrbough <[email protected]>
Co-authored-by: Jordan <[email protected]>
  • Loading branch information
4 people committed Nov 21, 2023
1 parent a22fd5c commit 537642a
Show file tree
Hide file tree
Showing 3 changed files with 1,115 additions and 644 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@
"prepare": "husky install"
},
"devDependencies": {
"@aws-sdk/credential-providers": "3.53.0",
"@aws-sdk/client-s3": "3.450.0",
"@aws-sdk/credential-providers": "3.450.0",
"@cypress/questions-remain": "1.0.1",
"@cypress/request": "^3.0.0",
"@cypress/request-promise": "^5.0.0",
Expand Down Expand Up @@ -126,7 +127,6 @@
"@urql/introspection": "^0.3.0",
"ascii-table": "0.0.9",
"autobarrel": "^1.1.0",
"aws-sdk": "2.814.0",
"babel-eslint": "10.1.0",
"bluebird": "3.5.3",
"bluebird-retry": "0.11.0",
Expand Down
24 changes: 13 additions & 11 deletions scripts/binary/s3-api.ts
Original file line number Diff line number Diff line change
@@ -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))
Expand All @@ -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,
},
})
},

Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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)

Expand All @@ -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,
Expand Down
Loading

0 comments on commit 537642a

Please sign in to comment.