AWS-praksis: Fra global arkitektur til Serverless-applikasjoner, forbedre dine skyferdigheter fullstendig
AWS-praksis: Fra global arkitektur til Serverless-applikasjoner, forbedre dine skyferdigheter fullstendig
AWS (Amazon Web Services) har blitt ledende innen cloud computing, og både store bedrifter og oppstartsbedrifter bruker de forskjellige tjenestene som AWS tilbyr for å bygge og distribuere applikasjoner. Fra diskusjoner på X/Twitter kan vi se at AWS involverer et bredt spekter av områder, inkludert infrastruktur, sikkerhet, AI/ML, DevOps og Serverless-applikasjoner. Denne artikkelen vil kombinere disse diskusjonene for å gi deg en mer omfattende AWS-praksisguide som hjelper deg med å forbedre dine skyferdigheter og bedre utnytte AWS-plattformen.
1. Forstå AWS global infrastruktur: Nøkkelen til høy tilgjengelighet og feiltoleranse
Å mestre AWS sin globale infrastruktur er grunnlaget for å bygge applikasjoner med høy tilgjengelighet og feiltoleranse. AWS sin globale infrastruktur består av følgende nøkkelkomponenter:
- Region (Område): Et uavhengig geografisk område, hvert område inneholder flere Availability Zones. Når du velger et område, må du vurdere forsinkelse, samsvarskrav og kostnader.
- Availability Zone (Tilgjengelighetssone): En isolert plassering i et område, hver tilgjengelighetssone består av ett eller flere datasentre. Ved å distribuere applikasjoner i forskjellige tilgjengelighetssoner kan du forbedre feiltoleransen.
- Edge Location (Kantplassering): Distribuerte hurtigservere over hele verden som brukes til å akselerere innholdsdistribusjon. AWS CloudFront bruker kantplasseringer til å cache statisk og dynamisk innhold, og forbedrer brukeropplevelsen.
Praktiske tips:
- Distribusjon i flere tilgjengelighetssoner: Ved å distribuere kopier av applikasjonen i forskjellige tilgjengelighetssoner, kan du unngå at en enkelt tilgjengelighetssonefeil fører til at applikasjonen blir utilgjengelig.
- Velg riktig område: Velg riktig område basert på brukerens plassering og samsvarskrav.
- Bruk CloudFront for å akselerere innholdsdistribusjon: Bruk CloudFront til å cache statisk og dynamisk innhold, og forbedre brukeropplevelsen.
2. IAM beste praksis: Prinsippet om minimale rettigheter
Identity and Access Management (IAM) er kjernen i AWS-sikkerhet. IAM lar deg kontrollere hvem som har tilgang til AWS-ressursene dine, og hvilke handlinger de kan utføre. Kjernekonseptene i IAM inkluderer:
- Users (Brukere): Representerer enkeltpersoner eller applikasjoner som brukes til å få tilgang til AWS-ressurser.
- Roles (Roller): Kan tildeles AWS-tjenester eller EC2-instanser, slik at de kan få tilgang til andre AWS-ressurser.
- Groups (Grupper): Brukes til å organisere brukere for å forenkle rettighetsadministrasjon.
- Policies (Retningslinjer): Definerer tillatelsene til brukere, roller eller grupper.
Beste praksis:
- Prinsippet om minimale rettigheter (Least Privilege): Gi bare brukeren eller rollen de minste tillatelsene som kreves. Unngå å bruke
AdministratorAccess-policyen, du bør opprette egendefinerte policyer basert på faktiske behov. - Bruk roller i stedet for IAM-brukere: Prøv å bruke roller til å gi EC2-instanser eller Lambda-funksjoner tillatelse til å få tilgang til andre AWS-ressurser, og unngå å lagre Access Key ID og Secret Access Key i koden.
- Aktiver MFA (Multi-Factor Authentication): Aktiver MFA for alle IAM-brukere for å forbedre kontosikkerheten.
- Reviser IAM-tillatelser regelmessig: Reviser IAM-tillatelser regelmessig for å sikre at det ikke er noen overautorisasjon.
Eksempelpolicy:
Følgende policy lar brukere utføre GetObject- og PutObject-operasjoner i us-east-1-regionens S3-lagringsbøtte my-bucket.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "us-east-1"
}
}
}
]
}
3. DevOps-automatisering: Bruk av Bash-skript og GitHub Actions
Diskusjoner på X/Twitter nevnte DevOps Bash-skriptrepo og GitHub Actions, som er viktige verktøy for å implementere DevOps-automatisering.
- Bash-skript: Bash-skript kan brukes til å automatisere ulike DevOps-oppgaver, for eksempel å distribuere applikasjoner, konfigurere servere, overvåke systemer osv.
- GitHub Actions: GitHub Actions er et CI/CD-verktøy som automatisk kan bygge, teste og distribuere applikasjoner.
Praktiske tips:
- Bruk Bash-skript til å automatisere vanlige oppgaver: For eksempel kan du bruke Bash-skript til å automatisk distribuere Lambda-funksjoner eller EC2-instanser.
- Bruk GitHub Actions til å bygge CI/CD-pipelines: Du kan bruke GitHub Actions til å automatisk bygge, teste og distribuere applikasjoner.
- Versjonskontroll: Lagre Bash-skript og GitHub Actions-konfigurasjoner i et versjonskontrollsystem, for eksempel Git.
Eksempel på GitHub Actions-arbeidsflyt:
Følgende GitHub Actions-arbeidsflyt vil automatisk bygge, teste og distribuere en Lambda-funksjon hver gang kode sendes til main-grenen.
name: Deploy Lambda Function
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm install
- run: npm run build
- uses: actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- run: aws lambda update-function-code --function-name my-lambda-function --zip-file fileb://dist/lambda.zip
4. Serverless-applikasjoner: AWS Lambda + S3 + DynamoDBDiskusjoner på X/Twitter nevnte et eksempel på å bygge en Serverless X (Twitter) Quote Bot ved hjelp av AWS Lambda, S3 og DynamoDB. Dette viser kraften i serverless arkitektur.
- AWS Lambda: En serverless databehandlingstjeneste som kan kjøre kode uten å administrere servere.
- Amazon S3: En objektlagringstjeneste for lagring av ulike typer data.
- Amazon DynamoDB: En NoSQL-databasetjeneste for lagring av strukturerte og semistrukturerte data.
Trinn for å bygge en Serverless applikasjon:
- Velg passende utløser: Velg hendelsen som utløser Lambda-funksjonen, for eksempel HTTP-forespørsler, S3-objektopplasting, DynamoDB-dataoppdateringer osv.
- Skriv Lambda-funksjonskode: Skriv Lambda-funksjonskode for å håndtere utløserhendelser og utføre de tilsvarende operasjonene.
- Konfigurer IAM-rolle: Konfigurer IAM-rollen for å gi Lambda-funksjonen tillatelse til å få tilgang til andre AWS-ressurser, for eksempel S3 og DynamoDB.
- Distribuer Lambda-funksjon: Distribuer Lambda-funksjonen til AWS.
- Test Lambda-funksjon: Test Lambda-funksjonen for å sikre at den fungerer som den skal.
Fordeler med Serverless applikasjoner:
- Ingen serveradministrasjon: Du trenger ikke å administrere servere, noe som reduserer driftsbyrden.
- Automatisk skalering: Skalerer automatisk basert på forespørselsvolum, uten manuell konfigurasjon.
- Betal etter behov: Betal bare for databehandlingsressursene du faktisk bruker, noe som reduserer kostnadene.
5. AI/ML-applikasjoner: Bedrock og LLM-praksis
Diskusjoner på X/Twitter nevnte også AWS AI Labs LLM (Large Language Model) forskningsinternship og bruken av Bedrock. AWS tilbyr et bredt spekter av AI/ML-tjenester som kan hjelpe deg med å bygge ulike AI/ML-applikasjoner.
- Amazon Bedrock: En tjeneste som tilbyr en rekke høyytelses grunnmodeller fra ledende AI-selskaper.
- AWS AI Lab: Fokuserer på AI/ML-forskning og tilbyr internshipmuligheter for studenter.
Praktiske retninger:
- Bruk Bedrock til å bygge AI-applikasjoner: Du kan bruke grunnmodellene som tilbys av Bedrock til å bygge ulike AI-applikasjoner, for eksempel tekstgenerering, bildegjenkjenning, talegjenkjenning osv.
- Følg med på LLM-minne og kontinuerlig læring: Følg med på de siste forskningsfremskrittene innen LLM, for eksempel LLM-minne og kontinuerlig læring, som kan hjelpe deg med å bygge smartere AI-applikasjoner.
6. Sikkerhet og samsvar: Følg med på AWS-tjenesteavbrudd
Diskusjoner på X/Twitter nevnte AWS-tjenesteavbrudd, noe som minner oss om å være oppmerksomme på sikkerhet og samsvar på AWS.
- Multi-region distribusjon: Distribuer applikasjoner i forskjellige AWS-regioner for å unngå at en enkelt regionsfeil gjør applikasjonen utilgjengelig.
- Overvåking og varsling: Sett opp overvåking og varsling for å oppdage problemer i tide og iverksette tiltak.
- Sikkerhetskopiering og gjenoppretting: Sikkerhetskopier data regelmessig og test gjenopprettingsprosessen.
- Samsvar: Forstå og overhold relevante samsvarskrav, for eksempel GDPR, HIPAA osv.





