Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

225
Views
aws-sdk .SharedIniFileCredentials perfil: alternativa de navegador 'wasabi'

Estoy tratando de implementar el alojamiento de archivos S3 en wasabi usando los ejemplos de sus documentos . Si bien la configuración de credenciales con SharedIniFileCredentials funciona muy bien en Node, necesitaría usar la misma funcionalidad dentro del navegador.

Aquí, me sale el siguiente error

aws_sdk__WEBPACK_IMPORTED_MODULE_1___default(...).SharedIniFileCredentials no es un constructor

Este es mi código (que funciona muy bien dentro del nodo, pero arroja un error dentro de un componente React):

 import AWS from 'aws-sdk'; export const createS3Client = (): AWS.S3 => { const credentials = new AWS.SharedIniFileCredentials({ profile: 'wasabi' }); AWS.config.credentials = credentials; AWS.config.credentials.accessKeyId = process.env.NX_WASABI_KEY; AWS.config.credentials.secretAccessKey = process.env.NX_WASABI_SECRET; AWS.config.region = process.env.NX_WASABI_REGION; const ep = new AWS.Endpoint(process.env.NX_WASABI_ENDPOINT); const s3 = new AWS.S3({ endpoint: ep }); return s3; }; export const getFile = async (key: string): Promise<Buffer> => { const s3 = createS3Client(); const params = { Bucket: process.env.NX_WASABI_BUCKET, Key: key, }; const data = await s3.getObject(params).promise(); return data.Body as Buffer; };

La razón principal por la que intento hacer esto es porque quiero cargar imágenes almacenadas dentro de un depósito que no están disponibles públicamente en un componente FE (React).

Este es el componente en cuestión:

 import { useEffect, useState } from 'react'; import { getFile } from '../../lib/wasabi'; import Image from 'next/image'; import styles from './PaletteImage.module.scss'; interface Props { name: string; source: string; } const PaletteImage = ({ name, source }: Props) => { const [isLoading, setIsLoading] = useState(true); // component needs to load image data on mount const [error, setError] = useState<string>(); const [base64, setBase64] = useState<string>(); useEffect(() => { const parseImage = async () => { try { const buffer = await getFile(source); setBase64(buffer.toString('base64')); } catch (e) { setError(e.message); } finally { setIsLoading(false); } }; parseImage(); }, []); return ( <div className={styles.imageContainer}> {isLoading ? ( 'loading' ) : error ? ( error ) : ( <Image alt={name} layout="fill" objectFit="contain" objectPosition="left top" src={`data:image/jpeg;base64, ${base64}`} /> )} </div> ); }; export default PaletteImage;

Gracias por la ayuda.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Deberá utilizar una alternativa a AWS.SharedIniFileCredentials, ya que las secuencias de comandos del navegador del SDK de JavaScript de AWS no lo admiten y la versión del navegador del SDK tampoco puede obtener acceso a AWS.SharedIniFileCredentials, que está destinado a recuperar las credenciales del SDK local. sistema de archivos

Las opciones disponibles incluyen CognitoIdentityCredentials o Web Federated Identity. Consulte: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-browser.html

Le sugiero que consulte la siguiente documentación para AWS Javascript SDK:

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/js-sdk-dv-v2.pdf#setting-credentials-browser

Salud

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!