Sisällysluettelo – Johdanto: Miksi käyttää SAM:ia API:n käyttöönottoon? – Edellytykset: Asenna SAM CLI – Vaihe 1: Alusta SAM – Vaihe 2: Määritä API-päätepiste – Vaihe 3: Rakenna ja testaa paikallisesti – Vaihe 4: Ota API käyttöön – Vaihe 5: CI / CD Github-toiminnoilla – Päätelmä Johdanto: Miksi käyttää SAM:ia API:n käyttöönottoon? API:n käyttöönotto AWS Serverless Application Model (SAM) -sovelluksella on tehokas ja skaalautuva tapa pilvipohjaisille sovelluksille. Se yksinkertaistaa infrastruktuurin hallintaa, tarjoaa sisäänrakennetun SSL/TLS-tuen ja integroituu saumattomasti AWS-palveluihin, kuten CloudFormation, Lambda, S3, Route 53 ja CloudWatch. Palvelimetonta mallia hyödyntämällä kehittäjät voivat keskittyä sovelluslogiikan kirjoittamiseen, kun taas AWS hoitaa skaalauksen, suojauksen ja ylläpidon, mikä tekee siitä ihanteellisen ratkaisun moderneille, korkean käytettävyyden sovellusliittymille. Tämä opetusohjelma opastaa sinua vaihe vaiheelta, kuinka voit luoda yksinkertaisen API:n, ottaa sen käyttöön AWS CloudFormationin avulla SAM CLI:n kanssa ja sitten automatisoida käyttöönotot GitHub Actionsin avulla. Tässä on tarkempi kaavio tästä työnkulusta: Edellytykset AWS CLI ja SAM CLI asennettu. Node.js asennettu paikallista testausta varten. Docker -tili. GitHub Edellytykset: Asenna SAM CLI Ennen kuin siirryt opetusohjelmaan, varmista, että AWS SAM CLI on asennettu koneellesi. Alla on asennusvaiheet macOS:lle ja Windowsille: macOS:lle (jos ei ole jo asennettu): Asenna Homebrew /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" : Lisää AWS-hana ja asenna SAM CLI brew tap aws/tapbrew install aws-sam-cli Tarkista asennus komennolla sam --version Windowsille : Lataa SAM CLI -asennusohjelma Siirry ja lataa uusin Windows-asennusohjelma. viralliselle AWS SAM CLI -sivulle : Suorita asennusohjelma Kaksoisnapsauta ladattua tiedostoa ja seuraa ohjattua asennustoimintoa. .exe (jos sitä ei lisätä automaattisesti): Lisää SAM CLI polkuun Avaa Käynnistä-valikko ja etsi "Ympäristömuuttujat". Napsauta "Muokkaa järjestelmäympäristömuuttujia". Napsauta "Järjestelmän ominaisuudet" -kohdassa "Ympäristömuuttujat" -painiketta. Etsi Järjestelmämuuttujat-kohdasta ja napsauta Muokkaa. Path Lisää hakemisto, johon SAM CLI asennettiin (esim. ). C:\Program Files\Amazon\AWS SAM CLI\bin : Avaa komentokehote ja suorita Tarkista asennus sam --version Vaihe 1: Alusta SAM CLI Luo koneellesi uusi arkisto: mkdir aws-serverless-api Siirry hakemistoon: cd aws-serverless-api sitten sinulta kysytään muutamia vaihtoehtoja. Tässä on asetelmani: Alusta uusi SAM-sovellus: sam init Valitse "1 – AWS Quick Start Templates". Valitse ottaaksesi Lambda-tuettu palvelimeton API käyttöön API Gatewayssa. "7 – Palvelimeton API" Valitse "Node.js 20.x" Valitse tai Ei röntgenjäljitykseen, koska haluamme vähentää kustannuksia, ja tämä on vain yksinkertainen Hello World -esimerkki. Jos teet monimutkaisia sovellusliittymiä, jotka hakevat eri palveluita, haluat ehkä ottaa sen käyttöön virheenkorjauksen helpottamiseksi. "N" Valitsen myös cloudwatch-seurantaan, koska emme tarvitse suorituskyvyn analytiikkaa tässä Hello World -esimerkissä. "N":n Myös lambda-lokin json-muodolle, koska tämä on vain Hello World -esimerkki. "N" Siirrytään nyt cd hakemistoon, jonka loi; Päätin nimetä projektini joten mennään: sam init sam-hello-world cd sam-hello-world Avaa sitten projekti VSCode- - kun avaat projektin VSCodessa tai suosikki-IDE:ssä, sinun pitäisi jo nähdä paljon luotuja tiedostoja. code . Luotujen tiedostojen ymmärtäminen Tässä on mitä kukin luotu tiedosto tekee: sam init – Määrittää API-yhdyskäytäväsi, Lambdan ja muut AWS-resurssit. **template.yaml** – Sisältää mallilambda-toimintokäsittelijöitä. **src/handlers/** – Esimerkkitestitapahtumat paikallista testausta varten. **events/** – Hallitsee Node.js:n Lambda-toimintojen riippuvuuksia. **package.json** – Standardiprojektin asennustiedostot. **.gitignore** , **README.md** . Muokkaamme ja poistamme joitakin näistä tiedostoista niin, että ne sopivat hyvin yksinkertaiseen "hello world" -sovellusliittymäämme Vaihe 2: Määritä API-päätepiste Avaa nyt ja korvaa nykyiset Lambda-funktion määritelmät seuraavilla: template.yaml AWSTemplateFormatVersion: "2010-09-09" Transform: AWS::Serverless-2016-10-31 Description: AWS SAM template for deploying Node.js/Express API to Lambda Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: Handler: src/app.lambdaHandler Runtime: nodejs20.x Events: HelloWorld: Type: Api Properties: Path: / Method: GET Tämä määrittää API-juuressa yhden reitin, joka on GET-pyyntö Päivitä lambda-toiminto Luodaan -hakemistoon tiedosto nimeltä /src app.js Kirjoitetaan tiedostoon funktio, joka tulostaa hello world reitiltämme: src/app.js exports.lambdaHandler = async (event) => { return { statusCode: 200, body: JSON.stringify({ message: "Hello, World!" }) }; }; Poista tarpeettomat tiedostot Poistetaan nyt ylimääräiset käsittelijät ja tapahtumat, jotka loi vaiheessa 1. sam init Avaa terminaali projektihakemistossa ja : suorita nämä komennot rm -rf src/handlers/get-all-items.mjs src/handlers/get-by-id.mjs src/handlers/put-item.mjs rm -rf events/ Vaihe 3: Rakenna ja testaa paikallisesti Avaa pääte projektihakemistossa ja noudata seuraavia ohjeita: : Rakenna sovellus sinun pitäisi nähdä seuraavanlainen tulos: sam build : Käynnistä paikallinen API-palvelin – Huomaa, että sinulla on oltava asennettuna jotta voit suorittaa tämän paikallisesti. Kun se onnistuu, sinun pitäisi nähdä sovellusliittymäämme varten luotu säilö Dockerin työpöydällä. sam local start-api Docker, Testaa päätepiste avaamalla selain tai käyttämällä päätelaitteen toimintoa: curl curl [http://127.0.0.1:3000/](http://127.0.0.1:3000/) Jos näet JSON:n palautetun päätepisteestämme, olet onnistuneesti käynnistänyt sovellusliittymän paikallisesti! 🚀 Vaihe 4: Ota API käyttöön : Nyt kun olemme vahvistaneet, että API toimii paikallisesti, otetaan se käyttöön AWS:ssä käyttämällä Pakkaa ja ota API käyttöön SAMin avulla sam deploy --guided Tämän ohjatun käyttöönoton avulla voit: 1. Valitse pinon nimi; minun on sam-hello-world 2. Valitse AWS-alue; minun on us-east-1 3. Vahvista muutokset ennen käyttöönottoa; valitsin Y 4. Salli SAM-CLI-roolin luonti, Y 5. Poista palautus käytöstä, valitse haluamme työkalun puhdistavan kaikki epäonnistuneet resurssit N 6. HelloWorldFunctionilla ei ole todennusta; onko tämä ok? Tätä opetusohjelmaa varten Y 7. Tallenna argumentit asetustiedostoon Y 8. Asetustiedosto samconfig.toml 9. SAM-määritysympäristö — jätä tämä oletusarvoksi Jos käyttöönotto onnistui, sinun pitäisi nähdä onnistuneesti luodut resurssit seuraavasti: Kun käyttöönotto onnistuu, ja etsi API Gateway -palvelu. Siirry API-asetuksiin, kopioi verkkotunnuksesi, liitä se selainikkunan URL-syötteeseen ja lisää "/Prod" URL-osoitteesi loppuun päästäksesi käyttöön sovellusliittymän päätepiste. kirjaudu sisään AWS-tilillesi URL-osoitteeni näyttää tältä: Voit myös etsiä Lambdaa AWS-konsolissa nähdäksesi käyttöönotetun palvelimettoman Lambda-toiminnon, jossa tälle päätepisteelle kirjoittamamme koodi elää. Sinun pitäisi myös nähdä luotu S3-ämpäri, joka sisältää koodinipun. Nyt kun olemme ottaneet sovellusliittymämme käyttöön onnistuneesti, automatisoidaan tämä prosessi GitHubilla, jotta aina kun haluamme kehittää sovellusliittymäämme, käyttöönotto voi käynnistyä automaattisesti vain sitoutumalla PÄÄ- tai MASTER-haaraan. Vaihe 5: CI/CD Github-toiminnoilla Alusta Git Repo ja siirrä pääkonttoriisi Ensin alustetaan projektimme hakemistossa oleva git-arkisto komennolla Sitten lisätään nämä tiedostot , koska emme halua sitoa niitä. git init .gitignore echo "node_modules/\n.aws-sam/\nsamconfig.toml" >> .gitignore Nyt voimme turvallisesti lavastella kaikki projektin tiedostot: ja tee sitten ensimmäinen sitoumuksemme: git add . git commit -m "Initial commit - AWS SAM API setup" Tämä seuraava vaihe olettaa, että sinulla on GitHub CLI asennettuna – Tämä vaihe on, jotta voimme luoda GitHub-repon nykyisestä hakemistostamme: gh repo create aws-sam-cli-tutorial --public --source=. --remote=origin Jos sinulla ei ole GitHub CLI:tä, voit luoda repon manuaalisesti GitHubissa ja osoittaa sitten hakemiston repollesi tällä komennolla: git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPO_NAME.git Työnnämme lopuksi koodimme GitHub git push -u origin master Määritä GitHub-toiminnot CI:lle/CD:lle Luodaan GitHub-toimintojen työnkulkutiedosto: mkdir -p .github/workflows touch .github/workflows/deploy.yml Avaa kyseinen -tiedosto vscodessa ja liitä seuraavat yaml-asetukset: deploy.yml name: Deploy API to AWS CloudFormation on: push: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 - name: Install AWS SAM CLI uses: aws-actions/setup-sam@v2 - name: Configure AWS CLI uses: aws-actions/configure-aws-credentials@v2 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Build and Deploy API run: | sam build sam deploy \ --stack-name sam-hello-world \ --s3-bucket ${{ secrets.AWS_S3_BUCKET }} \ --capabilities CAPABILITY_IAM \ --region ${{ secrets.AWS_REGION }} \ --no-confirm-changeset \ --no-fail-on-empty-changeset Tässä .yaml-tiedostossa automaattista käyttöönottoa varten luotamme GitHubin AWS-Actions-tietovarastoon: asentaaksemme SAM CLI:n ja määrittääksemme valtuustietomme – nämä AWS-varastot voivat muuttua muutaman vuoden kuluessa, joten päivitä niitä tarvittaessa. https://github.com/orgs/aws-actions/repositories Siirrytään nyt osoitteeseen github.com – siirry arkistoihin, napsauta tätä projektia varten luomaamme arkistoa, siirry asetuksiin, toimintoihin ja näet tämän näytön, jossa voit lisätä ympäristön ja arkiston salaisuuksia. Haluamme lisätä arkiston salaisuudet: AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_REGION AWS_S3_BUCKET Saadaksesi nämä arvot, siirry AWS-konsoliisi. Alueelle haluat käyttää samaa aluetta, jonka otit käyttöön paikalliselta koneeltasi. Jos et ole varma alueesta, etsi pilvimuodostus ja etsi luomasi pino, napsauta sitä ja sinun pitäisi nähdä alue URL-osoitteessa. AWS_REGION Jos kyseessä etsi S3 AWS-konsolista ja valitse ryhmä, joka luotiin, kun otettiin käyttöön koneeltamme vaiheessa 4. Käytä tämän ryhmän tunnusta arvoasi. omani näkyy alla olevassa kuvakaappauksessa. on AWS_S3_BUCKET, Avaa ja IAM-palvelu AWS-konsolissa: AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY, Luo tästä IAM-käyttäjä, jos sinulla ei vielä ole sellaista, jolla on haluamasi käyttöoikeudet, ja lisää vähintään nämä käyttöoikeudet käyttäjälle: AWSLambdaFullAccess IAMFullAccess AmazonS3FullAccess CloudFormationFullAccess AmazonAPIGatewayAdministrator Voit myös lisätä vain , jos olet tyytyväinen siihen. Tämän jälkeen haluamme luoda tälle käyttäjälle pääsyavaimen ja salaisuuden. Valitse pääsyavaimen käyttötapaukseksi CLI. Muista kopioida salaisuutesi, koska et voi nähdä sitä uudelleen. AdministratorAccessin Palaa nyt GitHubiin ja lisää arkiston salaisuudet: Okei, viimeinen vaihe on testata, että kaikki toimii! Päivitä app.js sanoaksesi jotain muuta; Vaihdoin omani muotoon "Mitä kuuluu, maailma!" exports.lambdaHandler = async (event) => { return { statusCode: 200, body: JSON.stringify({ message: "What up, World!" }), }; }; Työnnä sitten muutokset päähaaraasi. — varmista, että olet päähaaralla, kun painat. git add . git commit -m 'updated message' git push Sinun pitäisi nähdä GitHub-reposi toiminto suoritettuna ja ottaa käyttöön onnistuneesti: Palaa lopuksi selaimeesi ja liitä URL-osoite määrittämästämme API-yhdyskäytävästä. Omani on: – ja vahvista, että viesti on muutettu. https://tt40c6vgm3.execute-api.us-east-1.amazonaws.com/Prod Johtopäätös Onnittelut! Loit juuri CI/CD-käyttöönottoputkiston palvelimettomalle AWS-pinolle; nyt voit ryhtyä rakentamaan API:si hyödyllisten palveluiden avulla. Kerro minulle, oliko tämä artikkeli hyödyllinen tai jos sinulla on kysyttävää tai parannusehdotuksia!