AWS Practice: From Global Architecture to Serverless Applications, Comprehensive Improvement of Your Cloud Skills
AWS 实践:从全局架构到 Serverless 应用,全方位提升你的云技能
AWS (Amazon Web Services) è diventato leader nel campo del cloud computing, e sia le grandi aziende che le startup stanno sfruttando i vari servizi offerti da AWS per costruire e distribuire applicazioni. Dalle discussioni su X/Twitter, possiamo vedere che AWS coinvolge un'ampia gamma di aree, tra cui infrastruttura, sicurezza, AI/ML, DevOps e applicazioni Serverless. Questo articolo combinerà queste discussioni per fornire una guida pratica più completa su AWS, aiutandoti a migliorare le tue competenze cloud e a utilizzare meglio la piattaforma AWS.
1. Comprensione dell'infrastruttura globale di AWS: la chiave per l'alta disponibilità e la tolleranza agli errori
La padronanza dell'infrastruttura globale di AWS è la base per la costruzione di applicazioni ad alta disponibilità e tolleranti agli errori. L'infrastruttura globale di AWS è composta dai seguenti componenti chiave:
- Region (Regione): Area geografica indipendente, ogni regione contiene più Availability Zone. Quando si seleziona una regione, è necessario considerare la latenza, i requisiti di conformità e i costi.
- Availability Zone (Zona di disponibilità): Posizione isolata all'interno di una regione, ogni zona di disponibilità è composta da uno o più data center. La distribuzione di applicazioni in diverse zone di disponibilità può migliorare la tolleranza agli errori.
- Edge Location (Sito periferico): Server di cache distribuiti in tutto il mondo, utilizzati per accelerare la distribuzione dei contenuti. AWS CloudFront utilizza i siti periferici per memorizzare nella cache contenuti statici e dinamici, migliorando l'esperienza utente.
Suggerimenti pratici:
- Distribuzione multi-Availability Zone: La distribuzione di copie dell'applicazione in diverse zone di disponibilità può evitare che un singolo guasto della zona di disponibilità renda l'applicazione non disponibile.
- Selezione della regione appropriata: Selezionare la regione appropriata in base alla posizione dell'utente e ai requisiti di conformità.
- Utilizzo di CloudFront per accelerare la distribuzione dei contenuti: Utilizzare CloudFront per memorizzare nella cache contenuti statici e dinamici, migliorando l'esperienza utente.
2. Best practice IAM: principio del minimo privilegio
Identity and Access Management (IAM) è il fulcro della sicurezza di AWS. IAM consente di controllare chi può accedere alle risorse AWS e quali azioni può eseguire. I concetti chiave di IAM includono:
- Users (Utenti): Rappresentano persone o applicazioni, utilizzati per accedere alle risorse AWS.
- Roles (Ruoli): Possono essere assegnati a servizi AWS o istanze EC2, consentendo loro di accedere ad altre risorse AWS.
- Groups (Gruppi): Utilizzati per organizzare gli utenti, facilitando la gestione delle autorizzazioni.
- Policies (Policy): Definiscono le autorizzazioni di utenti, ruoli o gruppi.
Best practice:
- Principio del minimo privilegio (Least Privilege): Concedere solo le autorizzazioni minime necessarie a utenti o ruoli. Evitare di utilizzare la policy
AdministratorAccess, è necessario creare policy personalizzate in base alle esigenze reali. - Utilizzo di Roles invece di utenti IAM: Cercare di utilizzare Roles per concedere alle istanze EC2 o alle funzioni Lambda l'autorizzazione ad accedere ad altre risorse AWS, evitando di memorizzare Access Key ID e Secret Access Key nel codice.
- Abilitazione di MFA (Multi-Factor Authentication): Abilitare MFA per tutti gli utenti IAM, migliorando la sicurezza dell'account.
- Audit periodico delle autorizzazioni IAM: Eseguire un audit periodico delle autorizzazioni IAM per garantire che non vi siano autorizzazioni eccessive.
Esempio di policy:
La seguente policy consente agli utenti di eseguire le operazioni GetObject e PutObject nel bucket S3 my-bucket nella regione us-east-1.
{
"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. Automazione DevOps: Utilizzo di script Bash e GitHub Actions
Le discussioni su X/Twitter hanno menzionato i repository di script DevOps Bash e GitHub Actions, che sono strumenti importanti per implementare l'automazione DevOps.
- Script Bash: È possibile utilizzare script Bash per automatizzare varie attività DevOps, come la distribuzione di applicazioni, la configurazione di server, il monitoraggio di sistemi, ecc.
- GitHub Actions: GitHub Actions è uno strumento CI/CD che può automatizzare la compilazione, il test e la distribuzione di applicazioni.
Consigli pratici:
- Utilizzare script Bash per automatizzare attività comuni: Ad esempio, è possibile utilizzare script Bash per distribuire automaticamente funzioni Lambda o istanze EC2.
- Utilizzare GitHub Actions per creare pipeline CI/CD: È possibile utilizzare GitHub Actions per compilare, testare e distribuire automaticamente le applicazioni.
- Controllo della versione: Archiviare gli script Bash e le configurazioni di GitHub Actions in un sistema di controllo della versione, come Git.
Esempio di flusso di lavoro GitHub Actions:
Il seguente flusso di lavoro GitHub Actions compila, testa e distribuisce automaticamente una funzione Lambda ogni volta che il codice viene inviato al branch main.
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. Applicazioni Serverless: AWS Lambda + S3 + DynamoDBLe discussioni su X/Twitter hanno menzionato un esempio di costruzione di un Serverless X (Twitter) Quote Bot utilizzando AWS Lambda, S3 e DynamoDB. Questo dimostra la potenza dell'architettura Serverless.
- AWS Lambda: Servizio di calcolo serverless che consente di eseguire codice senza gestire server.
- Amazon S3: Servizio di storage di oggetti per archiviare vari tipi di dati.
- Amazon DynamoDB: Servizio di database NoSQL per archiviare dati strutturati e semi-strutturati.
Passaggi per costruire un'applicazione Serverless:
- Scegliere il trigger appropriato: Scegliere l'evento che attiva la funzione Lambda, come una richiesta HTTP, un caricamento di oggetti S3, un aggiornamento di dati DynamoDB, ecc.
- Scrivere il codice della funzione Lambda: Scrivere il codice della funzione Lambda per gestire l'evento trigger ed eseguire le operazioni corrispondenti.
- Configurare il ruolo IAM: Configurare il ruolo IAM per concedere alla funzione Lambda l'autorizzazione ad accedere ad altre risorse AWS, come S3 e DynamoDB.
- Distribuire la funzione Lambda: Distribuire la funzione Lambda su AWS.
- Testare la funzione Lambda: Testare la funzione Lambda per assicurarsi che funzioni correttamente.
Vantaggi delle applicazioni Serverless:
- Nessuna gestione del server: Nessuna necessità di gestire i server, riducendo il carico operativo.
- Scalabilità automatica: Si scala automaticamente in base al volume delle richieste, senza necessità di configurazione manuale.
- Pagamento a consumo: Si paga solo per le risorse di calcolo effettivamente utilizzate, riducendo i costi.
5. Applicazioni AI/ML: Pratiche con Bedrock e LLM
Le discussioni su X/Twitter hanno anche menzionato le opportunità di stage di ricerca LLM (Large Language Model) presso l'AWS AI Lab e le applicazioni di Bedrock. AWS offre una vasta gamma di servizi AI/ML che possono aiutarti a costruire varie applicazioni AI/ML.
- Amazon Bedrock: Servizio che fornisce una gamma di modelli di base ad alte prestazioni di aziende AI leader.
- AWS AI Lab: Si concentra sulla ricerca AI/ML e offre opportunità di stage agli studenti.
Direzioni pratiche:
- Utilizzare Bedrock per costruire applicazioni AI: È possibile utilizzare i modelli di base forniti da Bedrock per costruire varie applicazioni AI, come la generazione di testo, il riconoscimento di immagini, il riconoscimento vocale, ecc.
- Concentrarsi sulla memoria e sull'apprendimento continuo di LLM: Prestare attenzione agli ultimi progressi nella ricerca di LLM, come la memoria e l'apprendimento continuo di LLM, può aiutarti a costruire applicazioni AI più intelligenti.
6. Sicurezza e conformità: Prestare attenzione alle interruzioni del servizio AWS
Le discussioni su X/Twitter hanno menzionato gli eventi di interruzione del servizio AWS, che ci ricordano di prestare attenzione alla sicurezza e alla conformità di AWS.
- Distribuzione multi-regione: Distribuire le applicazioni in diverse regioni AWS può evitare che un singolo guasto regionale renda l'applicazione non disponibile.
- Monitoraggio e avvisi: Impostare il monitoraggio e gli avvisi per identificare tempestivamente i problemi e adottare misure.
- Backup e ripristino: Eseguire regolarmente il backup dei dati e testare i processi di ripristino.
- Conformità: Comprendere e rispettare i requisiti di conformità pertinenti, come GDPR, HIPAA, ecc.





