Saltar al contenido

¿Cómo coloco un objeto en amazon s3 usando una URL prefirmada?

Puede darse el caso de que encuentres algún problema con tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.

Solución:

Me las arreglé para cargar con éxito un archivo usando su código.

Aquí están los pasos que seguí:

  1. Creó un nuevo depósito y un nuevo usuario de IAM

  2. Establezca la política de usuario de IAM de la siguiente manera:

    
        "Version": "2012-10-17",
        "Statement": [
            
                "Sid": "Stmt1418647210000",
                "Effect": "Allow",
                "Action": [
                    "s3:Put*"
                ],
                "Resource": [
                    "arn:aws:s3:::myBucket/*"
                ]
            
        ]
    
    
  3. NO creó una política de depósito

  4. Usó su código para generar la URL prefirmada:

    var aws = require('aws-sdk');
    aws.config = 
        accessKeyId: myAccessKeyId,
        secretAccessKey: mySecretAccessKey
    ;
    
    var s3 = new aws.s3();
    s3.getSignedUrl('putObject', 
        Bucket: 'myBucket',
        Expires: 60*60,
        Key: 'myKey'
    , function (err, url) 
        console.log(url);
    );
    
  5. Copié la URL en la pantalla y usé curl para probar la carga como se muestra a continuación:

    curl.exe -k -X PUT -T "someFile" "https://myBucket.s3.amazonaws.com/myKey?AWSAccessKeyId=ACCESS_KEY_ID&Expires=1457632663&Signature=Dhgp40j84yfjBS5v5qSNE4Q6l6U%3D"
    

En mi caso, por lo general, los cambios en la política tardaron de 5 a 10 segundos en surtir efecto, por lo que si falla la primera vez, asegúrese de seguir enviándolo por un tiempo.

Espero que esto ayude.

Puede que también te ayude 🙂 Añade un Tipo de contenido propiedad :

s3.getSignedUrl('putObject', 
    Bucket: 'myBucket',
    Expires: 60*60,
    Key: 'myKey',
    ContentType: 'image/jpeg',
, function (err, url) 
   console.log(url);
);

  1. En su consola de IAM, haga clic en Usuarios
  2. En la lista de la derecha, elija el usuario de IAM que utilizó (debe ser ‘miusuario’)
  3. Elija Permisos en las subpestañas
  4. Haga clic en Adjuntar política y elija AmazonS3FullAccess

La página final será así.

También puede consultar la subpestaña Credenciales de seguridad, su accessKeyId debe estar en la lista. La secretAccessKey simplemente no puede volver a obtenerse.

Si estás de acuerdo, tienes la opción de dejar un tutorial acerca de qué te ha parecido esta sección.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *