# s3nd avec AWS S3

> Déplacer des fichiers et des données d’app local-first via un bucket AWS S3 avec s3nd : la configuration createBucket(), le point de départ de la CLI, et ce qu’il faut savoir sur ce fournisseur.

Canonical: https://s3nd.sh/fr/providers/aws-s3 · Markdown: https://s3nd.sh/fr/providers/aws-s3.md · English: https://s3nd.sh/providers/aws-s3

L’original. Les identifiants viennent de la chaîne de fournisseurs, donc une Lambda ou une tâche ECS n’a besoin d’aucune clé.

**createBucket()**
```ts
import { createBucket } from 's3nd'

// Credentials from the AWS provider chain: env, shared config, or the role.
const store = createBucket({
  bucket: process.env.S3_BUCKET,
  region: 'eu-west-3',
  prefix: 'transfers',
  maxSize: 4 * 1024 * 1024,
})
```

## Pourquoi celui-ci
Sur AWS, s3nd est le SDK AWS v3 avec la sémantique de transfert par-dessus. Omettez les identifiants et la chaîne de fournisseurs par défaut s’applique : variables d’environnement, fichier de configuration partagé, ou rôle attaché à l’instance, à la tâche ou à la fonction. Rien à stocker, rien à faire tourner.

## Une configuration de départ, et ce qu’il reste à faire.
init écrit le fichier avec des références ${VAR} plutôt que des secrets, donc il est fait pour être versionné ; le fichier d’environnement qu’il désigne, non.

```sh
s3nd init --provider aws --bucket transfers
```
**s3nd.config.json**
```json
{
  "bucket": "transfers",
  "region": "eu-west-3",
  "prefix": "transfers",
  "expiresIn": "24h"
}
```

### Ensuite
1. Donnez des identifiants à la machine de la façon habituelle : AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY, un profil, ou un rôle.
2. Ajoutez une règle de cycle de vie sur le préfixe transfers/ qui expire les objets après un jour ou deux.
3. Lancez `s3nd doctor`. Il effectue les opérations dont s3nd a besoin et rapporte ce qui s’est passé.

## Notes sur S3.
- **Adressage virtual-hosted** — Sans endpoint, s3nd laisse l’adressage path-style désactivé, ce qu’attend S3 lui-même. Ne définissez forcePathStyle vous-même que si une passerelle devant l’exige.
- **Les ACL sont désactivées par défaut** — Les buckets créés après 2023 ont « bucket owner enforced » activé. Rendez les objets publics avec une bucket policy ou un CDN, et laissez l’option acl tranquille.
- **Nettoyage des expirés** — expiresIn empêche un transfert d’être remis ; seule une règle de cycle de vie supprime l’objet. Donnez au préfixe une règle qui expire les objets après un jour ou deux, et s3nd doctor passe au vert.

[Le guide complet](https://doc.s3nd.sh/docs/providers)
