Nous avons réussi à déployer en conteneur l'application Rails créée par nous-mêmes à l'aide de CircleCI, je vais donc l'écrire ici sous forme de mémorandum. (De plus, dès que le fichier Readme, etc. sera prêt, nous présenterons l'application réelle dans un autre article.)
En outre, j'utilise actuellement Windows10, et si vous êtes un Mac, veuillez le remplacer si nécessaire. Cependant, je pense que les autres choses sont les mêmes sauf que la méthode d'installation de aws-ecs-cli est différente. (L'installation avec Windows a pris un peu de temps.)
De plus, étant donné que la langue de la console AWS est définie sur l'anglais, je pense qu'il est plus facile de poursuivre cet article si vous le définissez en anglais. (Il est recommandé car le nom de la commande dans AWS CLI correspond à la notation anglaise de la console.)
--Personnes qui ont un compte AWS
Visez la configuration ci-dessus.
Pour expliquer le flux réel en mots,
① Push to Github (Seuls les tests automatiques et Rubocop sont exécutés à l'exception de la branche master.) (2) CircleCI détecte la poussée et commence la construction. ③ Après avoir passé RSpec et Rubocop, l'image du docker sera construite et poussée vers ECR. (4) Utilisez la dernière image Docker pour mettre à jour la définition de tâche ECS (qui définit presque comment démarrer le conteneur docker, comme docker-compose.yml). ⑤ L'instance EC2 est démarrée et le déploiement est terminé.
De plus, l'application développée personnellement que j'ai réellement créée est bien sûr compatible SSL avec Route53 et ACM, et j'ai eu beaucoup de problèmes ici, je vais donc l'écrire à nouveau dans un article séparé. Assurez-vous de faire SSL car il est indispensable pour le fonctionnement réel.
Dans la section de préparation, nous ferons quatre choses principales.
Installez les deux suivants.
Si vous utilisez Windows, vous pouvez l'installer en vous référant à cet article. J'ai pu l'installer de cette façon.
Avec ces outils, vous pouvez créer des VPC, des sous-réseaux, des clusters, pousser vers ECR, redéfinir des tâches, etc. à partir du terminal sans avoir à jouer avec la console.
Connectez-vous à la console, sélectionnez le service, recherchez IAM et cliquez sur. Cliquez sur Utilisateurs, puis sur Ajouter un utilisateur Cliquez sur Joindre les stratégies existantes à l'extrême droite et attachez les deux stratégies suivantes.
Si vous pouvez confirmer qu'il est attaché comme défini sur l'écran de confirmation, cliquez sur Créer un utilisateur Ensuite, la clé d'accès et la clé secrète seront créées sur l'écran suivant. Je pense qu'un bouton comme télécharger sera affiché en csv, alors cliquez dessus et enregistrez les informations.
** Il semble qu'il y ait des cas où vous avez accidentellement poussé votre clé d'accès secrète vers git et reçu des millions de factures d'Amazon, alors soyez prudent lorsque vous la manipulez. ** **
J'ai ajouté cette politique plus tôt, mais cela seul provoquera une erreur autour de l'autorité lors de l'exécution de la commande ecs-cli, je vais donc l'ajouter séparément.
Dans la console IAM, sélectionnez Stratégies, puis Créer des stratégies. Cliquez sur l'onglet Json à l'écran et entrez le code ci-dessous.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"iam:AttachRolePolicy",
"iam:AddRoleToInstanceProfile",
"iam:CreateInstanceProfile",
"iam:CreateRole",
"iam:DeleteInstanceProfile",
"iam:DeleteRole",
"iam:DetachRolePolicy",
"iam:PassRole",
"iam:RemoveRoleFromInstanceProfile",
"ec2:DeleteInternetGateway",
"ec2:DeleteSecurityGroup",
"ec2:DeleteRouteTable"
],
"Resource": "*"
}
]
}
Après avoir entré, cliquez sur Vérifier la politique. Entrez un nom et une description de votre choix et cliquez sur Créer une stratégie.
Ensuite, donnez à l'utilisateur IAM créé la stratégie nouvellement créée dans ↑. Cliquez sur Utilisateurs, puis sur Ajouter des autorisations Cliquez sur Joindre directement les politiques existantes et sélectionnez la politique que vous venez de créer Sur l'écran de confirmation, cliquez sur Ajouter des autorisations si vous avez sélectionné la stratégie appropriée.
Exécutez aws configure dans le terminal avec l'option --profile. Lorsque vous l'exécutez, il vous sera demandé de manière interactive, alors entrez-le correctement un par un.
$ aws configure --profile Nom d'utilisateur créé
AWS Access Key ID #Clé d'accès une fois créée
AWS Secret Access Key #Clé d'accès secrète une fois créée
Default region name # ap-northeast-1
Default output format # json
Lorsque vous exécutez aws configure, le répertoire .aws est automatiquement généré sous votre répertoire personnel et des informations telles que les clés d'accès y sont stockées comme indiqué ci-dessous, veuillez donc le vérifier. (Peut ne pas être complètement ensemble)
~/.aws/credentials
[Nom d'utilisateur]
aws_access_key_id=AKIAIOSFODNN7AJDIFK
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/gkjkAKJDKJ
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
~/.aws/config
[nom d'utilisateur du profil]
region = ap-northeast-1
output = json
[default]
region = ap-northeast-1
output = json
Ensuite, nous allons créer une paire de clés.
Sélectionnez Service → Console EC2 → paire de clés → Créer une paire de clés et saisissez un nom de paire de clés approprié. Sélectionnez .pem comme extension de fichier et cliquez sur Créer une paire de clés.
Une fois terminé, le fichier .pem sera téléchargé automatiquement. Exécutez la commande suivante pour accéder au répertoire ".ssh" et modifier les autorisations.
$ mv Downloads/sample-app.pem .ssh/
$ chmod 600 ~/.ssh/sample-app.pem
** Ceci termine la préparation! Je vous remercie pour votre travail acharné! ** ** La suite est (2) J'écris actuellement un article pour la construction d'infrastructures! Nous le publierons ici dès que la création sera terminée, alors continuez à nous soutenir! (Je pense que je peux l'élever demain)
Ce fut un long article, donc si vous avez des suggestions, telles que des erreurs dans la description, je vous serais reconnaissant si vous pouviez commenter.
Recommended Posts