

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Tutorial: Configuración AWS Transfer Family aplicación web con acceso selectivo a varios cubos
<a name="webapp-s3-tutorial"></a>

Este tutorial lo guiará a través de la configuración de una aplicación web de Transfer Family con permisos de bucket de Amazon S3 específicos para un solo usuario. Aprenderá a configurar una solución que permita a los usuarios descargar desde un bucket y subir contenido a otro sin perder la seguridad. Se trata de un tutorial avanzado que se basa en los conceptos tratados en el tutorial básico. Si eres nuevo en AWS Transfer Family aplicaciones web, considera empezar con [Tutorial: Configuración de una aplicación web básica de Transfer Family](web-app-tutorial.md).

## Requisitos previos
<a name="webapp-s3-tutorial-prereqs"></a>

Antes de comenzar este tutorial, necesita lo siguiente:
+ IAM Identity Center configurado en la misma región que su AWS Transfer Family aplicación web. Tenga en cuenta que AWS solo permite una instancia de IAM Identity Center por AWS cuenta para todas las regiones.
+ Al menos un usuario configurado en el centro de identidad de IAM.
+ Dos cubos de S3: uno para descargas y otro para subidas.

**nota**  
Este tutorial comparte muchos requisitos previos con el tutorial básico de la aplicación web. Para obtener más información sobre la configuración del Centro de identidad de IAM y la creación de usuarios, consulte [Tutorial: Configuración de una aplicación web básica de Transfer Family](web-app-tutorial.md).

## Paso 1: Crea una aplicación web de Transfer Family
<a name="webapp-s3-tutorial-create-webapp"></a>

**Para crear una aplicación web de Transfer Family**

1. Inicia sesión en Consola de administración de AWS y abre el AWS Transfer Family consola en [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/).

1. En el panel de navegación izquierdo, elige **Aplicaciones web**.

1. Elige **Crea una aplicación web**.

   Para el acceso de autenticación, tenga en cuenta que el servicio encuentra automáticamente el AWS IAM Identity Center instancia que configuraste como requisito previo.

1. En el **Tipo de permiso** panel, seleccione **Crear y usar un nuevo rol de servicio**. El servicio crea el rol de portador de identidad para usted. La función de portador de identidad incluye la identidad de un usuario autenticado en sus sesiones.

1. En el **Unidades de aplicaciones web** panel, acepte el valor predeterminado de 1 o ajústelo a un valor superior si es necesario.

1. Agregue una etiqueta que le ayude a organizar sus aplicaciones web. Para ver el tutorial, escriba **Nombre** para la clave y **Aplicación web tutorial** por la relación calidad-precio.
**sugerencia**  
Puede editar el nombre de la aplicación web directamente desde **Aplicaciones web** página de lista después de crearla.

1. Elige **Siguiente** para abrir el **Diseñar una aplicación web** página. En esta pantalla, proporcione la siguiente información.

   Si lo desea, puede proporcionar un título para su aplicación web. También puedes subir archivos de imagen para tu logotipo y tu favicon.
   + Para el título de la página, personalice el título de la pestaña del navegador que ven los usuarios cuando se conectan a la aplicación web. Si no escribes nada para el título de la página, el valor predeterminado es **Aplicación web Transfer**.
   + Para el logotipo, sube un archivo de imagen. El tamaño máximo para subir la imagen de tu logotipo es de 2 MB.
   + Para el favicon, sube un archivo de imagen. El tamaño máximo para subir tu favicon es de 2 MB.

1. Elige **Siguiente**, luego elige **Crea una aplicación web**.

## Paso 2: Configurar las funciones de IAM para el acceso a S3
<a name="webapp-s3-tutorial-iam-roles"></a>

Debes crear dos funciones de IAM: una con acceso solo para descarga al primer bucket y otra con acceso solo para subir contenido al segundo bucket.

### Política de confianza para ambos roles
<a name="webapp-s3-tutorial-trust-policy"></a>

Utilice la siguiente política de confianza para ambas funciones de IAM:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessGrantsTrustPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "access-grants.s3.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:SetSourceIdentity",
                "sts:SetContext"
            ]
        }
    ]
}
```

### Política de IAM para el depósito de descargas
<a name="webapp-s3-tutorial-download-policy"></a>

Crea un rol de IAM con la siguiente política para el acceso de solo lectura a tu depósito de descargas:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ObjectLevelReadPermissions",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:GetObjectAcl",
                "s3:GetObjectVersionAcl",
                "s3:ListMultipartUploadParts",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        }
    ]
}
```

**importante**  
Reemplazar **amzn-s3-demo-bucket1** con el nombre real de tu depósito de descargas.

### Política de IAM para el bucket de carga
<a name="webapp-s3-tutorial-upload-policy"></a>

