amazon-s3 - pricing - precio s3
Usando la versiĆ³n Leigh de S3Wrapper.cfc No se puede pasar Init (1)
Le daré un resumen de lo que hace el código:
getObjectLink
devuelve una URL HTTP para el archivo fake.ping
que se encuentra buscando en el depósito imgbkt.domain.com
de la región s3-us-west-1
. Este enlace es temporal y expira después de 60 segundos de forma predeterminada.
getObject
invoca getObjectLink
e inmediatamente solicita la URL mediante HTTP GET. La respuesta se guarda en el directorio de S3v4.cfc
con el nombre de archivo fake.ping
de forma predeterminada. Finalmente, la función devuelve la ruta completa del archivo descargado: E:/wwwDevRoot/taa/fake.ping
Para guardar el archivo en una ubicación diferente, invocaría:
downloadPath = ''E:/';
test = s3.getObject(bucket,obj,region,downloadPath);
writeDump(test);
La solicitud HTTP es sincrónica, lo que significa que el archivo se descargará por completo cuando las funciones devuelvan la ruta del archivo.
Si desea acceder al contenido real del archivo, puede hacer esto:
test = s3.getObject(bucket,obj,region);
contentAsString = fileRead(test); // returns the file content as string
// or
contentAsBinary = fileReadBinary(test); // returns the content as binary (byte array)
writeDump(contentAsString);
writeDump(contentAsBinary);
(Es posible que desee transmitir el contenido si el archivo es grande, ya que fileRead
/ fileReadBinary
lee todo el archivo en el búfer. Use fileOpen
para transmitir el contenido.
¿Eso te ayuda?
Soy nuevo en S3 y necesito usarlo para el almacenamiento de imágenes. Encontré media docena de versiones de un s2wrapper para cf, pero parece que el único conjunto de para v4 es uno modificado por Leigh
https://gist.github.com/Leigh-/26993ed79c956c9309a9dfe40f1fce29
Se colocó en el directorio com y creó una página de "prueba" que contiene el siguiente código:
s3 = createObject(''component'',''com.S3Wrapper'').init(application.s3.AccessKeyId,application.s3.SecretAccessKey);
pero obtuve el siguiente error:
Así que cambié la línea 37 de
variables.Sv4Util = createObject(''component'', ''Sv4'').init(arguments.S3AccessKey, arguments.S3SecretAccessKey);
a
variables.Sv4Util = createObject(''component'', ''Sv4Util'').init(arguments.S3AccessKey, arguments.S3SecretAccessKey);
Tengo ganas de pasar por el código de Leigh y comenzar a cambiar las cosas, es una mala idea ya que he estado acechando aquí por año y sé que el código de Leigh es sólido.
¿Alguien sabe si hay algún ejemplo sobre cómo usar esto en cualquier lugar? Si no es lo que estoy haciendo mal. Si hace una diferencia, estoy usando Lucee 5 y no el motor CF de Adobe.
ACTUALIZAR:
Seguí las indicaciones de Leigh y el error ya no existe. He añadido un código más a mi página de prueba que ahora se ve así:
<cfscript>
s3 = createObject(''component'',''com.S3v4'').init(application.s3.AccessKeyId,application.s3.SecretAccessKey);
bucket = "imgbkt.domain.com";
obj = "fake.ping";
region = "s3-us-west-1"
test = s3.getObject(bucket,obj,region);
writeDump(test);
test2 = s3.getObjectLink(bucket,obj,region);
writeDump(test2);
writeDump(s3);
</cfscript>
Independientemente de lo que puse para el cubo, obj o región que obtengo:
JIC: fui a AWS y obtuve nuevas claves:
Leigh, si todavía está cerca o alguien, ¿cómo ha usado alguna de las sugerencias u orientaciones de uno de los s3Wrappers?
ACTUALIZACIÓN # 2: Incluso después de la ayuda de Alex, no puedo hacer que esto funcione. El enlace que recibo de getObjectLink no es válido y getObject nunca descarga un objeto. Pensé que probaría el método putObject
test3 = s3.putObject(bucketName=bucket,regionName=region,keyName="favicon.ico");
writeDump(test3);
para ver si hay información adicional, recibí esto:
Encontré este artículo https://shlomoswidler.com/2009/08/amazon-s3-gotcha-using-virtual-host.html pero es bastante viejo y dado que S3 sugiere específicamente el uso de puntos en nombres de pila, no es que sea así. es relevante por más tiempo Obviamente, hay algo que estoy haciendo mal pero he pasado horas tratando de resolverlo y parece que no puedo averiguar qué podría ser.