View a markdown version of this page

Creación de un formulario HTML (mediante AWS Signature Version 4) - Amazon Simple Storage Service

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 es examplebucket, la URL es http://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 de enctype, 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: private | public-read | public-read-write | aws-exec-read | authenticated-read | bucket-owner-read | bucket-owner-full-control

No

Cache-Control

Content-Type

Content-Disposition

Content-Encoding

Expires

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 photo1.jpg y especifica /user/user1/${filename} como nombre de clave, el archivo se almacena como /user/user1/photo1.jpg.

Para obtener más información, consulte Clave de objeto y metadatos en la Guía del usuario de Amazon Simple Storage Service.

policy

La política de seguridad codificada en base64 que describe lo q‎ue 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 success_action_redirect o Amazon S3 no puede interpretar la URL, Amazon S3 devuelve el tipo de documento vacío especificado en el campo success_action_status.

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 success_action_redirect.

Los valores válidos son 200, 201 o 204 (predeterminado).

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.

nota

Algunas versiones de Adobe Flash Player no controlan debidamente las respuestas HTTP con un cuerpo vacío. Para admitir cargas con Adobe Flash, recomendamos establecer success_action_status en 201.

No

x-amz-algorithm

El algoritmo de firma utilizado para autenticar la solicitud. Para AWS Signature Version 4, el valor es AWS4-HMAC-SHA256.

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:

<your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

Por ejemplo:

AKIAIOSFODNN7EXAMPLE/20130728/us-east-1/s3/aws4_request

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, 20130728T000000Z.

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 (x-amz-date) que firmó.

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 x-amz-security-token: uno para el token de producto y otro para el token de usuario. Para obtener más información, consulte Uso de DevPay en la Guía del usuario de Amazon Simple Storage Service.

Si la solicitud utiliza credenciales de sesión, se requiere un formulario x-amz-security-token. Para obtener más información, consulte Solicitud de credenciales de seguridad temporales en la Guía del usuario de IAM.

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 x-amz-*).

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.

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.