Cet article fait partie d'une série d'articles dans Feuille de route pour les anciens employés de la mairie pour changer d'emploi en programmeurs WEB.
Cet article est écrit dans le but de fournir une base pour démarrer avec ** AWS **, qui est un représentant des services de cloud computing.
À l'étranger, il y a une histoire selon laquelle, bien qu'il soit devenu basé sur le cloud, le «démonuage» progresse, revenant sur site en disant: «Après tout, le sur site est plus sûr». Cependant, je pense que les services de cloud computing, qui permettent de se procurer facilement des ressources informatiques et d'utiliser des services prêts à l'emploi, sont des technologies attrayantes pour les ingénieurs d'infrastructure de serveurs.
Par conséquent, on s'attend à ce que la vague de cloudisation se poursuive pendant un certain temps et il sera utile d'apprendre la technologie AWS.
AWS
--Construction de modèles d'apprentissage automatique: ʻAWS SageMaker
LocalStack
AWS propose une version d'essai gratuite, mais lorsque vous entrez en contact avec AWS pour la première fois, il existe de nombreuses fonctionnalités que vous ne comprenez pas et vous ne savez peut-être pas lesquelles sont disponibles gratuitement.
À cet égard, si vous créez un pseudo environnement AWS localement avec LocalStack et que vous l'utilisez, vous ne serez pas facturé quoi que vous fassiez, et si vous faites une erreur et détruisez tout l'environnement virtuel, rien ne se passera depuis le début. Vous pouvez recommencer.
Au lieu de cela, vous ne pouvez pas utiliser l'interface utilisateur WEB (console AWS), mais si vous souhaitez automatiser la construction du serveur, etc., des opérations de ligne de commande sont nécessaires de toute façon, donc dans ce sens, familiarisez-vous avec les opérations de ligne de commande AWS avec LocalStack. Je ne pense pas que ce soit mal de partir. (La sensation de fonctionnement de la console AWS peut changer un peu ...)
Environment
19.03.12
1.26.0
1.1.1
1.2.19
2.7.18
3.7.7
1.18.93
0.12.1
Setup
# -- Python3.Créer un environnement avec X--
#Mettez à jour pip vers la dernière version
$ pip3 install --upgrade pip setuptools
#Installation de l'AWS CLI
$ pip3 install --upgrade aws
#Configurer un profil pour localstack dans l'AWS CLI
## AccessKeyID,SecretAccessKey peut être n'importe quelle chaîne
$ aws configure --profile=localstack
AWS Access Key ID [None]: dummy
AWS Secret Access Key [None]: dummy
Default region name [None]: ap-northeast-1
Default output format [None]: json
#installation de la pile locale
$ pip3 install --upgrade localstack
#Confirmation de version
$ localstack -v
0.12.1
Execution Démarrez l'environnement de simulation LocalStack.
#Dockerfile par vous-même, docker-compose.Ecrire yml et localstack/Vous pouvez lancer l'image localstack en tant que conteneur,
#Vous pouvez facilement démarrer l'environnement fictif à l'aide de la commande de démarrage localstack
## START_Variables d'environnement WEB:Utiliser ou non l'interface utilisateur Web (par défaut): 1)
##L'interface utilisateur Web est obsolète et ne doit pas être utilisée
## EDGE_Variable d'environnement PORT:Spécifiez le port de point de terminaison d'API pour chaque service AWS (par défaut): 4566)
## DEFAULT_Variable d'environnement REGION:Spécifier la région par défaut pour les services AWS (par défaut): us-east-1)
## ...Pour les autres variables d'environnement, https://github.com/localstack/Voir localstack
$ START_WEB=0 EDGE_PORT=5066 DEFAULT_REGION=ap-northeast-1 localstack start
# => API: tcp://localhost:5066
# => Region: ap-northeast-1
# =>Ctrl pour quitter+Touche C
Cette fois, je vais créer le système WEB suivant.
--Fonctions sur le cloud: test-function
--Lorsqu'il est exécuté, un fichier appelé {date et heure d'exécution} .txt
est généré.
--Le contenu du fichier est Ce fichier généré à {date et heure d'exécution} .
--Enregistrer le fichier ci-dessus dans le stockage sur le cloud (test-bucket
)
Lors de l'utilisation de l'AWS CLI pour LocalStack ʻaws --endpoint-url = http: // localhost: <port spécifié par EDGE_PORT> --profile = <profil défini pour LocaStack> ʻest utilisé en commun. Ce sera.
En raison de sa longue longueur, il est utile d'enregistrer cette commande avec un alias.
#Commande AWS CLI pour LocalStack`laws`Inscrivez-vous avec l'alias
$ alias laws='aws --endpoint-url=http://localhost:5066 --profile=localstack'
--AWS S3 est un service de stockage dans le cloud qui peut stocker des données de fichiers sur le cloud.
#Test sur AWS S3 dans un environnement localstack à l'aide de l'AWS CLI-bucket Créer un bucket
# $ aws s3 mb s3://<Nom du godet>
$ laws s3 mb s3://test-bucket
make_bucket: test-bucket
#Confirmation
$ laws s3 ls
2020-11-03 18:08:26 test-bucket
--AWS Lambda est un service qui enregistre les programmes (fonctions) sans serveur sur le cloud.
Cette fois, implémentons la fonction Lambda en utilisant Python3.
lambda.py
# boto3: AWS SDK for Python
import boto3
from boto3.session import Session
from datetime import datetime
import os
#Créer une session pour accéder aux services AWS
##AccessKeyID pour l'environnement fictif de la pile locale,SecretAccessKey peut être factice
session = Session(
aws_access_key_id='dummy',
aws_secret_access_key='dummy',
region_name='ap-northeast-1'
)
#Connectez-vous à AWS S3
s3 = session.resource(
service_name='s3',
'''
endpoint_url:
Ce script s'exécute à l'intérieur du conteneur Docker, donc
Hôte local de la machine hôte d'exécution Docker:${EDGE_PORT}Besoin de chercher
LOCALSTACK_Variable d'environnement HOSTNAME:
Contient localhost IPv4 de la machine hôte exécutant le conteneur Docker LocalStack
=> http://${LOCALSTACK_HOSTNAME}:${EDGE_PORT}En spécifiant
LocalStack(Docker)La communication entre les services dans l'environnement est possible
'''
endpoint_url = 'http://' + os.environ['LOCALSTACK_HOSTNAME'] + ':' + os.environ['EDGE_PORT']
)
#Fonction d'entrée
##Dans les cas suivants, lambda est utilisé comme gestionnaire lors de l'enregistrement avec Lambda._Spécifiez un gestionnaire
def lambda_handler(event, context):
now = datetime.now().strftime('%Y-%m-%d-%H-%M-%S') #Date et heure actuelles
filename = now + '.txt' #nom de fichier: {Date et heure actuelles}.txt
contents = f'This file generated at {now}.' #Contenu du fichier
bucket = 'test-bucket' #Enregistrer le nom du compartiment S3 de destination
# s3://test-bucket/{Date et heure actuelles}.Enregistrer le fichier au format txt
s3.Bucket(bucket).put_object(Key=filename, Body=contents)
#Valeur renvoyée après l'exécution de la fonction Lambda
return f'Saved: s3://{bucket}/{filename}'
#Compressez le programme créé en zip
$ zip lambda.zip lambda.py
#Test sur AWS Lambda à l'aide de l'AWS CLI-function.zip de test-fonction Enregistrée en tant que fonction
# $ aws lambda create-function
## --function-name=<Nom de la fonction>
## --runtime=<Langue du programme à utiliser>
## --role=<Rôle IAM pouvant exécuter des fonctions>* Dans le cas de LocalStack, vous pouvez définir un rôle IAM approprié.
## --handler=<Nom du module>.<Fonction d'entrée>
## --zip-file=fileb://<Fichier programme compressé Zip>
$ laws lambda create-function \
--function-name='test-function' \
--runtime='python3.7' \
--role='arn:aws:iam::123456789012:role/service-role/test-exec-role' \
--handler='lambda.lambda_handler' \
--zip-file='fileb://./lambda.zip'
{
"FunctionName": "test-function",
"FunctionArn": "arn:aws:lambda:ap-northeast-1:000000000000:function:test-function",
"Runtime": "python3.7",
"Role": "arn:aws:iam::123456789012:role/service-role/test-exec-role",
"Handler": "lambda.lambda_handler",
"CodeSize": 934,
"Description": "",
"Timeout": 3,
"LastModified": "2020-11-03T11:26:52.329+0000",
"CodeSha256": "MIcbKaalHpg1Ln2pWtxnooV+8uJif7yZNaZI1dM7lw0=",
"Version": "$LATEST",
"VpcConfig": {},
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "bad5c0cd-da0d-47f5-8b55-9e7b4b38a112",
"State": "Active",
}
#Si vous souhaitez supprimer la fonction Lambda enregistrée
# $ aws lambda create-function --function-name=<Nom de la fonction>
Essayez d'appuyer sur la fonction test-function
enregistrée sur le cloud (dans ce cas, enregistrée dans l'environnement virtuel LocalStack) par la procédure ci-dessus.
#Exécuter des fonctions Lambda à l'aide de l'AWS CLI
# $ aws lambda invoke --function-name=<Nom de la fonction> <Nom du fichier journal>
$ laws lambda invoke --function-name='test-function' result.log
{
"StatusCode": 200,
"LogResult": "",
"ExecutedVersion": "$LATEST"
}
#S'il n'y a pas d'erreur, le fichier journal doit contenir la valeur de retour de la fonction d'entrée Lambda.
$ cat result.log
"Saved: s3://test-bucket/2020-11-03-12-40-58.txt"
# S3 (test-bucket)Vérifiez si le fichier est enregistré dans
$ laws s3 ls s3://test-bucket/
2020-11-03 21:40:58 43 2020-11-03-12-40-58.txt
#Vérifiez le contenu du fichier ci-dessus
$ laws s3 cp s3://test-bucket/2020-11-03-12-40-58.txt -
This file generated at 2020-11-03-12-40-58.
Ce qui précède explique comment créer un environnement simulé AWS à l'aide de LocalStack et comment créer un système WEB simple.
C'est tout pour cet article.
Recommended Posts