AWS Lambda is een service van Amazon Web Services (AWS) waarmee je je code kunt uitvoeren als reactie op gebeurtenissen zonder servers te beheren. Het is een eenvoudige en schaalbare manier om applicaties te bouwen.
In deze zelfstudie zal ik je laten zien hoe je AWS Lambda kunt gebruiken met drie andere services:
-
Amazon S3 om bestanden, afbeeldingen en video’s op te slaan
-
Amazon Simple Notification Service (SNS) om meldingen te verzenden
-
Amazon EventBridge om berichten in te plannen
We zullen alles stap voor stap doornemen.
Tegen het einde, met de integratie van de andere services, heb je een Goal Manifestation Quote App gebouwd die willekeurige inspirerende berichten verstuurt om je gemotiveerd en gefocust te houden op je doelen.
Vereisten
-
Een AWS-account: Als je er geen hebt, meld je dan hier aan.
-
Een GitHub-repository: Dit is voor het opslaan van je broncode. Als je geen GitHub-account hebt, kun je er een maken hier.
-
Een geïntegreerde ontwikkelomgeving (IDE) zoals Visual Studio Code of Sublime Text.
-
Basiskennis van webontwikkeling en een programmeertaal naar keuze. Ik heb Python gebruikt voor deze tutorial.
Wat je zult leren
-
Hoe je een Amazon S3-bucket maakt
-
Hoe je Amazon Simple Notification Service (SNS) gebruikt
-
Hoe je Amazon Lambda gebruikt
-
Hoe Amazon EventBridge te gebruiken
Inhoudsopgave
Stap 1: Stel je ontwikkelomgeving in
In deze stap stel je alles in. Begin met inloggen op je AWS-account en installeer Python als je het nog niet op je IDE hebt.
Stap 2: Maak een Amazon Simple Storage Service (S3)
Voordat we beginnen met het maken van een S3-bucket, laten we eerst begrijpen wat Amazon S3 is:
Amazon S3 (Simple Storage Service) is een service van Amazon waarmee je elke hoeveelheid of type gegevens, zoals foto’s, video’s, documenten en back-ups, kunt opslaan en openen wanneer je het nodig hebt.
Nu je de basis van wat Amazon S3 is kent, laten we terugkeren naar de tutorial.
Maak een S3-bucket
Er zijn verschillende manieren om een S3-bucket te creëren, maar voor deze tutorial gebruiken we de Ubuntu-opdrachtregel (CMD), je terminal of Amazon CloudShell, afhankelijk van waar je het meest vertrouwd mee bent.
-
Typ boto3 s3 in de webzoekbalk om een lijst van gerelateerde documentatie te bekijken.
-
Klik op het eerste resultaat.
- Wanneer de documentatie geopend is, kopieer dan het eerste commando dat je ziet.
- Plak het in je CMD OF terminal naar keuze – maar vergeet niet om eerst “cd” naar de juiste directory te gaan.
- Scroll in de documentatie naar beneden en klik op “create_bucket.
-
Wanneer het geopend is, scroll dan naar “Request Syntax.” Kopieer de bucketnaam en de bucketconfiguratie.
-
Andere variabelen die in de verzoeksyntax zijn vermeld, zijn optioneel.
- Zorg ervoor dat je dit opslaat zodra dit gedaan is.
- Ga terug en roep het script aan:
#python3 je bestandsnaam
- Het uitvoeren van het script creëert automatisch een S3-bucket in je Amazon S3.
- Nu kun je naar de console gaan om te controleren of het is aangemaakt:
Upload bestanden
Met de aangemaakte bucket kunnen we nu bestanden uploaden via de console. Ik geloof dat er ook een programmatische manier is om bestanden te uploaden en te testen, maar ik heb nog niet alle methoden in de documentatie verkend.
Klik op de bucketnaam om doorgestuurd te worden naar de objectpagina. Hier zul je je bestanden uploaden voor opslag.
Klik op de Upload knop om een bestand te uploaden. Onthoud, we maken een Goal Manifestation Quote Applicatie.
Nu we een opslagbucket hebben ingesteld:
-
Open een tool zoals Google Drive, MS Word, WPS, of een andere documenteditor.
-
Schrijf de doelen op die je wilt bereiken.
-
Sla het bestand op in PDF- of DOCX-formaat.
-
Pak het document en upload het naar je Amazon S3.o
Om te controleren of het het juiste bestand is:
-
Navigeer naar het Machtigingen tabblad.
-
Scroll naar beneden naar Blokkeren van openbare toegang.
-
Klik op Bewerken en vink het vakje uit.
Zoals hierboven weergegeven, staat het momenteel ingesteld op “aan.” Schakel het uit om het “uit” te zetten.
-
Op dezelfde pagina met bucketinstellingen, wijzig het beleid.
-
Scroll naar beneden en je zult zien dat er een bucketbeleid automatisch is gegenereerd.
-
Ga verder en kopieer het beleid.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
- Ga terug naar de bucketbeleideditor en plak het beleid.
Zodra je deze stappen hebt voltooid, zal je object openbare toegang hebben.
Keer terug naar het Objecten tabblad en klik op de Object-URL hieronder:
Met deze URL is je upload nu zichtbaar.
Stap 3: Maak een Amazon Simple Notification Service (SNS)
SNS is een volledig beheerde berichtenservice die wordt aangeboden door AWS. Het maakt communicatie mogelijk tussen applicaties of rechtstreeks met gebruikers door meldingen te verzenden.
Volg deze stappen om een SNS te maken:
1. Log in op de AWS-beheerconsole
Ga vervolgens naar Amazon SNS. Navigeer naar het SNS-dashboard en selecteer Topics in het menu aan de linkerkant.
Om een onderwerp te maken:
-
Klik op Onderwerp maken.
-
Kies een Onderwerptype: Standaard (standaard) of FIFO (voor geordende berichten).
-
Voer een Naam in voor uw onderwerp. (bijvoorbeeld,
MijnEersteSNSTopic
). -
Configureer optionele instellingen zoals versleuteling, bezorgingspogingen opnieuw proberen, of tags.
-
Klik op Onderwerp maken.
2. Voeg Abonnementen toe:
Zodra het onderwerp is aangemaakt, klik erop om de details pagina te openen. Selecteer het Abonnementen tabblad.
Klik op Abonnement maken en kies:
-
Protocol kan zijn Email, SMS, HTTP/S, Lambda, of SQS.
-
Endpoints zoals e-mailadres, telefoonnummer, of URL.
Klik op Abonnement maken.
3. Bevestig het Abonnement:
Als je e-mail of SMS hebt geselecteerd, wordt er een bevestigingslink of code naar het opgegeven eindpunt gestuurd. Volg de instructies om de inschrijving te bevestigen.
Nu we dit hebben gedaan, laten we een Amazon Lambda-functie maken die de SNS zal activeren zodat het bericht naar je e-mailadres wordt gestuurd.
Stap 4: Maak een IAM-beleid
Dit beleid is gemaakt om Amazon Lambda te autoriseren om het evenement te activeren en ervoor te zorgen dat CloudWatch automatisch wordt geactiveerd om de gebeurtenissen van de toepassing te monitoren.
Volg deze stappen om een beleid te maken:
1. Log in op de AWS-beheerconsole.
In het menu aan de linkerkant, selecteer Beleid. Daarna:
-
Klik op Beleid maken.
-
Kies het Visueel tabblad en selecteer de SNS service.
-
Klik vervolgens op het Kiezen tabblad om een aangepast beleid te maken.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:REGION:ACCOUNT_ID:goal_topic"
}
]
}
Vervang vervolgens de volgende aanduidingen met jouw informatie:
-
regio
: Jouw AWS-regio (bijvoorbeeld,us-east-1
). -
account-id
: Jouw AWS-account-ID. -
topic-name
: Uw SNS-onderwerpnaam.
2. Beleid bekijken en maken:
U kunt dit doen door de volgende stappen te volgen:
-
Klik op de knop Beoordelen.
-
Geef uw beleid een Naam (bijvoorbeeld,
LambdaSNSPolicy
), en eventueel, een Beschrijving. -
Klik op Beleid maken.
3. Beleid koppelen aan de Lambda-uitvoeringsrol
Nu moet u het beleid koppelen aan uw Lambda-uitvoeringsrol. Volg hiervoor deze stappen:
-
Ga naar de Rollen sectie in de IAM-console.
-
Zoek naar en selecteer de uitvoeringsrol.
-
Zoek vervolgens naar het beleid dat u zojuist heeft gemaakt en selecteer het.
-
Klik op Beleid koppelen.
Beide beleidsregels worden automatisch gekoppeld.
Stap 5: Maak een Amazon Lambda-functie
Amazon Lambda is een service van AWS waarmee je code kunt uitvoeren zonder servers te beheren. Je uploadt je code en Lambda draait en schaalt deze automatisch wanneer dat nodig is.
Volg deze stappen om een Amazon Lambda-functie te maken:
1. Log in op de AWS Management Console:
Navigeer naar AWS Lambda.
2. Maak een functie:
Klik op de Aanmaakfunctie en kies de optie Vanaf nul maken.
Vul de details in:
-
Functienaam: Voer een unieke naam in (bijvoorbeeld,
SNSLambdaFunction
). -
Runtime: Selecteer de runtime (bijvoorbeeld, Python, Node.js, Java, enzovoort).
- Rol: Kies of maak een rol. Als je al een rol hebt, selecteer dan Gebruik een bestaande rol. Anders, selecteer Maak een nieuwe rol met basis Lambda-machtigingen.
- Klik op de Maak functie-knop.
3. Plak de code in:
Ga op de pagina van de Lambda-functie naar het Configuratie tabblad:
Vergeet niet, we proberen een citaat op te halen. Ik zal de ARN van het onderwerp dat we hier hebben gemaakt toevoegen en mijn API-sleutels opnemen. Maar voor deze tutorial zal ik de API rechtstreeks gebruiken om de gegevens op te halen.
4. Schrijf de Lambda Code:
Ga naar het Code-tabblad in je Lambda-functie. Schrijf of plak vervolgens de code vanuit je IDE om de inkomende SNS-berichten te verwerken.
Voorbeeld:
Dit is de code:
import os
import json
import urllib.request
import boto3
def fetch_random_quote():
"""
Fetches a random quote from the ZenQuotes API.
"""
api_url = "https://zenquotes.io/api/random"
try:
with urllib.request.urlopen(api_url) as response:
data = json.loads(response.read().decode())
if data and isinstance(data, list):
# Formatteer het citaat en de auteur
quote = data[0].get("q", "No quote available")
author = data[0].get("a", "Unknown author")
return f'"{quote}" - {author}'
else:
return "No quote available."
except Exception as e:
print(f"Error fetching random quote: {e}")
return "Failed to fetch quote."
def lambda_handler(event, context):
"""
AWS Lambda handler function to fetch a random quote and publish it to an SNS topic.
"""
# Haal de SNS-onderwerp ARN op uit omgevingsvariabelen
sns_topic_arn = os.getenv("SNS_TOPIC_ARN")
sns_client = boto3.client("sns")
# Haal een willekeurig citaat op
quote = fetch_random_quote()
print(f"Fetched Quote: {quote}")
# Publiceer het citaat naar SNS
try:
sns_client.publish(
TopicArn=sns_topic_arn,
Message=quote,
Subject="Daily Random Quote to help you stay motivated and inspired to achieve your goals",
)
print("Quote published to SNS successfully.")
except Exception as e:
print(f"Error publishing to SNS: {e}")
return {"statusCode": 500, "body": "Error publishing to SNS"}
return {"statusCode": 200, "body": "Quote sent to SNS"}
5. Opslaan:
Klik op de implementatieknop om op te slaan.
6. Test je Lambda-functie:
Ga naar het Test-tabblad en maak een nieuw testevent aan.
Sla het vervolgens op en voer de test uit. Als het succesvol is, wordt er een bericht verzonden:
Dit betekent dat het bericht voor je is aangemaakt
Tenslotte, controleer je e-mail of sms, afhankelijk van het eindpunt dat je hebt gebruikt voor deze tutorial. In mijn geval heb ik e-mail gebruikt.
Stap 6: Maak een EventBridge
Amazon EventBridge is een service die je helpt bij het verbinden van applicaties en AWS-services zoals Amazon SNS en Amazon Lambda.
Volg deze stappen om een Amazon EventBridge-regel te maken:
1. Ga naar EventBridge:
In de zoekbalk, typ EventBridge en selecteer het uit de services lijst.
2. Maak een regel aan:
In de EventBridge-console, klik op Regels in het linkerpaneel. Klik vervolgens op de knop Regel maken.
3. Stel de regeldetails in:
-
Naam: Voer een unieke naam in voor uw regel.
-
Beschrijving (optioneel): Voeg een beschrijving toe om uit te leggen wat deze regel doet.
4. Kies de gebeurtenisbus:
Selecteer de Standaard gebeurtenisbus (of een andere gebeurtenisbus als u er een hebt gemaakt).
5. Definieer het gebeurtenispatroon of schema:
Voor Gebeurtenispatroon:
-
Kies een AWS-service als de gebeurtenisbron.
-
Selecteer het specifieke gebeurtenistype (bijvoorbeeld, een S3-bestand uploaden of een wijziging in de toestand van een EC2-instantie).
Voor Schema:
- Kies de Schema-optie om de regel uit te voeren op een vast interval (bijvoorbeeld, elke 5 minuten).
- Klik op doorgaan. Dit brengt u naar de specifieke details pagina waar:
-
Scroll naar beneden en klik op de cron-planner. De cron-planner geeft aan hoe laat het bericht zal worden verzonden.
-
Selecteer “Uit” voor de optie van het flexibele tijdvenster.
-
Controleer de regeldetails om te bevestigen dat alles correct is.
-
Klik op de knop “Volgende” om door te gaan naar de Doel pagina.
De afbeelding hierboven toont wanneer de berichten worden verzonden.
- Op de Doel pagina, selecteer AWS Lambda om uw functie aan te roepen.
- Scroll naar beneden om aan te roepen en kies de functie die u heeft gemaakt.
- Klik op de “Volgende” knop om verder te gaan. Dit brengt u naar de instellingenpagina. Onder de machtigingen sectie, selecteer “Gebruik bestaande regel.”
- Tenslotte, ga naar de review en maak een schema aan:
- De volgende pagina toont u alle details:
Het gebruik van EventBrige maakt een scheduler voor de gebruikers.
Stap 7: Upload uw code
Tenslotte, upload je code naar GitHub en voeg de juiste documentatie toe om uit te leggen hoe de code werkt.
Bekijk deze documentatie als je niet weet hoe: Project uploaden naar GitHub.
Conclusie
Als je al deze stappen hebt gevolgd, heb je een Goal Manifestation Quote App gemaakt met behulp van AWS Lambda, Amazon S3, Amazon SNS en Amazon EventBridge. Deze app haalt motiverende quotes op en stuurt ze op een schema naar abonnees.
Je kunt de repository link hier vinden.
Voel je vrij om je voortgang te delen of vragen te stellen als je ergens tegenaan loopt.
Als je dit artikel nuttig vond, deel het dan met anderen.
Blijf op de hoogte van mijn projecten door me te volgen op Twitter, LinkedIn en GitHub
Bedankt voor het lezen 💖.
Disclaimer:
De bronnen die in dit artikel worden getoond, inclusief de S3-bucket en de ARN ervan, zijn verwijderd en bestaan niet meer. De details die zichtbaar zijn in de schermafbeeldingen worden uitsluitend gebruikt ter illustratie.
Source:
https://www.freecodecamp.org/news/how-to-build-an-application-with-aws-lambda/