Crea otro rol de IAM con la siguiente política para el acceso de escritura a tu bucket de subida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ObjectLevelWritePermissions",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:AbortMultipartUpload",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket2/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        }
    ]
}
```

**importante**  
Reemplazar **amzn-s3-demo-bucket2** con el nombre real de tu bucket de subida.

## Paso 3: configurar S3 Access Grants
<a name="webapp-s3-tutorial-access-grants"></a>

1. Abra la consola S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación, elige **Becas de acceso**.

1. Haga clic **Cree una instancia de S3 Access Grants**.

1. Selecciona la opción **Añadir una instancia de IAM Identity Center** e introduzca el ARN de la instancia del centro de identidad.

1. Haga clic **Siguiente**y, a continuación, haga clic **Cancelar** para terminar de crear la instancia de S3 Access Grants sin continuar con pasos adicionales.

Este paso crea la instancia de S3 Access Grants. Ahora registrará ubicaciones y creará concesiones de acceso.

## Paso 4: Registra las ubicaciones de los buckets de S3
<a name="webapp-s3-tutorial-register-locations"></a>

Registre ambos depósitos de S3 como ubicaciones con S3 Access Grants:

1. En la consola de S3 Access Grants, vaya a **Ubicaciones** y haga clic **Registrar ubicación**.

1. Bajo **Alcance de ubicación**, elige el bucket S3 específico para las descargas (amzn-s3-demo-bucket1).

1. Cuando se le pida que elija un rol de IAM, seleccione el rol de IAM de descarga que creó anteriormente.

1. Complete el proceso de registro.

1. Repite el proceso para registrar el bucket de subida (amzn-s3-demo-bucket2) y selecciona el rol de IAM de subida cuando se te pida.

## Paso 5: Crear concesiones de acceso
<a name="webapp-s3-tutorial-create-grants"></a>

Crea dos subvenciones, una para cada ubicación registrada:

1. En la consola de S3 Access Grants, vaya a **Subsidios** y haga clic **Crea una subvención**.

1. En **Ubicación**, haga clic **Navegar por ubicación** y selecciona la ubicación del depósito de descargas (amzn-s3-demo-bucket1).

1. En **Subprefijo** (opcional), introduzca `*` para permitir el acceso a todo el bucket o especificar una ruta como `folder1/folder2/*` para restringir el acceso a un prefijo específico.

   Utilizando `*` establecerá el alcance de la subvención en `s3://bucket-name/*`, lo que permite el acceso a todo el depósito. Para permitir el acceso solo a un prefijo específico, introduce una ruta como `folder1/folder2/*`, lo que establecerá el alcance de la subvención en `s3://bucket-name/folder1/folder2/*`.

1. Bajo **Permisos y acceso**, selecciona **Leer** para el depósito de descargas.

1. En **Tipo de concesionario**, elige **Identidad de directorio de IAM Identity Center**.

1. Para **Tipo de principal de IAM**, seleccione **Usuario** e introduzca el seudónimo de su usuario de IAM Identity Center.

1. Complete el proceso de creación de subvenciones.

1. Repite el proceso para crear una concesión para el bucket de subida (amzn-s3-demo-bucket2), pero selecciona **Read-write** para obtener los permisos.

## Paso 6: Configurar la política CORS para los buckets de S3
<a name="webapp-s3-tutorial-cors"></a>

Configure una política CORS para ambos depósitos de S3 para permitir el acceso a través de su AWS Transfer Family WebApp:

1. Abre la consola S3 y navega hasta tu depósito de descargas (amzn-s3-demo-bucket1).

1. Seleccione la pestaña **Permisos**.

1. Desplázate hacia abajo hasta el **Cross-origin uso compartido de recursos (CORS)** sección y haga clic **Editar**.

1. Agregue la siguiente configuración de CORS, reemplazando {{WebAppEndpoint}} con su actual WebApp URL de punto final:

   Puede encontrar la URL del punto final de su aplicación web en AWS Transfer Family consola en WebApps. Se verá similar a **https://webapp-\*\*\*\*\*\*\*\*\*\*\*.transfer-webapp.us-west-2.on.aws**.

   ```
   [
     {
       "AllowedHeaders": [
         "*"
       ],
       "AllowedMethods": [
         "GET",
         "PUT",
         "POST",
         "DELETE",
         "HEAD"
       ],
       "AllowedOrigins": [
         "https://{{WebAppEndpoint}}"
       ],
       "ExposeHeaders": [
         "last-modified",
         "content-length",
         "etag",
         "x-amz-version-id",
         "content-type",
         "x-amz-request-id",
         "x-amz-id-2",
         "date",
         "x-amz-cf-id",
         "x-amz-storage-class",
         "access-control-expose-headers"
       ],
       "MaxAgeSeconds": 3000
     }
   ]
   ```

1. Haga clic en **Guardar cambios**.

1. Repite el proceso para tu bucket de subida (amzn-s3-demo-bucket2).

## Paso 7: Probar la configuración
<a name="webapp-s3-tutorial-testing"></a>

1. Abre tu AWS Transfer Family URL de la aplicación web. Puede encontrar esta URL en AWS Transfer Family consola en WebApps en el **Punto final de acceso** campo.

1. Inicie sesión con las credenciales de usuario del IAM Identity Center que configuró con las concesiones de acceso.

1. Tras iniciar sesión, deberías ver las dos ubicaciones de S3 en la página de inicio.

1. Navega hasta el depósito de descargas (amzn-s3-demo-bucket1) y comprueba que puedes descargar archivos, pero no subirlos.

1. Navega hasta el bucket de subida (amzn-s3-demo-bucket2) y comprueba que puedes subir archivos.

## Conclusión
<a name="webapp-s3-tutorial-conclusion"></a>

Lo has configurado correctamente AWS Transfer Family WebApp con acceso selectivo al bucket S3 para un solo usuario. Esta configuración permite al usuario descargar contenido de un bucket y subirlo a otro, sin perder la seguridad gracias a las funciones de IAM y a las concesiones de acceso a S3.

Este enfoque se puede extender a varios usuarios mediante la creación de concesiones adicionales en S3 Access Grants para cada usuario, lo que permite un control detallado de los permisos de acceso a los cubos. Para obtener información sobre la configuración básica de la aplicación web, consulte [Tutorial: Configuración de una aplicación web básica de Transfer Family](web-app-tutorial.md).