¿Cómo copiar archivos del depósito S3 de la cuenta de AWS de origen en el depósito S3 de destino que está en una cuenta de AWS diferente usando NodeJS ?
es decir, de S3 en la cuenta A de AWS a S3 en la cuenta B de AWS
¿Probaste el método copyObject ?
Use Bucket y Key para indicar el destino y CopySource para indicar el objeto de origen. Asegúrese de que sus credenciales tengan permiso para leer el objeto de origen y escribir el objeto de destino.
Idealmente, mejore la seguridad de su copia afirmando el ID de la cuenta de AWS del depósito de destino en ExpectedBucketOwner , si lo sabe.
Aquí hay un ejemplo no probado:
const s3 = new AWS.S3(); const params = { Bucket: 'destbucket', CopySource: 'srcbucket/srcfolder/file.txt', Key: 'destfolder/file.txt' }; const result = await s3.copyObject(params).promise();Si necesita asumir un rol que permita el acceso a ambos depósitos, use alguna variante de este código para obtener las credenciales de STS y un objeto de cliente de S3:
const sts = new AWS.STS({ region: 'us-west-2' }); const role_params = { RoleArn: 'arn:aws:iam::1234567890:role/yourrole', RoleSessionName: 'optional-name', ExternalId: 'some-optional-value', DurationSeconds: 3600, }; const res = await sts.assumeRole(role_params).promise(); const cred_params = { accessKeyId: res.Credentials.AccessKeyId, secretAccessKey: res.Credentials.SecretAccessKey, sessionToken: res.Credentials.SessionToken, }; const s3 = await new AWS.S3(cred_params);Para comprender los permisos necesarios para el acceso a S3 entre cuentas, consulte ¿Cómo puedo proporcionar acceso entre cuentas a objetos que están en depósitos de Amazon S3?