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.
-
Apretar el botón
Create bucket
. -
Poner el nombre usando la convención
proyecto.platan.us
yproyecto-staging.platan.us
, por ejemplolacatan.platan.us
ylacatan-staging.platan.us
. Seguiré usando lacatan para el ejemplo. -
Dejar la región como está. (generalmente es us-east-1)
-
Desmarcar las opciones que dicen "Bloquear todo" (aparecerá un warning, aceptarlo).
-
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:
-
Ir a la pestaña de permisos
-
Ir al fondo y buscar la sección
Uso compartido de recursos entre orígenes (CORS)
. -
Seleccionar el botón editar.
-
Escribir lo siguiente dentro, cambiando en allowed origins, las urls que correspondan:
[ { "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
ystaging.mute.so
-
Guardar los cambios
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)
-
Ir a https://console.aws.amazon.com/iam/home o a IAM en el menú del sito de AWS
-
En la barra lateral ir a "Políticas"
-
Apretar crear política
-
Seleccionar la pestaña JSON
-
Escribir lo siguiente, reemplazando lacatan por el nombre que corresponda:
{ "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" ] } ] }
-
Siguiente y revisar (sin agregar etiquetas)
-
Poner el nombre, no hay convención dura, pero yo les pongo
s3-lacatan
os3-lacatan-staging
-
Guardar (los otros campos dejar como están).
Ahora creamos un usuario (y las correspondientes credenciales) para usar la política y tener lo que poner en las vars de heroku
-
Ir acá.
-
Darle a
Create User
-
En el nombre poner
lacatan
olacatan-staging
y le damos a siguiente. -
Le asignamos una Policy directamente y seleccionamos la que creamos anteriormente y vamos a siguiente.
-
En el siguiente paso le damos a crear
-
Una vez creado, entramos al user recién creado a la sección de
security credentials
y ahí buscamosAccess Keys
y creamos una nueva.
-
Elegimos la opción de
Application running outside AWS
y vamos al siguiente paso. -
No le agregamos descripción y creamos la llave de acceso.
-
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. -
**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