# AWS

Jeff Bezos peut te fournir à souhait (tant que ton porte-monnaie est suit).

# [AWS] S3

## Introduction

Le service **S3** pour *Simple Service Storage*, initialement proposé par Amazon, est un service de stockage en objets.

Les fichiers sont répartis dans des compartiments sous forme d'objets.

Le stockage est donc généralement à bas coût et le tarif est calculé au Go ainsi qu'à la bande passante utilisée.


[![Untitled-5-1_1309563853a.webp](https://wiki.neopipe.fr/uploads/images/gallery/2023-07/scaled-1680-/untitled-5-1-1309563853a.webp)](https://wiki.neopipe.fr/uploads/images/gallery/2023-07/untitled-5-1-1309563853a.webp)

## Console s3

- [https://s3.console.aws.amazon.com/](https://s3.console.aws.amazon.com/)

## Monter un compartiment s3 sur Linux

- Installez le paquet **s3fs** :

```bash
sudo apt install -y s3fs
```

- Générez les clés d'accès depuis la console :

[https://console.aws.amazon.com/iam/home?#/security\_credentials](https://console.aws.amazon.com/iam/home#/security_credentials)

- Ensuite, téléchargez et récupérez le fichier **.csv** contenant vos identifiants. Puis lancez la commande suivante :

```bash
echo <ACCESS_KEY>:<SECRET_ACCESS_KEY> > <KEYS_FILE>
```

- Ajustez les droits sur le fichier clé :

```bash
chmod 600 <KEYS_FILE>
```

- Créez le dossier du point de montage du compartiment s3 :

```bash
mkdir <MOUNT_POINT>
```

- Montez le compartiment s3 :

```bash
s3fs <BUCKET_NAME> <MOUNT_POINT> -o passwd_file=<KEYS_FILE>
```

- Ajoutez la ligne suivante au fichier **/etc/fstab** pour monter le compartiment au démarrage (*facultatif*) :

```
s3fs <BUCKET_NAME> <MOUNT_POINT> -o passwd_file=<KEYS_FILE>
```

# [AWS] EC2

## Introduction

**EC2** pour *Elastic Compute Cloud* est un service web d'Amazon permettant de déployer des instances dîtes <span style="text-decoration: underline;">as a service</span>.

## [![ec2-1.webp](https://wiki.neopipe.fr/uploads/images/gallery/2023-08/scaled-1680-/ec2-1.webp)](https://wiki.neopipe.fr/uploads/images/gallery/2023-08/ec2-1.webp)

## Installation des prérequis

Deux paquets sont nécessaire à la manipulation des instances et des fichiers JSON pour AWS : **aws-cli** et **jq**.

Ils sont tous deux à installer selon votre OS.

## Types d'instances

La liste complète des types d'instances est disponible ici : [https://aws.amazon.com/fr/ec2/instance-types/](https://aws.amazon.com/fr/ec2/instance-types/)

## Liste AMI

Pour explorer la liste des AMI : [https://us-east-1.console.aws.amazon.com/ec2/home?region=us-east-1#LaunchInstances:](https://us-east-1.console.aws.amazon.com/ec2/home?region=us-east-1#LaunchInstances:)

<table border="1" id="bkmrk-images-id-ami-amazon" style="border-collapse: collapse; width: 100%; height: 148.984px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">**Images**</td><td class="align-center" style="height: 29.7969px;">**ID**</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">AMI Amazon Linux 2023</td><td class="align-center" style="height: 29.7969px;">ami-0f34c5ae932e6f0e4</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">Ubuntu 22.04</td><td class="align-center" style="height: 29.7969px;">ami-053b0d53c279acc90</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">Debian 11</td><td class="align-center" style="height: 29.7969px;">ami-01e5ff16fd6e8c542</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">RHEL 9</td><td class="align-center" style="height: 29.7969px;">ami-02978b79564e08f2f</td></tr></tbody></table>

## Déploiement en CLI

#### Création d'une clé d'accès SSH

```bash
aws ec2 create-key-pair --key-name <ACCESS_KEY_LABEL> --query 'KeyMaterial' --output text > <KEY.pem>
```

#### Configuration des accès IAM

Depuis la console IAM, créer un utilisateur CLI ayant les droits puis récupérer l'**ACCESS KEY ID** ainsi que l'**ACCESS SECRET KEY** (affichable uniquement à la création) :

- [https://docs.aws.amazon.com/powershell/latest/userguide/pstools-appendix-sign-up.html](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-appendix-sign-up.html)

Puis, configurer les paramètres d'AWS grâce aux commandes suivantes :

```bash
aws configure set aws_access_key_id <ACCESS_KEY_ID>
```

```bash
aws configure set aws_secret_access_key <ACCESS_SECRET_KEY>
```

La liste des régions est consultable à cette adresse :

- [https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)

<span style="text-decoration: underline;">Ex :</span> **us-east-1**

```bash
aws configure set default.region <REGION>
```

```bash
aws configure set output json
```

#### Déploiement de l'instance

```bash
aws ec2 run-instances --image-id <AMI_ID> --instance-type <INSTANCE_TYPE> --security-group-ids <SG_ID> --key-name <ACCESS_KEY_LABEL> > <OUTPUT>.json
```

- **&lt;AMI\_ID&gt;** : Image à utiliser (Amazon Linux, Ubuntu, Debian, Windows Server).
- **&lt;INSTANCE\_TYPE&gt;** : Configuration de l'instance (ex : t2.micro).
- **&lt;ACCESS\_KEY\_LABEL&gt;** : Label de la clé d'accès SSH créé précédemment.
- **&lt;SG\_ID&gt;** : ID du [groupe de sécurité](https://us-east-1.console.aws.amazon.com/ec2/home?region=us-east-1#SecurityGroups:) configurable depuis la console EC2.
- **&lt;OUTPUT&gt;** : Nom du fichier de sortie (important pour récupérer les informations de l'instance).

## Informations sur l'instance

Avec l'ID de l'instance stockée dans le fichier json, il est possible d'obtenir l'adresse IP public de l'instance grâce à la commande suivante :

```bash
aws ec2 describe-instances --instance-ids $( jq -r '.Instances[0].InstanceId' <OUTPUT>.json ) | jq -r '.Reservations[0].Instances[0].PublicIpAddress'
```