> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metronome.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Postgres AWS

## Prérequis

* Si votre base de données Postgres est protégée par des groupes de sécurité ou d'autres paramètres de pare-feu, vous devrez disposer de l'adresse IP statique du service de synchronisation des données pour effectuer l'étape 1.

## Étape 1 : autoriser l'accès

Autorisez l'accès en écriture à une partie de votre base de données RDS ou Aurora PostgreSQL.

### Configurer le groupe de sécurité

1. Dans votre liste **Amazon RDS** > **Databases**, cliquez sur l'instance PostgreSQL vers laquelle vous souhaitez envoyer les données.
2. Sur la page de la base de données, dans l'onglet **Connectivity & security**, notez l'**Endpoint** et le numéro de **Port**.

![](https://storage.googleapis.com/prequel_docs/images/postgres-endpoint.png "endpoint + port.png")

3. Dans la section **Security**, assurez-vous que le paramètre **Publicly accessible** est défini sur **Yes** afin que la destination soit accessible depuis l'extérieur de votre VPC. Notez que l'accès reste limité aux IP autorisées à ce stade.

![](https://storage.googleapis.com/prequel_docs/images/postgres-publicly-accessible.png "publicly accessible.png")

4. Cliquez sur l'un des groupes de sécurité du VPC (généralement `default`). Remarque : les groupes VPC sont permissifs (vs. restrictifs) et pour les instances avec plusieurs groupes de sécurité VPC, un seul doit être configuré avec la nouvelle règle entrante.

![](https://storage.googleapis.com/prequel_docs/images/postgres-vpc-security-groups.png "vsg.png")

5. Dans la section **Security Groups**, sélectionnez l'onglet **Inbound rules**.
6. Cliquez sur **Edit inbound rules** puis cliquez sur **Add rule**.
7. Modifiez la règle nouvellement créée en lui attribuant le type **Custom TCP**, la **Port range** notée à la première étape (généralement `5432`) et une valeur **Source** `Custom` qui inclut toutes les IP du service. Remarque : vous devrez ajouter `/32` à la fin de chaque IP (notation CIDR).
8. Cliquez sur **Save rules**.

![](https://storage.googleapis.com/prequel_docs/images/postgres-add-rule.png "add rule.png")

### Configurer les ACL réseau (listes de contrôle d'accès)

Pour les instances de base de données dans un VPC

1. Dans votre tableau de bord RDS, sélectionnez l'instance PostgreSQL.
2. Cliquez sur le lien vers le VPC de l'instance.
3. Cliquez sur le **VPC ID**.

![](https://storage.googleapis.com/prequel_docs/images/postgres-vpc-id.png "vpc id.png")

4. Dans la section **Details**, cliquez sur le lien sous **Main network ACL**.

![](https://storage.googleapis.com/prequel_docs/images/postgres-main-network-acl-id.png "network acl id.png")

5. Cliquez sur l'ID de la liste de contrôle d'accès réseau.

![](https://storage.googleapis.com/prequel_docs/images/postgres-network-acl-id.png "network acl id.png")

#### Modifier les règles entrantes

6. Cliquez sur l'onglet **Inbound rules**, et vérifiez s'il existe une règle existante avec une Source de `0.0.0.0/0` définie sur `Allow`. (Il s'agit d'une règle par défaut créée par AWS. Si cette règle existe déjà, passez à **Modifier les règles sortantes**.)

![](https://storage.googleapis.com/prequel_docs/images/postgres-inbound-rules.png "inbound rules.png")

7. Créez la règle entrante (si elle n'existe pas). Cliquez sur **Edit inbound rules** et soit **Add new rule** soit modifiez une règle existante pour autoriser l'accès au **numéro de port** de votre instance de base de données (généralement `5432`) depuis l'IP statique de Prequel. Cliquez sur **Save changes**.

#### Modifier les règles sortantes

8. Dans le menu ACL, sélectionnez l'onglet **Outbound rules**, et vérifiez s'il existe une règle existante avec une Destination de `0.0.0.0/0` définie sur `Allow`. (Il s'agit d'une règle par défaut créée par AWS. Si cette règle existe déjà, passez à l'étape suivante.)

![](https://storage.googleapis.com/prequel_docs/images/postgres-outbound-rules.png "outbound rules.png")

9. Créez la règle sortante (si elle n'existe pas). Cliquez sur **Edit outbound rules** et modifiez les règles pour autoriser le trafic sortant vers les ports 1024-65535 pour la **Destination** `0.0.0.0/0`.

## Étape 2 : créer un utilisateur en écriture

Créez un utilisateur de base de données qui se chargera de l'écriture des données source.

1. Ouvrez une connexion à votre base de données Amazon RDS PostgreSQL.
2. Créez un utilisateur pour le transfert de données en exécutant la commande SQL suivante.

```sql theme={null}
CREATE USER <username> PASSWORD '<some-password>';
```

3. Accordez à l'utilisateur les privilèges `create` et `temporary` sur la base de données. `create` permet au service de créer de nouveaux schémas et `temporary` lui permet de créer des tables temporaires.

```sql theme={null}
GRANT CREATE, TEMPORARY ON DATABASE <database> TO <username>;
```

> 🚧 Si le `schema` existe déjà :
>
> Par défaut, le service crée un nouveau schéma à partir de la configuration de la destination (à l'étape suivante). Si vous préférez créer le schéma vous-même avant de connecter la destination, vous devez vous assurer que l'utilisateur en écriture dispose des autorisations adéquates sur le schéma, en utilisant `GRANT ALL ON schema <schema> TO <username>;`

## Étape 3 : ajouter votre destination

Partagez de manière sécurisée votre **nom d'hôte**, le **nom de la base de données**, le **port**, le **nom du schéma** choisi, le **nom d'utilisateur** et le **mot de passe** avec nous pour finaliser la connexion.
