# Conectar Shade con AWS S3

**Crear el bucket**

1. Crea un bucket. Toma nota de la región y del nombre del bucket que crees
   1. Solo cambia el valor de entrada del nombre del bucket. Todos los demás valores predeterminados pueden dejarse igual (uso general, sin ACL, bloquear todo acceso público, sin versionado del bucket, cifrado del lado del servidor, sin configuraciones avanzadas)

**Configuración de CORS**

1. Haz clic en el bucket y luego en la pestaña de permisos. Desplázate hasta la `Compartición de recursos entre orígenes (CORS)` sección.

<figure><img src="https://440362858-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUNq6h2Bfw7aAK0J2ffnZ%2Fuploads%2FkGVNB69nqWLvUWJIWdNT%2Fimage.png?alt=media&#x26;token=857eb17c-3f40-45eb-a29f-f6dac0bcf606" alt=""><figcaption></figcaption></figure>

2\. Haz clic en editar y luego pega este JSON.

{% code fullWidth="false" %}

```
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE",
            "HEAD"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "ETag",
            "Content-Length",
            "Content-Disposition",
            "Content-Encoding",
            "x-amz-request-id",
            "x-amz-id-2",
            "x-amz-version-id",
            "x-amz-server-side-encryption"
        ],
        "MaxAgeSeconds": 3000
    }
]
```

{% endcode %}

Este JSON se utiliza para permitir que los navegadores web accedan a este bucket. Esto es seguro porque proporcionamos redirecciones desde nuestro servidor; mantenemos el alcance específico de los permisos de CORS, por lo que esta configuración puede dejarse genérica.

**Crear la política con alcance**

1. En `IAM` haz clic en `Policies` luego haz clic en `Create policy`

   1. La mayoría de los errores que vemos ocurren justo aquí, donde las políticas no se personalizan correctamente

   <figure><img src="https://440362858-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUNq6h2Bfw7aAK0J2ffnZ%2Fuploads%2FnZIqNYO9wGBNJ2vby63E%2Fimage.png?alt=media&#x26;token=406f35f0-121f-4ce0-a612-7ae0962a6973" alt=""><figcaption></figcaption></figure>
2. Asegúrate de personalizar este archivo JSON a continuación para cambiar la `Resource` entrada de `the-bucket-name-you-provisioned-earlier` por el nombre del bucket que creaste primero. **Esto está en dos lugares, uno bajo el `bucketname` resource y otro bajo el `bucketname/*` resource**

```
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"s3:ListBucket",
				"s3:GetBucketLocation"
			],
			"Resource": "arn:aws:s3:::the-bucket-name-you-provisioned-earlier"
		},
		{
			"Effect": "Allow",
			"Action": [
				"s3:GetObject",
				"s3:PutObject",
				"s3:DeleteObject"
			],
			"Resource": "arn:aws:s3:::the-bucket-name-you-provisioned-earlier/*"
		}
	]
}
```

3. Usa el editor JSON y pega esto en el editor de políticas
4. Ponle a tu política un nombre relevante para el acceso al bucket de Shade que creamos antes y añade una descripción. Crea la política

**Crear el usuario**

1. Ahora en `Users` en la barra lateral izquierda de IAM haz clic en `Create user`
2. Dale al usuario un nombre que sea relevante para Shade. Este será el usuario a través del cual los servidores de Shade accederán a tu bucket y firmarán las URLs.
3. Elige `Attach policies directly` y busca la política que creaste. Marca la casilla para adjuntarla y pulsa siguiente

<figure><img src="https://440362858-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUNq6h2Bfw7aAK0J2ffnZ%2Fuploads%2FULd6TtN6MbYT0Or1yLBb%2Fimage.png?alt=media&#x26;token=29be1bd4-5e0d-459d-8447-ce8319980d1c" alt=""><figcaption></figcaption></figure>

4. Crear el usuario
5. &#x20;Ahora haz clic en el usuario y pulsa `Create access key`

<figure><img src="https://440362858-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUNq6h2Bfw7aAK0J2ffnZ%2Fuploads%2FhcWU9ZUSgzxCd7BbAmKJ%2Fimage.png?alt=media&#x26;token=b1f860f0-ec54-4de2-b5ec-a695996ad47a" alt=""><figcaption></figcaption></figure>

6. Selecciona `Application running outside AWS`

<figure><img src="https://440362858-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUNq6h2Bfw7aAK0J2ffnZ%2Fuploads%2FkuUWTk7seBrTDBVIcB6s%2Fimage.png?alt=media&#x26;token=5675b7ae-ed8a-4435-bf89-37461a9bc3df" alt=""><figcaption></figcaption></figure>

7. Guarda en tu ordenador la Access key y la Secret key creadas

**Crear drives en Shade**

1. En la aplicación de Shade crea un drive BYOS

<figure><img src="https://440362858-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUNq6h2Bfw7aAK0J2ffnZ%2Fuploads%2FV0QizFJMF15OW53AI0bP%2Fimage.png?alt=media&#x26;token=33a55b13-064d-4e53-be9f-f8959a8a844d" alt=""><figcaption></figcaption></figure>

2. Usa la `Custom` configuración para crear tu bucket
3. Completa la configuración con los valores correctos. Presta atención al endpoint. Usa el `s3.<region>.amazonaws.com` formato precedido por `https://`. Encuentra estos endpoints según la región en la que creaste tu bucket en `Amazon S3 endpoints` en esta página: <https://docs.aws.amazon.com/general/latest/gr/s3.html>

<figure><img src="https://440362858-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUNq6h2Bfw7aAK0J2ffnZ%2Fuploads%2FAhQJ4Q5zd8dkAY6KFUCy%2Fimage.png?alt=media&#x26;token=21846f1c-1011-4eab-8fd7-5526cb58cb35" alt=""><figcaption></figcaption></figure>

4. Sube un archivo para probar. Deberías ver objetos aparecer en tu bucket de S3; el archivo debería cargarse y generar vistas previas/proxies normalmente.
