# Crear un bucket de S3

## Crear un bucket de S3

Muchas veces es necesario hacer un bucket en S3 para no usar bucketeer, sobretodo en productos internos.

Para eso, necesitamos hacer 3 cosas: crear un bucket, crear un usuario para acceder al bucket (y tener las credenciales) y una política de acceso que asocie al usuario con el bucket.

## Crear el bucket

1. [Ir acá](https://s3.console.aws.amazon.com/s3/home?region=us-east-1)
2. Apretar el botón `Create bucket`.
3. Poner el nombre usando la convención `proyecto.platan.us` y `proyecto-staging.platan.us`, por ejemplo `lacatan.platan.us` y `lacatan-staging.platan.us`. Seguiré usando lacatan para el ejemplo.
4. Dejar la región como está. (generalmente es us-east-1)
5. Desmarcar las opciones que dicen "Bloquear todo" (aparecerá un warning, aceptarlo).

   ![](/files/3BZjPwxtrl7GdCJHBARR)
6. Dejar todos los otros campos como están y crear.

Ahora debemos modificar un permiso del bucket. Para eso, seleccionar el bucket recién creado del listado y:

1. Ir a la pestaña de permisos
2. Ir al fondo y buscar la sección `Uso compartido de recursos entre orígenes (CORS)`.
3. Seleccionar el botón editar.
4. Escribir lo siguiente dentro, cambiando en allowed origins, las urls que correspondan:

   ```json
   [
   	{
   		"AllowedHeaders": [
   			"Authorization",
   			"x-amz-date",
   			"x-amz-content-sha256",
   			"content-type"
   		],
   		"AllowedMethods": [
   			"GET",
   			"POST",
   			"PUT"
   		],
   		"AllowedOrigins": [
   			"https://pl-lacatan-staging.herokuapp.com"
   		],
   		"ExposeHeaders": [
   			"ETag"
   		],
   		"MaxAgeSeconds": 3000
   	}
   ]
   ```

   **Nota:** En mute por ejemplo, que hay url para staging, se pueden poner dos orígenes: `pl-mute-meetings-staging.herokuapp.com` y `staging.mute.so`
5. Guardar los cambios

## Crear una política de acceso

La política es lo que permite que el usuario que vamos a crear después pueda meter cosas al bucket (y nadie más que el)

1. Ir a <https://console.aws.amazon.com/iam/home> o a IAM en el menú del sito de AWS
2. En la barra lateral ir a "Políticas"
3. Apretar crear política
4. Seleccionar la pestaña JSON
5. Escribir lo siguiente, reemplazando lacatan por el nombre que corresponda:

   ```json
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Action": "s3:*",
               "Resource": [
                   "arn:aws:s3:::lacatan-staging.platan.us/*",
                   "arn:aws:s3:::lacatan-staging.platan.us"
               ]
           }
       ]
     }
   ```
6. Siguiente y revisar (sin agregar etiquetas)
7. Poner el nombre, no hay convención dura, pero yo les pongo `s3-lacatan` o `s3-lacatan-staging`
8. Guardar (los otros campos dejar como están).

## Crear un usuario para acceder al bucket

Ahora creamos un usuario (y las correspondientes credenciales) para usar la política y tener lo que poner en las vars de heroku

1. Ir [acá](https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/users).
2. Darle a `Create User`
3. En el nombre poner `lacatan` o `lacatan-staging` y le damos a siguiente.
4. Le asignamos una Policy directamente y seleccionamos la que creamos anteriormente y vamos a siguiente.

   ![](/files/cSofmLD16xtjXUnZnSNf)
5. En el siguiente paso le damos a crear
6. Una vez creado, entramos al user recién creado a la sección de `security credentials` y ahí buscamos `Access Keys` y creamos una nueva.

![](/files/q77levBKwniW6pBe4Der)

1. Elegimos la opción de `Application running outside AWS` y vamos al siguiente paso.
2. No le agregamos descripción y creamos la llave de acceso.
3. IMPORTANTE acá ahora aparecerá la Access Key y Secret Access Key. Acá tenemos que guardar esos valores que nos saldrán para luego poder configurarlos en la aplicación. Abajo sale un botón de `Download CSV File`. Descarga y guarda el archivo.
4. \*\*Bonus: \*\*ir a heroku a las vars de entorno y poner las credenciales correspondientes, junto al nombre del bucket. La región en general siempre es us-east-1.4


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://la-guia.platan.us/setup/configuracion_de_proyectos/crear_un_bucket_de_s3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
