Es esta la manera correcta de usar AWS global config en el SDK de JavaScript?

0

Pregunta

La forma de AWS obtiene configurado que me parece realmente extraño. Usted al parecer, se puede establecer la configuración en un archivo y, a continuación, usted no tiene que export la configuración de AWS objeto, usted puede importar directamente desde el nodo de módulos de nuevo. Estoy teniendo un tiempo difícil la comprensión de cómo y por qué funciona esto:

// config.js
const AWS = require('aws-sdk')
AWS.config.update({ region: 'us-east-2', signatureVersion: 'v4' })

A continuación, en otro archivo, que puedo importar de AWS como este, y la config por arte de magia se pega con él:

// some other js file
const AWS = require('aws-sdk') // look, I didn't import this from config.js!
const s3 = new AWS.S3() // it knows how to use the right region & signature!

¿Por qué no puedo exportar la AWS que he configurado de importación y que en su lugar? ¿Cómo es la configuración de copiado, incluso cuando no estoy de importar desde mi archivo de configuración?

1

Mejor respuesta

2

Si usted echa un vistazo a el código fuente se puede ver que el AWS objeto tiene config una propiedad que se inicializa.

Esto es esencialmente objeto singleton, que se basa en el módulo de almacenamiento en caché en Node.js.

Desde el NodeJS docs:

El almacenamiento en caché

Los módulos se almacenan en caché después de la primera vez que se cargan. Esto significa (entre otras cosas) de que cada llamada a exigir('foo') se obtiene exactamente el mismo objeto devuelto, si se resuelve a la misma archivo.

Siempre requieren.la caché no está modificado, varias llamadas a require('foo') no hará que el módulo de código para que se ejecute múltiples veces. Esta es una característica importante. Con ella, "parcialmente hecho" objetos pueden ser devueltos, permitiendo así transitiva dependencias de carga incluso cuando iban a causar ciclos.

Tener un módulo de ejecución de código en múltiples ocasiones, la exportación de una función, y llame a esa función.

2021-11-23 20:55:25

Gran explicación. Es un poco inquietante porque estoy tan acostumbrado a ser el patrón de los demás el uso que es de importación > config > exportar, a continuación, utilizar la exportado objeto durante el resto de su proyecto. Se siente mal simplemente hacer la config y no de exportación. ¿Cómo es que esto no crear una condición de carrera? Supongo que mientras la config que sucede en tiempo de ejecución no?
Glenn

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................