# AWS S3

{% hint style="warning" %}
Una vez ingresadas las credenciales no podrán ser vistas nuevamente, por lo que solo podrás sobrescribir.
{% endhint %}

Puedes utilizar dos tipos de conexiones dependiendo de tus requisitos de seguridad, mediante:

* Credenciales estáticas
* OIDC

{% hint style="info" %}
Una conexión utilizando OIDC es un mecanísmo más seguro que credenciales estáticas, lo cuál dependerá de tus necesidades.
{% endhint %}

## Información requerida

<table><thead><tr><th>Campo</th><th>Descripción</th><th>Tipo coneión<select multiple><option value="FgK4X2EkyZur" label="Credenciales estáticas" color="blue"></option><option value="HK0Y9q16mKsM" label="OIDC" color="blue"></option></select></th></tr></thead><tbody><tr><td>Bucket name</td><td>Corresponde al nombre del bucket creado. Ejemplo: <code>videsk-storage-s3</code></td><td><span data-option="FgK4X2EkyZur">Credenciales estáticas, </span><span data-option="HK0Y9q16mKsM">OIDC</span></td></tr><tr><td>Region</td><td>Este es el nombre de la región que proporciona AWS S3 al momento de conectarse. Ejemplo: <code>us-west-1</code></td><td><span data-option="FgK4X2EkyZur">Credenciales estáticas, </span><span data-option="HK0Y9q16mKsM">OIDC</span></td></tr><tr><td>Access Key ID</td><td>Corresponde a la clave de acceso (<code>accessKeyId</code> ) que provee AWS para un usuario.</td><td><span data-option="FgK4X2EkyZur">Credenciales estáticas</span></td></tr><tr><td>Secret Access Key</td><td>Corresponde a la clave de acceso secreta (<code>secretAccessKey</code>) que provee AWS para un usuario.</td><td><span data-option="FgK4X2EkyZur">Credenciales estáticas</span></td></tr><tr><td>ARN del rol</td><td>Corresponde al identificador AWS del rol como recurso.</td><td><span data-option="HK0Y9q16mKsM">OIDC</span></td></tr></tbody></table>

## Credenciales estáticas (<5 min)

{% hint style="info" %}
Para integrar Amazon S3 deberás crear un punto de acceso desde la configuración de tu bucket en el menú de **Puntos de acceso**.
{% endhint %}

### 1. Crear usuario IAM

1. Deberás ir a IAM > Personas.
2. Luego, crea un nuevo usuario, configurando la política para acceso S3 con **PutObject**.
3. Añade el ARN y nombre del bucket.
4. Activa la casilla cualquiera para el nombre del objeto.

{% code title="CloudShell version" %}

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::<REPLACE_BUCKET_NAME>/*"
    }
  ]
}
```

{% endcode %}

### 2. Obtener credenciales bucket

1. Deberás ir a la sección de **Claves de acceso**, donde podrás crear una nueva clave.

{% hint style="info" %}
Si solicita el caso de uso selecciona "Servicios de terceros".
{% endhint %}

2. Finalmente, obtendrás la clave de acceso y secreto, los cuales deberás copiar y pegar en Videsk.

{% hint style="warning" %}
Considera inmediatamente copiar y pegar estas credenciales, ya que son visibles 1 vez.
{% endhint %}

***

## OIDC (>10 min)

Si tu negocio requiere una seguridad nivel enterprise para cumplimiento normativo, puedes seguir estos pasos de configuración.

| Campo             | Valor                                                          |
| ----------------- | -------------------------------------------------------------- |
| Audience          | `cloud-connector@bridge-fed-connector.iam.gserviceaccount.com` |
| URL del proveedor | `https://accounts.google.com/`                                 |

### 1. Agregar proveedor de identidad

Nuestra infraestructura actualmente está alojada en Google Cloud Platform, por lo que para enviar las grabaciones a tu infraestructura AWS es requerido los siguientes datos:

{% hint style="warning" %}
Debido a una limitación de la interfaz de AWS es necesario agregar el proveedor de identidad mediante CloudShell.
{% endhint %}

{% code fullWidth="false" %}

```bash
aws iam create-open-id-connect-provider \
    --url https://accounts.google.com \
    --client-id-list cloud-connector@bridge-fed-connector.iam.gserviceaccount.com \
    --thumbprint-list 1c58a3a8518e8759bf075b76b750d4f2df264fcd
```

{% endcode %}

### 2. Crear rol IAM con Trust Policy

{% @arcade/embed url="<https://app.arcade.software/share/40hWhSAOez8XW08ZB53R>" flowId="40hWhSAOez8XW08ZB53R" %}

Al crear la política te recomendamos utilizar la siguiente política la cual puedes copiar y pegar, reemplazando el nombre de tu bucket:

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::<REPLACE_BUCKET_NAME>/*"
    }
  ]
}
```

### 3. Configurar ajuste de grabación

{% @arcade/embed url="<https://app.arcade.software/share/IFcKWdQze46WNkRhqchj>" flowId="IFcKWdQze46WNkRhqchj" %}

***

## Sugerencias de seguridad

Si estás utilizando un bucket multipropósito te sugerimos añadir políticas de control de acceso a tus bucket para evitar accesos no deseados a otros ficheros.

En el siguiente ejemplo usamos un perfil IAM `videsk-connector` para definir reglas de escritura en la carpeta (prefijos) [`uploads/`](#user-content-fn-1)[^1] , siendo `ACCOUNT-ID-WITHOUT-HYPHENS` tu ID de cuenta.

{% hint style="info" %}
Recuerda reemplazar los valores de ejemplo con tus ajustes.
{% endhint %}

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowPrefixedWrites",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<ACCOUNT-ID-WITHOUT-HYPHENS>:user/videsk-connector"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::<YOUR-BUCKET-NAME>/uploads/*"
        },
        {
            "Sid": "DenyNonPrefixedWrites",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::<ACCOUNT-ID-WITHOUT-HYPHENS>:user/videsk-connector"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::<YOUR-BUCKET-NAME>/*",
            "Condition": {
                "StringNotLikeIfExists": {
                    "s3:prefix": [
                        "uploads/*"
                    ]
                }
            }
        }
    ]
}

```

Referencia: [S3 ARN Format](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html).

[^1]: Esto es el prefijo del archivo


---

# 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://docs.videsk.io/es-developers/grabaciones/cloud/aws-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.
