Creación de un formulario HTML (mediante AWS Signature Version 4)
Para que los usuarios puedan cargar contenido en Amazon S3 con sus navegadores (solicitudes HTTP POST), debe utilizar los formularios HTML. Los formularios HTML constan de una declaración de formulario y campos de formulario. Cada declaración de formulario incluye información de alto nivel acerca de la solicitud. Los campos del formulario contienen información detallada sobre la solicitud.
En esta sección, se describe cómo crear formularios HTML. Para ver un ejemplo práctico de carga basada en un navegador mediante HTTP POST y cálculos de firma relacionados para la autenticación de solicitudes, consulte Ejemplo: carga basada en el navegador con HTTP POST (con AWS Signature Version 4).
El formulario y la política deben estar cifrados con UTF-8. Puede aplicar la codificación UTF-8 al formulario mediante la especificación de charset=UTF-8 en el atributo content. A continuación, se muestra un ejemplo de la codificación UTF-8 en el encabezado HTML.
<html> <head> ... <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ... </head> <body>
A continuación, se muestra un ejemplo de la codificación UTF-8 en un encabezado de solicitud.
Content-Type: text/html; charset=UTF-8
nota
Los datos y límites del formulario (sin incluir los contenidos del archivo) no pueden exceder los 20 KB.
Declaración de formulario HTML
La declaración del formulario HTML tiene los tres atributos siguientes:
-
action: la URL que procesa la solicitud, que debe establecerse en la URL del bucket. Por ejemplo, si el nombre del bucket esexamplebucket, la URL eshttp://examplebucket.s3.amazonaws.com/.nota
El nombre de clave se especifica en un campo de formulario.
-
method: el método debe ser POST. -
enctype: el tipo de documento adjunto (enctype) se debe establecer en datos de formulario o multiparte para cargas de archivos y cargas de área de texto. Para obtener más información acerca deenctype, consulte RFC 1867.
Es una declaración de formulario para el bucket examplebucket.
<form action="http://examplebucket.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
Campos de formulario HTML
En la siguiente tabla, se describe una lista de los campos que se pueden utilizar en un formulario. Entre otros campos, hay un campo de firma que puede usar para autenticar las solicitudes. Hay campos para especificar el algoritmo de cálculo de firmas (x-amz-algorithm), el alcance de las credenciales (x-amz-credential) que utilizó para generar la clave de firma y la fecha (x-amz-date) utilizada para calcular la firma. Amazon S3 utiliza esta información para volver a crear la firma. Si las firmas coinciden, Amazon S3 procesa la solicitud.
nota
La variable ${filename} se reemplaza automáticamente con el nombre del archivo provisto por el usuario y es reconocida por todos los campos de formulario. Si el navegador o el cliente proporciona una ruta total o parcial al archivo, solo se utilizará el texto después de la última barra inclinada (/) o barra inversa (\) (por ejemplo, C:\Program
Files\directory1\file.txt se interpreta como file.txt). Si no se brinda ningún archivo o nombre de archivo, la variable se reemplaza con una cadena vacía.
Si no proporciona los elementos necesarios para las solicitudes autenticadas, como el elemento policy, se asume que la solicitud es anónima y solo tendrá éxito si ha configurado el bucket para que sea de lectura y escritura públicas.
| Nombre del elemento | Descripción | Obligatorio |
|---|---|---|
acl |
Una lista de control de acceso (ACL) de Amazon S3. Si se especifica una ACL no válida, Amazon S3 deniega la solicitud. Para obtener más información acerca de las ACL, consulte Uso de las ACL de Amazon S3. Tipo: cadena Valor predeterminado: privado Valores válidos: |
No |
Cache-Control
|
Encabezados específicos de REST. Para obtener más información, consulte PutObject. |
No |
key |
El nombre de la clave del objeto cargado. Para utilizar el nombre de archivo provisto por el usuario, utilice la variable ${filename}. Por ejemplo, si carga un archivo Para obtener más información, consulte Clave de objeto y metadatos en la Guía del usuario de Amazon Simple Storage Service. |
Sí |
policy |
La política de seguridad codificada en base64 que describe lo que se permite en la solicitud. Para las solicitudes autenticadas, se requiere una política. Las solicitudes sin una política de seguridad se consideran anónimas y solo se aceptarán en un bucket que se puede escribir públicamente. |
Obligatorio para las solicitudes autenticadas |
success_action_redirect |
URL al que el cliente es redirigido después de la carga exitosa. Si no se especifica Si la carga produce un error, Amazon S3 devuelve un error y no redirige al usuario a otra URL. |
No |
success_action_status |
El código de estado devuelto al cliente después de la carga exitosa si no se especifica Los valores válidos son Si el valor se establece en 200 o 204, Amazon S3 devuelve un documento vacío con el código de estado especificado. Si el valor se establece en 201, Amazon S3 devuelve un documento XML con un código de estado 201. Para obtener información acerca del contenido del documento XML, consulte POST Object. Si el valor no se establece o no es válido, Amazon S3 devuelve un documento vacío con un código de estado 204. notaAlgunas versiones de Adobe Flash Player no controlan debidamente las respuestas HTTP con un cuerpo vacío. Para admitir cargas con Adobe Flash, recomendamos establecer |
No |
x-amz-algorithm |
El algoritmo de firma utilizado para autenticar la solicitud. Para AWS Signature Version 4, el valor es Este campo es obligatorio si se incluye un documento de política en la solicitud. |
Obligatorio para las solicitudes autenticadas |
x-amz-credential |
Además del ID de clave de acceso, este campo también proporciona información de alcance, lo que identifica la región y el servicio para los que es válida la firma. Debe ser el mismo alcance que utilizó al calcular la clave de firma para el cálculo de la firma. Es una cadena del formulario siguiente:
Por ejemplo:
Para Amazon S3, la cadena aws-service es s3. Para obtener una lista de las cadenas de aws-region de Amazon S3, consulte Regiones y puntos de conexión en Referencia general de AWS. Esto es obligatorio si se incluye un documento de política con la solicitud. |
Obligatorio para las solicitudes autenticadas |
x-amz-date |
Es el valor de la fecha en formato ISO8601. Por ejemplo, Es la misma fecha que utilizó al crear la clave de firma (por ejemplo, 20130728). Este debe ser también el mismo valor que proporciona en la política ( Esto es obligatorio si se incluye un documento de política con la solicitud. |
Obligatorio para las solicitudes autenticadas |
x-amz-security-token |
Un token de seguridad utilizado por Amazon DevPay y las credenciales de sesión Si la solicitud utiliza Amazon DevPay, se requieren dos campos de formulario Si la solicitud utiliza credenciales de sesión, se requiere un formulario |
No |
x-amz-signature |
(AWS Signature Version 4) El hash HMAC-SHA256 de la política de seguridad. Este campo es obligatorio si se incluye un documento de política en la solicitud. |
Obligatorio para las solicitudes autenticadas |
x-amz-meta-* |
Los nombres de campos que comienzan con este prefijo son metadatos definidos por el usuario. Cada uno de ellos se almacena y se devuelve como un conjunto de pares clave-valor. Amazon S3 no valida ni interpreta metadatos definidos por el usuario. Para obtener más información, consulte PutObject. |
No |
x-amz-* |
Consulte POST Object (POST Object para otros encabezados |
No |
file |
Contenido de texto o archivo. El archivo o el contenido debe ser el último campo en el formulario. No puede cargar más de un archivo a la vez. |
Sí |
Los elementos condicionales son obligatorios para las solicitudes autenticadas y son opcionales para las solicitudes anónimas.
Ahora que sabe cómo crear formularios, puede crear una política de seguridad que puede firmar. Para obtener más información, consulte Política POST.