[LINUX] Tout le monde peut probablement créer un serveur de plateforme, un environnement RDS (maître / esclave) dans un environnement multi-AZ sur l'écran de la console AWS

Je vais vous présenter en détail comment créer une configuration générale de VPC, de serveur d'étape, de RDS à partir de l'écran de la console sur AWS, comme indiqué dans l'image ci-dessous.

03_eroge_release_db_rds

Puisqu'il est destiné à un usage personnel, le serveur de la plateforme n'est pas rendu redondant. Généralement, avec cette configuration, cela coûte environ 6000 yens par mois.

En outre, vous pouvez être curieux de connaître le nom que vous utilisez, mais il serait utile que vous puissiez le transmettre. Cette configuration sera créée dans votre propre DB Migration System with Rails and AWS La grande image réelle est ci-dessous

00_eroge_release_db

Matériel pédagogique très utile

Pour la création de l'environnement AWS, j'ai vraiment fait référence à «Apprendre des bases d'AWS aux applications en 2 semaines tout en bougeant les mains» d'Udemy. Je ne peux pas le prendre maintenant, j'ai donc publié le billet de blog de l'auteur [Conférence pour prendre en charge 0 → 1 de l'apprentissage AWS "Apprendre des bases d'AWS aux applications en 2 semaines en passant la main" sur Udemy --log4ketancho](https :: Veuillez vérifier //www.ketancho.net/entry/2018/09/03/074115)

Construction de l'environnement VPC

Créer un environnement VPC Nous allons créer un sous-réseau public et un sous-réseau privé dans chaque zone de disponibilité de ap-nord-est-1a et ap-nord-est-1c.

Dessin d'achèvement

La configuration finale sera la suivante

00_eroge_release_vpc

Créer un VPC

Utilisez l'assistant VPC pour créer «VPC», «sous-réseau public» et «passerelle Internet»

Ouvrir l'assistant VPC

Cliquez sur "Lancer l'assistant VPC" sur l'écran "Tableau de bord VPC"

01_create_vpc_dashboard

Étape 1: sélectionnez les paramètres du VPC

02_create_vpc_wizard_step1

Cliquez sur "Sélectionner"

Étape 2: VPC avec 1 sous-réseau public

Entrez le nom du VPC, le CIDR IPv4 du sous-réseau public, la zone de disponibilité, le nom du sous-réseau et cliquez sur Créer un VPC.

** Entrez 10.0.11.0 / 24 pour le CIDR IPv4 du sous-réseau public ** ** Entrez ʻap-north-1a pour ʻAvailability Zone ** ** Entrez n'importe quel nom pour VPC name et subnet name **

03_create_vpc_wizard_step2

VPC créé avec succès

Cliquez sur «OK»

04_create_vpc_wizard_ok

Vérifier si le VPC a été créé

Assurez-vous que le VPC est créé

05_create_vpc_created_vpc

Vérifiez si un sous-réseau public a été créé

Assurez-vous que le sous-réseau public est créé

06_create_vpc_created_public_subnet

Assurez-vous que IGW (Internet Gateway) est défini dans la table de routage

07_create_vpc_created_public_subnet_route

Vérifiez si IGW (Internet Gateway) a été créé

Assurez-vous que l'IGW (Internet Gateway) est créé

08_create_vpc_created_internet_gateway

Après avoir créé le VPC

Avec ce qui précède, l'état suivant a été créé

09_cretae_vpc_and_public_subnet

Créer un sous-réseau public

Puisque le sous-réseau public a été créé dans la zone de disponibilité ʻap-nord-est-1a, nous allons également créer un sous-réseau public dans ʻap-nord-est-1c.

Ouvrez l'écran de création de sous-réseau

Cliquez sur «Créer une sous-section» sur l'écran «Sous-zone»

10_create_public_subnet_open

Créer un sous-réseau

Entrez le «nom tag», «VPC», «zone de disponibilité», «bloc CIDR IPv4» et cliquez sur «Créer»

** Sélectionnez le VPC créé pour VPC ** ** Entrez ʻap-nord-est-1c pour ʻAvailability Zone ** ** ʻEnter 10.0.12.0 / 24 pour le bloc CIDR IPv4` **

11_create_public_subnet_screen

Cliquez sur «Fermer»

12_create_public_subent_created_close

Ouvrez l'écran d'édition de l'association de table de routage

Sélectionnez le sous-réseau ʻap-north-1cnouvellement créé Puisque ʻIGW (passerelle Internet)n'est pas défini dans la table de routage, ce sous-réseau ne peut pas sortir vers Internet pour le moment, il s'agit donc d'un sous-réseau privé.

Définissez ʻIGW (Internet Gateway) dans la table de routage Cliquez sur ʻEdit Route Table Association

13_create_public_subent_created

Écran d'édition pour l'association de table de routage

14_create_public_subent_edit_route_table

Passer à la table de routage créée précédemment

15_create_public_subent_select_route_table_id

Vous pouvez voir que ʻIGW (Internet Gateway) `a été ajouté Si vous êtes satisfait, cliquez sur "Enregistrer"

16_create_public_subnet_editding_route_table

Cliquez sur «Fermer»

17_create_public_subent_route_table_close

Vérifiez si IGW (Internet Gateway) est ajouté

Assurez-vous que ʻIGW (Internet Gateway) ʻest ajouté à la table de routage

18_create_public_subent_edited_route_table

Après avoir créé le sous-réseau public

Avec ce qui précède, il a été créé jusqu'à l'état suivant

19_create_public_subnet

Créer un sous-réseau privé

Nous allons créer un sous-réseau privé ainsi qu'un sous-réseau public

Créé dans ap-northest-1a

ʻAp-Northwest-1a` créera un sous-réseau

Ouvrez l'écran de création de sous-réseau

Cliquez sur "Créer une sous-section"

20_create_private_subent_open_1a

Création de sous-section

Entrez le «nom tag», «VPC», «zone de disponibilité», «bloc CIDR IPv4» et cliquez sur «Créer»

** Sélectionnez le VPC créé pour VPC ** ** Entrez ʻap-north-1a pour ʻAvailability Zone ** ** ʻEnter 10.0.21.0 / 24 pour le bloc IPv4 CIDR` **

21_create_private_subent_editing_1a

Cliquez sur «Fermer»

22_create_private_subent_created_close_1a

Créé dans ap-east-1c

ʻAp-Nord-Est-1c` créera un sous-réseau

Ouvrez l'écran de création de sous-réseau

Un sous-réseau a été créé à ʻap-north-1a`

ʻAp-Northwest-1c` sera également créé comme sous-réseau Cliquez sur "Créer une sous-section"

23_create_private_subent_created_1a

Création de sous-section

Entrez le «nom tag», «VPC», «zone de disponibilité», «bloc CIDR IPv4» et cliquez sur «Créer»

** Sélectionnez le VPC créé pour VPC ** ** Entrez ʻap-nord-est-1c pour ʻAvailability Zone ** ** ʻEnter 10.0.22.0 / 24 pour le bloc IPv4 CIDR` **

24_create_private_subent_editing_1c

Cliquez sur «Fermer»

25_create_private_subent_created_close_1c

Confirmez qu'il a été créé

26_create_private_subent_created_1c

Créez une table de routage pour votre sous-réseau privé

Je vais créer un sous-réseau privé

Nommez la table de routage pour le sous-réseau public

Donnez-lui un nom descriptif avant de créer un sous-réseau privé

27_create_private_route_table_public_route_table_name

Ouvrez l'écran de création de la table de routage

Cliquez sur Créer une table de routage

28_create_private_route_table_open_create_route_table

Créer une table de routage

Entrez le nom tag, VPC et cliquez sur Créer

** Sélectionnez le VPC créé pour VPC **

29_create_private_route_table_create_route_table_editing

Cliquez sur «Fermer»

30_create_private_route_table_created_close

Confirmez qu'il a été créé

31_create_private_route_table_created

Associez la table de routage au sous-réseau créé dans ap-Northwest-1a

Je vais lier la table de routage créée pour le privé au sous-réseau

Ouvrez l'écran d'édition de l'association de table de routage

Cliquez sur ʻEdit Route Table Association`

32_create_private_route_table_open_edit_route_table_1a

Modification des associations de table de routage

Sélectionnez la table de routage que vous venez de créer et cliquez sur «Enregistrer»

33_create_private_route_table_edit_route_table_editing_1a

Cliquez sur «Fermer»

34_create_private_route_table_edit_route_table_close_1a

Associez la table de routage au sous-réseau créé dans ap-Northwest-1c

Je vais lier la table de routage créée pour le privé au sous-réseau

Ouvrez l'écran d'édition de l'association de table de routage

Cliquez sur ʻEdit Route Table Association`

35_create_private_route_table_open_edit_route_table_1c

Modification des associations de table de routage

Sélectionnez la table de routage que vous venez de créer et cliquez sur «Enregistrer»

36_create_private_route_table_edit_route_table_editing_1c

Cliquez sur «Fermer»

37_create_private_route_table_edit_route_table_close_1c

Vérifiez s'il est lié à la table de routage privée

Vous pouvez voir que le sous-réseau est lié à la table de routage

38_create_private_route_table_editing

** Ceci termine la construction du VPC **

00_eroge_release_vpc

Créer un environnement de serveur de plateforme

Créer un serveur de plateforme (EC2) sur le sous-réseau public Normalement, il est préférable de construire un serveur de plate-forme en utilisant ʻAuto Scaling sur le sous-réseau public, mais cela coûte de l'argent, donc cette fois nous allons le construire sans utiliser ʻAuto Scaling.

** Pas très bonne configuration car le serveur de la plateforme est un point de défaillance unique **

Dessin d'achèvement

Après construction, le diagramme de configuration sera le suivant.

01_stepping_stone_server

Construisons l'environnement immédiatement

Créer une instance EC2 pour le serveur de plateforme

Créer une instance EC2 pour le serveur de plateforme

Ouvrez l'écran de création d'instance EC2

Cliquez sur "Créer une instance"

02_create_ec2_open

Étape 1: Amazon Machine Image (AMI)

ʻSelect 64-bit (x86) ʻof Amazon Linux 2 AMI (HVM), SSD Volume Type et cliquez surSélectionner

03_create_ec2_step1

Étape 2: Sélectionnez le type d'instance

Sélectionnez t2.nano et cliquez sur Étape suivante: définir les détails de l'instance

** Si vous pouvez vous le permettre, vous pouvez choisir un type légèrement supérieur **

04_create_ec2_step2

Étape 3: configurer les détails de l'instance

Entrez le «réseau», «sous-réseau» et «IP publique attribuée automatiquement»

Sélectionnez la cible VPC pour le réseau Sélectionnez ʻap-nord-est-1a public subnet` pour le sous-réseau Sélectionnez «Activé» pour l'adresse IP publique attribuée automatiquement (je configurerai l'adresse IP Elastic plus tard, mais je l'activerai une fois)

05_create_ec2_step3

Données d'utilisateur

Pour les données utilisateur, sélectionnez dans texte et collez le contenu suivant

#!/bin/bash

#Changer le nom d'hôte
# https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-hostname.html
sudo hostnamectl set-hostname eroge-release-stepping-stone-server

#Installer PostgreSQL 11
# https://qiita.com/libra_lt/items/f2d2d8ee389daf21d3fb
sudo rpm -ivh --nodeps https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo sed -i "s/\$releasever/7/g" "/etc/yum.repos.d/pgdg-redhat-all.repo"
sudo yum install -y postgresql11

#Fuseau horaire de l'Asie/Changer pour Tokyo
# https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-time.html#change_time_zone
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
sudo sed -i 's|^ZONE=[a-zA-Z0-9\.\-\"]*$|ZONE="Asia/Tokyo”|g' /etc/sysconfig/clock

Enfin, cliquez sur Étape suivante: Ajouter du stockage

Étape 4: Ajouter du stockage

En gros, vous pouvez laisser la valeur par défaut Cliquez sur Étape suivante: Ajouter une balise

06_create_ec2_step4

Étape 5: Ajouter une balise

Cliquez sur «Ajouter une autre balise», définissez la clé sur «Nom» et la valeur sur un nom descriptif, puis cliquez sur «Étape suivante: définir le groupe de sécurité».

07_create_ec2_step5

Étape 6: configurer un groupe de sécurité

Sélectionnez «Créer un nouveau groupe de sécurité» et entrez quelque chose de descriptif pour le «nom du groupe de sécurité» et la «description». Enfin cliquez sur "Confirmer et créer"

** Normalement, ne définissez pas 0.0.0.0 / 0 pour la partie source (car elle est complètement ouverte) ** ** Définissez l'adresse IP globale de votre domicile pour restreindre l'accès SSH **

08_create_ec2_step6

Étape 7: Confirmer la création de l'instance

Si vous êtes satisfait du contenu affiché, cliquez sur «Démarrer».

09_create_ec2_step7

Paire de clés

Sélectionnez «Créer une nouvelle paire de clés», saisissez un «nom de paire de clés descriptif», puis cliquez sur «Télécharger la paire de clés». Enfin cliquez sur Créer une instance

** La paire de clés téléchargée sera utilisée pour se connecter au serveur de la plateforme **

10_create_ec2_key_pair

Créer une instance

Cliquez sur "Afficher les instances"

11_create_ec2_creating

Après avoir créé l'instance

Confirmez que l'instance a été créée L'IP Elastic n'a pas encore été définie, nous définirons donc l'IP Elastic à l'avenir.

12_create_ec2_created

Créer une adresse IP élastique

Dans la situation actuelle, l'adresse IP change à chaque fois que le serveur de la plate-forme est démarré, donc créez ʻElastic IP` pour que l'adresse IP soit fixe.

Affichage de l'écran d'attribution d'adresses IP Elastic

Cliquez sur «Attribution d'adresse IP élastique»

13_create_eip_open_setting

Attribution d'adresse IP élastique

Il n'y a rien à définir, alors cliquez sur ʻAssign`

14_create_eip_setting

Attribution d'adresse IP élastique terminée

L'attribution d'adresse IP élastique est terminée

15_create_eip_created

Donnez un nom à l'adresse IP Elastic

Puisqu'il n'y a pas de nom et qu'il est difficile à comprendre, ajoutez une balise pour que le nom s'affiche

Ouvrez l'écran des détails de l'adresse IP Elastic

Cliquez sur «Actions» et cliquez sur «Afficher les détails»

16_create_eip_open_detail

Détails de l'adresse IP élastique

Cliquez sur "Gérer les balises"

17_create_eip_tag

Gestion des balises

Entrez un nom descriptif pour «Nom» et «option-valeur» pour «clé» Enfin cliquez sur Enregistrer

18_create_eip_tag_editing

Des balises ont été ajoutées

19_create_eip_tag_edited

Associer une adresse IP Elastic à une instance EC2

Associez l '«adresse IP élastique» que vous avez créée au «Tread Server (EC2)» que vous avez créé précédemment.

Ouvrez l'écran Elastic IP Address Association

ʻCliquez sur Elastic IP Address Association`

19_create_eip_tag_edited

Association d'adresse IP élastique

Pour l'élément d'instance, sélectionnez l '«instance EC2» créée précédemment. Enfin cliquez sur ʻAssocier`

20_attach_eip_to_ec2

Vérifier si une adresse IP Elastic est associée

Vous pouvez voir que l'instance EC2 que vous avez définie précédemment est affichée dans l'instance associée.

21_attached_eip_to_ec2

Vous pouvez également voir que l 'ʻElastic IP ʻElastic IP que vous avez créée précédemment est affichée sur l'écran d'instance EC2.

22_attached_eip_on_ec2_dashboard

Essayez de vous connecter

Vérifiez si vous pouvez accéder au serveur de plate-forme créé à l'aide d'une commande comme celle-ci

** La paire de clés sera celle que vous avez téléchargée lors de la création de l'instance EC2 **

$ ssh -i paire de clés ec2 – utilisateur@Adresse IP élastique

Si vous pouvez vous connecter, vous avez terminé

23_connect_to_ec2

** Ceci termine la construction du serveur de plate-forme **

01_stepping_stone_server

Construction de l'environnement RDS

Créer des configurations maître et esclave PostgreSQL avec RDS

Dessin d'achèvement

Après construction, le diagramme de configuration sera le suivant.

01_eroge_release_db_rds

Construisons l'environnement immédiatement

Créer un groupe de sous-réseaux DB

C'est un paramètre pour Master et Slave sur quel sous-réseau démarrer l'instance de base de données Veuillez consulter les documents suivants pour plus de détails

Ouvrez l'écran de création du groupe de sous-réseaux DB

Cliquez sur «Groupe de sous-réseaux» dans le menu de gauche et cliquez sur «Créer un groupe de sous-zones DB» en haut à droite.

02_create_subnet_group

Détails du groupe de sous-section

Entrez nom, description, VPC ** Remarque: assurez-vous de sélectionner le VPC créé au lieu du VPC par défaut **

03_create_subnet_group_detail

Ajouter un sous-réseau

Ajouter un Sous-réseau privé pour la zone de disponibilité cible ( 1a et 1c) Enfin, cliquez sur le bouton Créer pour terminer.

04_create_subnet_group_add_subnet

Créer un groupe de paramètres

RDS utilise des groupes de paramètres pour configurer les instances de base de données Si vous créez une instance de base de données sans utiliser de groupe de paramètres, le groupe de paramètres par défaut sera utilisé. Ce ** groupe de paramètres par défaut ne peut pas être modifié **, il est donc recommandé de le définir.

Veuillez consulter les documents suivants pour plus de détails

Ouvrez l'écran de création du groupe de paramètres

Cliquez sur «Groupe de paramètres» dans le menu de gauche et cliquez sur «Créer un groupe de paramètres» en haut à droite

05_create_parameter_group

Détails du groupe de paramètres

Entrez la famille de groupe de paramètres, le nom du groupe et la description Sélectionnez PostgreSQL pour la famille de groupes de paramètres Enfin cliquez sur Créer

06_create_paraemter_group_detail

Créer un groupe de sécurité pour RDS

Créez un groupe de sécurité qui autorise uniquement l'accès à partir du serveur de la plate-forme pour augmenter la sécurité pour RDS ** Joindre ce groupe de sécurité sur l'écran des paramètres RDS **

Ouvrez l'écran de création du groupe de sécurité

Ouvrez l'écran de la console VPC, cliquez sur «Groupe de sécurité» dans le menu de gauche, puis sur «Créer un groupe de sécurité» en haut à gauche.

07_create_security_group_db

Créer un groupe de sécurité

Entrez le "nom du groupe de sécurité", la "description" et le "VPC" et cliquez sur le bouton "Créer". ** Remarque: assurez-vous de sélectionner le VPC créé au lieu du VPC par défaut **

08_create_security_group_db

Cliquez sur le bouton Fermer pour fermer l'écran de création

09_create_security_group_db

Nommez le groupe de sécurité

Par défaut, name est vide, cliquez donc sur le bouton crayon à l'extrême droite de la colonne Name et donnez-lui un nom descriptif.

10_create_security_group_db

Paramètres de règle entrante

Cliquez sur l'onglet «Règles entrantes» et cliquez sur «Modifier la règle»

11_create_security_group_db

Cliquez sur «Ajouter une règle» lorsque l'écran change

12_create_security_group_db

Cliquez sur le type et ajoutez PostgreSQL et SSH Sélectionnez Tread Server Security Group pour la pièce source

** En sélectionnant le groupe de sécurité du serveur de plateforme, l'accès ne sera autorisé qu'à partir de l'instance qui possède le groupe de sécurité du serveur de plateforme **

Enfin, entrez description et cliquez sur Enregistrer la règle

13_create_security_group_db

Cliquez sur le bouton fermer

14_create_security_group_db

Ceci termine la création du groupe de sécurité.

Création de RDS (PostgreSQL)

Je suis prêt à créer la base de données, je vais donc la créer maintenant.

Ouvrez l'écran de création de base de données

Cliquez sur «Tableau de bord» dans le menu de gauche et cliquez sur «Créer une base de données» en bas

15_create_rds

Sélectionnez une méthode de création de base de données

Cette fois, nous les définirons un par un, alors sélectionnez «Création standard».

16_create_rds_database_create_way

Options de moteur

Puisque nous allons créer une base de données pour PostgreSQL, il est recommandé de sélectionner PostgreSQL et de sélectionner également la dernière version mineure de version.

17_create_rds_engine

modèle

Si vous sélectionnez «Niveau gratuit», vous ne pourrez pas sélectionner «Placement multi-AZ», alors sélectionnez «Développement / Test».

18_create_rds_template

Configuration

Saisissez l '«identificateur d'instance de base de données», le «nom d'utilisateur principal» et le «mot de passe principal» «Identificateur d'instance de base de données» est le nom affiché sur l'écran de la console. Veuillez noter qu'il ne s'agit pas d'un nom de base de données

Vérifiez les documents suivants pour les utilisateurs principaux

19_create_rds_settings

Taille de l'instance de base de données

Pour un usage personnel, j'aimerais choisir celui avec les spécifications les plus basses qui soit respectueux du portefeuille en termes de prix, mais si je sélectionne `` Développement / Test '', une spécification assez élevée sera sélectionnée.

20_create_rds_db_instance

En sélectionnant classe extensible (y compris la classe t), vous pourrez sélectionner une spécification compatible avec le portefeuille.

21_create_rds_db_instance

espace de rangement

Si vous l'utilisez personnellement, vous pouvez laisser la valeur par défaut Avec une configuration «multi-AZ», 20 Go coûteront environ 5 $ par mois.

22_create_rds_storage

Veuillez consulter les documents suivants pour connaître les frais détaillés

Disponibilité et durabilité

Sélectionnez Créer une instance de secours (recommandé pour l'environnement de production) pour créer un déploiement multi-AZ. ** Remarque: si le modèle est défini sur le cadre d'utilisation gratuite, il sera grisé et ne pourra pas être sélectionné, alors assurez-vous de le développer / tester **

23_create_rds_availability_and_durability

Relier

Entrez le VPC cible dans Virtual Private Cloud (VPC) ** Remarque: assurez-vous de sélectionner le VPC créé au lieu du VPC par défaut **

Cliquez sur «Paramètres de connexion supplémentaires» et saisissez plus d'informations

Pour Groupe de sous-réseaux, sélectionnez le groupe de sous-réseaux que vous avez créé précédemment.

Sélectionnez "Aucun" pour "Accessible au public" ** Sélectionnez Aucun pour autoriser l'accès via le serveur de la plateforme **

Pour VPC Security Group, sélectionnez le groupe de sécurité que vous avez créé précédemment.

Vous pouvez laisser le port de base de données par défaut

24_create_rds_connection

Authentification de la base de données

Si vous n'avez pas besoin d'authentifier votre base de données à l'aide des informations d'identification IAM, l'authentification par mot de passe par défaut convient. Veuillez consulter les documents suivants pour plus de détails

25_create_rds_database_certification

Paramètres additionnels

Je vais expliquer chaque paramètre supplémentaire

26_create_rds_add_settings

Choix de base de données

En spécifiant «premier nom de base de données», RDS sera construit avec la base de données créée.

28_create_rds_add_settings_default_database

Pour Groupe de paramètres DB, spécifiez le groupe de paramètres créé précédemment.

27_create_rds_add_settings_choise_database

sauvegarde

Dans la «fenêtre de sauvegarde», sélectionnez la «fenêtre de sélection» et définissez «l'heure de début» sur «20: 00». Avec ce paramètre, vous pourrez effectuer une sauvegarde entre 5 et 30 minutes du matin.

29_create_rds_add_settings_backup

Veuillez consulter les documents suivants pour plus de détails

Performance Insights

Vous pouvez conserver les valeurs par défaut pour Performance Insights

30_create_rds_add_settings_perfomance_insights

Veuillez consulter les documents suivants pour plus de détails

surveillance

Vous pouvez laisser la valeur par défaut pour la surveillance

31_create_rds_add_settings_monitoring

Veuillez consulter les documents suivants pour plus de détails

Exporter le journal

Vérifiez Journal PostgreSQL, Journal de mise à niveau Vous pouvez vérifier la sortie du journal par CloudWatch Logs en la vérifiant.

32_create_rds_add_settings_log_export

Veuillez vérifier les documents suivants pour les journaux

entretien

Dans la «fenêtre de maintenance», sélectionnez la «fenêtre de sélection» et définissez «l'heure de début» sur «18: 00». Avec ce paramètre, vous pourrez mettre à jour la version mineure dans les 30 minutes à 3 heures le mardi matin.

33_create_rds_add_settings_maintenance

Consultez les documents suivants pour les mises à niveau de version mineures

Supprimer la protection

Si vous le cochez, vous ne pourrez pas supprimer la base de données. ** Vous pouvez le supprimer en modifiant le paramètre **

34_create_rds_add_settings_deletion_protection

Créer une base de données

Enfin, vérifiez le «coût mensuel estimé» et cliquez sur le bouton «Créer une base de données» si cela semble correct. Ceci termine la construction du RDS!

35_create_rds_create_button

Veuillez consulter les documents suivants pour plus de détails sur les prix

Connectez-vous à RDS depuis le serveur de la plateforme

Connectez-vous au serveur de la plateforme

Accédez au serveur de plateforme à l'aide d'une commande similaire à la suivante

** La paire de clés sera celle que vous avez téléchargée lors de la création de l'instance EC2 **

$ ssh -i paire de clés ec2 – utilisateur@Adresse IP élastique

36_connect_to_ec2

Connectez-vous à RDS

Accédez à RDS à l'aide d'une commande similaire à la suivante

$ psql -h Point final RDS-Nom de la base de données de noms d'utilisateur maître U

37_connect_ec2_to_rds

Si vous pouvez y accéder, il n'y a pas de problème Les travaux suivants seront effectués à partir de cet écran

À propos de PostgreSQL

Je passerai en revue au moins les termes nécessaires pour créer un environnement avec PostgreSQL

Cluster de base de données

Un cluster de bases de données est un ensemble de bases de données

38_postgresql_database_cluster

Lorsqu'elle est créée avec RDS, la première base de données , postgres, rdsadin, tempalte0ettemplate1` définies sur l'écran de réglage RDS sont créées dans le cluster de bases de données.

28_create_rds_add_settings_default_database

Veuillez consulter les documents suivants pour plus de détails

Base de données

Une base de données est une collection nommée d'objets de base de données (tables, vues, fonctions et opérateurs, etc.)

39_postgresql_database

Veuillez consulter les documents suivants pour plus de détails

Schéma

Les schémas peuvent regrouper des objets de base de données (tables, vues, fonctions et opérateurs, etc.) dans la base de données

40_postgresql_schema

Veuillez consulter les documents suivants pour plus de détails

À propos des rouleaux

Le rôle approuve la connexion à la base de données. Les rôles sont divisés en utilisateurs de base de données (utilisateurs qui se connectent à la base de données) et groupes d'utilisateurs de base de données.

Il existe deux types de SQL pour créer un rôle: La différence entre les deux est de savoir s'ils ont l'attribut LOGIN

--Créer un groupe d'utilisateurs de base de données
CREATE ROLE name;
--Créer un utilisateur de base de données
CREATE USER name;

Veuillez consulter les documents suivants pour plus de détails

Gérer les utilisateurs et les rôles

Nous allons créer un environnement basé sur les «meilleures pratiques pour la gestion des utilisateurs et des rôles» en nous référant au billet de blog AWS. Je vais le créer en référence aux deux articles suivants

Objectifs à viser

managing-postgresql-users-1

--Utilisez l'utilisateur maître pour créer des rôles pour chaque application ou cas d'utilisation, tels que readonly ou readwrite : Ajoutez des autorisations pour permettre à ces rôles d'accéder à divers objets de base de données. Par exemple, le rôle readonly ne peut exécuter que des requêtes SELECT --Donner au rôle les privilèges minimum requis pour la fonctionnalité --Créez un nouvel utilisateur pour chaque application ou fonctionnalité individuelle, telle que ʻapp_user ou reporting_user: Attribuez les rôles appropriés à ces utilisateurs et accordez-leur rapidement les mêmes privilèges que les rôles. Par exemple, accordez le rôlereadwrite à ʻapp_user et le rôle readonly à reporting_user.

  • Vous pouvez supprimer un rôle d'un utilisateur à tout moment pour révoquer des autorisations

Les images et le texte ci-dessus sont tirés de PostgreSQL User and Role Management | Amazon Web Services Blog

Ce que je dis, c'est de créer des rôles de groupe tels que «autorisation de lecture» et «autorisation de lecture / écriture» et les accorder aux utilisateurs en fonction de leur objectif.

schéma public

** Remarque: Le reste du travail sera effectué en se connectant au RDS depuis le step server en tant que master user **

Créer une nouvelle base de données crée un schéma public La création d'un objet de base de données tel qu'une table appartiendra au schéma public

Même si vous créez un nouvel utilisateur et accordez des autorisations et limitez-le, il sera créé dans le schéma public, de sorte que l'utilisateur nouvellement créé n'aura aucun sens. Vous devez révoquer les autorisations de création sur le schéma public

La documentation officielle de PostgreSQL dit:

Le SQL standard n'a pas non plus le concept de schéma public. Le schéma public ne doit pas être utilisé pour maximiser la conformité à la norme.

Il vaut mieux ne pas utiliser le schéma public Veuillez consulter le document officiel ci-dessous pour plus de détails

Empêcher l'utilisation du schéma public

Exécutez le SQL suivant pour désactiver le schéma public

41_revoke_public_schema

--Révoquer l'autorisation de création par défaut pour le schéma public du rôle public
REVOKE CREATE ON SCHEMA public FROM PUBLIC;

--Désactiver la capacité des rôles publics à se connecter à la base de données
-- ※eroge_release_db est le nom de la base de données
REVOKE ALL ON DATABASE eroge_release_db FROM PUBLIC;

Créer un schéma

Normalement, il est préférable de créer un schéma pour chaque utilisateur qui le crée, mais cette fois, nous allons créer un seul schéma afin que tous les utilisateurs voient ce schéma

Consultez la documentation officielle pour connaître les modèles d'utilisation recommandés pour le schéma

Exécutez le SQL suivant pour créer un schéma

42_create_schema

--Créer un schéma
-- ※eroge_release_db_schema est le nom du schéma
CREATE SCHEMA eroge_release_db_schema;

Créer un rôle d'autorisation de lecture

Créer un rôle qui autorise uniquement la lecture des données Ce sera un rôle qui ne peut pas mettre à jour les données

Il accorde également automatiquement des autorisations afin que le rôle readonly puisse accéder aux futures tables et vues.

Exécutez le SQL suivant

43_create_readonly_role

--Créer un rôle nommé en lecture seule(Rôle sans mot de passe ni autorité)
CREATE ROLE readonly;

--Le rôle en lecture seule est eroge_release_Accorder l'accès à db
-- ※eroge_release_db est le nom de la base de données
GRANT CONNECT ON DATABASE eroge_release_db TO readonly;

--Accorder un accès de rôle en lecture seule au schéma
-- ※eroge_release_db_schema est le nom du schéma
GRANT USAGE ON SCHEMA eroge_release_db_schema TO readonly;

--Accorder l'accès à toutes les tables et vues du schéma
-- ※eroge_release_db_schema est le nom du schéma
GRANT SELECT ON ALL TABLES IN SCHEMA eroge_release_db_schema TO readonly;

--Lorsqu'une nouvelle table ou vue est créée à l'avenir, vous n'aurez pas d'autorisation d'accès.
--Ainsi, lorsqu'une nouvelle table ou vue est créée à l'avenir, l'autorisation d'accès sera donnée automatiquement.
-- ※eroge_release_db_schema est le nom du schéma
ALTER DEFAULT PRIVILEGES IN SCHEMA eroge_release_db_schema GRANT SELECT ON TABLES TO readonly;

Créer un rôle d'autorisation de lecture / écriture

Créer un rôle qui permet d'écrire en plus de lire des données Il accorde également automatiquement des autorisations afin que les futures tables et vues soient accessibles par le rôle readwrite.

Exécutez le SQL suivant

44_create_readwrite_role

--Créer un rôle nommé readwrite(Rôle sans mot de passe ni autorité)
CREATE ROLE readwrite;

--le rôle readwrite est eroge_release_Accorder l'accès à db
-- ※eroge_release_db est le nom de la base de données
GRANT CONNECT ON DATABASE eroge_release_db TO readwrite;

--Accordez au rôle readwrite l'autorisation de créer de nouveaux objets dans le schéma
-- ※eroge_release_db_schema est le nom du schéma
GRANT USAGE, CREATE ON SCHEMA eroge_release_db_schema TO readwrite;

--Accordez l'accès à toutes les tables et vues du schéma et ajoutez / supprimez / mettez à jour des autorisations
-- ※eroge_release_db_schema est le nom du schéma
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA eroge_release_db_schema TO readwrite;

--Lorsqu'une nouvelle table ou vue est créée à l'avenir, vous n'aurez pas d'autorisation d'accès ni d'autorisation d'ajout / suppression / mise à jour.
--Par conséquent, lorsqu'une nouvelle table ou vue est créée à l'avenir, l'autorisation d'accès et l'autorisation d'ajout / suppression / mise à jour sont automatiquement accordées.
-- ※eroge_release_db_schema est le nom du schéma
ALTER DEFAULT PRIVILEGES IN SCHEMA eroge_release_db_schema GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO readwrite;

--Accordez l'accès à la séquence car vous devez également utiliser la séquence
-- ※eroge_release_db_schema est le nom du schéma
GRANT USAGE ON ALL SEQUENCES IN SCHEMA eroge_release_db_schema TO readwrite;

--Lorsqu'une nouvelle séquence est créée à l'avenir, vous n'aurez pas d'autorisation d'accès.
--Ainsi, lorsqu'une nouvelle séquence est créée à l'avenir, les droits d'accès seront accordés automatiquement.
-- ※eroge_release_db_schema est le nom du schéma
ALTER DEFAULT PRIVILEGES IN SCHEMA eroge_release_db_schema GRANT USAGE ON SEQUENCES TO readwrite;

Créer un utilisateur et attribuer un rôle

Créez un utilisateur pour la connexion et accordez le rôle créé précédemment Créer des utilisateurs pour «lire» et «lire / écrire»

--app_readonly --app (lecture / écriture)

Veuillez exécuter le SQL suivant

45_create_users

--Créer un utilisateur en lecture seule et accorder le rôle d'autorisation de lecture
-- ※app_readonly est le nom d'utilisateur, le mot de passe est le mot de passe pour se connecter
CREATE USER app_readonly WITH PASSWORD 'password';
GRANT readonly TO app_readonly;

--readwrite Créer et lire un utilisateur/Accorder le rôle d'autorisation d'écriture
--* L'application est le nom d'utilisateur, le mot de passe est le mot de passe pour la connexion
CREATE USER app WITH PASSWORD 'password';
GRANT readwrite TO app;

Vérifiez si l'utilisateur et le rôle ont été créés

ʻApp, ʻapp_readonly Les utilisateurs sont affichés et vérifient si les rôles sont correctement attribués en exécutant le SQL suivant.

46_confirmation_user_list

--Confirmation d'autorisation SQL
  SELECT r.rolname
       , ARRAY(
                   SELECT b.rolname
                     FROM pg_catalog.pg_auth_members m
                     JOIN pg_catalog.pg_roles        b 
                       ON m.roleid = b.oid
                    WHERE m.member = r.oid
               ) AS memberof
    FROM pg_catalog.pg_roles r
   WHERE r.rolname NOT IN (
                               'pg_execute_server_program', 'pg_monitor',           'pg_read_all_settings',
                               'pg_read_all_stats',         'pg_read_server_files', 'pg_stat_scan_tables',
                               'pg_write_server_files',     'rds_ad',               'rdsadmin',                  
                               'rds_password',              'pg_signal_backend',    'rds_iam',                   
                               'rds_replication',           'rdsrepladmin',         'rds_superuser'
                          )
ORDER BY r.rolname;

Changer le search_path par défaut

Avec le paramètre par défaut «search_path», vous ne pouvez pas rechercher la table en omettant le nom «eroge_release_db_schema» créé. Modifiez le paramètre search_path pour pouvoir rechercher dans la table même si vous omettez le nom ʻeroge_release_db_schema`. ** Remplacez eroge_release_db_schema par le nom du schéma que vous avez créé **

Consultez les documents suivants pour plus d'informations sur search_path

Vérifiez le search_path par défaut

Exécutez le SQL suivant

47_default_search_path

SHOW search_path;

Dans l'état par défaut, il recherche le même nom de schéma que le nom d'utilisateur de connexion, sinon il recherche le schéma public. Vous pouvez rechercher la table en ajoutant ʻeroge_release_db_schema` à search_path.

Si vous vérifiez le schéma actuel actuel, il sera public

48_default_current_schema

Si vous essayez de rechercher la table sans le nom de schéma, l'erreur suivante se produit.

49_select_game_casts_table_fail

Modifier search_path du groupe de paramètres DB

Sélectionnez le groupe de paramètres DB que vous avez créé et modifiez-le

50_edit_db_parameter_group

Entrez search_path pour le paramètre, entrez '$ user', eroge_release_db_schema pour la valeur, et cliquez sur Preview Changes.

51_input_db_parameter_group

Assurez-vous que la nouvelle valeur est `` $ user ', eroge_release_db_schema et cliquez sur Enregistrer les modifications`

52_save_db_parameter_group

Vérifier le chemin de recherche modifié

Exécutez le SQL suivant

53_after_change_search_path

SHOW search_path;

Assurez-vous que vous disposez des valeurs modifiées dans le groupe de paramètres DB Si vous vérifiez également le schéma actuel actuel, ce sera ʻeroge_release_db_schema`.

54_after_change_schema

Si vous omettez le nom du schéma et recherchez la table, vous pouvez voir qu'il a été affiché sans erreur.

55_select_game_casts_table_success

** Ceci termine la construction du RDS **

finalement

Vous devez normalement utiliser AWS CDK ou Terraform pour coder votre infrastructure. Tout d'abord, je l'ai fait à partir de l'écran de la console AWS Cela a pris du temps comme une bonne chose, mais j'ai pu saisir la situation dans son ensemble et c'était un très bon début. Finalement, j'aimerais aussi coder l'environnement créé cette fois!

Recommended Posts

Tout le monde peut probablement créer un serveur de plateforme, un environnement RDS (maître / esclave) dans un environnement multi-AZ sur l'écran de la console AWS
Créer un projet et une application Django dans un environnement virtuel Python et démarrer le serveur
Créer un environnement Docker qui peut utiliser PyTorch et JupyterLab
Créer un environnement Python et transférer des données vers le serveur
Créer une application Todo avec Django ① Créer un environnement avec Docker