Tutorial: Menyebarkan aplikasi tanpa server - Amazon CodeCatalyst

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial: Menyebarkan aplikasi tanpa server

Dalam tutorial ini, Anda mempelajari cara membangun, menguji, dan menyebarkan aplikasi tanpa server sebagai CloudFormation tumpukan menggunakan alur kerja.

Aplikasi dalam tutorial ini adalah aplikasi web sederhana yang mengeluarkan pesan 'Hello World'. Ini terdiri dari AWS Lambda fungsi dan Amazon API Gateway, dan Anda membangunnya menggunakan AWS Serverless Application Model (AWS SAM), yang merupakan perpanjangan dari AWS CloudFormation.

Prasyarat

Sebelum Anda memulai:

  • Anda membutuhkan CodeCatalyst ruang dengan AWS akun yang terhubung. Untuk informasi selengkapnya, lihat Menciptakan ruang.

  • Di ruang Anda, Anda memerlukan proyek kosong yang disebut:

    codecatalyst-cfn-project

    Gunakan opsi Mulai dari awal untuk membuat proyek ini.

    Untuk informasi selengkapnya, lihat Membuat proyek kosong di Amazon CodeCatalyst.

  • Dalam proyek Anda, Anda memerlukan CodeCatalyst lingkungan yang disebut:

    codecatalyst-cfn-environment

    Konfigurasikan lingkungan ini sebagai berikut:

    • Pilih jenis apa pun, seperti Non-produksi.

    • Hubungkan AWS akun Anda ke sana.

    • Untuk IAMperan Default, pilih peran apa pun. Anda akan menentukan peran yang berbeda nanti.

    Untuk informasi selengkapnya, lihat Menyebarkan ke Akun AWS dan VPCs.

Langkah 1: Buat repositori sumber

Pada langkah ini, Anda membuat repositori sumber di. CodeCatalyst Repositori ini digunakan untuk menyimpan file sumber tutorial, seperti file fungsi Lambda.

Untuk informasi selengkapnya tentang repositori sumber, lihat. Membuat repositori sumber

Untuk membuat repositori sumber
  1. Di CodeCatalyst, di panel navigasi, pilih Kode, lalu pilih Repositori sumber.

  2. Pilih Tambahkan repositori, lalu pilih Buat repositori.

  3. Dalam nama Repositori, masukkan:

    codecatalyst-cfn-source-repository
  4. Pilih Buat.

Anda sekarang telah membuat repositori yang disebut. codecatalyst-cfn-source-repository

Langkah 2: Buat AWS peran

Pada langkah ini, Anda membuat AWS IAM peran berikut:

  • Menyebarkan peran — Memberikan izin tindakan AWS CloudFormation tumpukan CodeCatalyst Deploy untuk mengakses AWS akun dan CloudFormation layanan tempat Anda akan menerapkan aplikasi tanpa server Anda. Tindakan AWS CloudFormation tumpukan Deploy adalah bagian dari alur kerja Anda.

  • Peran build - Memberikan izin tindakan CodeCatalyst build untuk mengakses AWS akun Anda dan menulis ke Amazon S3 tempat paket aplikasi tanpa server Anda akan disimpan. Tindakan build adalah bagian dari alur kerja Anda.

  • Peran tumpukan - Memberikan CloudFormation izin untuk membaca dan memodifikasi sumber daya yang ditentukan dalam AWS SAM template yang akan Anda berikan nanti. Juga memberikan izin untuk CloudWatch.

Untuk informasi selengkapnya tentang IAM peran, lihat IAMperan di Panduan AWS Identity and Access Management Pengguna.

catatan

Untuk menghemat waktu, Anda dapat membuat satu peran, yang disebut CodeCatalystWorkflowDevelopmentRole-spaceName peran, alih-alih tiga peran yang tercantum sebelumnya. Untuk informasi selengkapnya, lihat Membuat CodeCatalystWorkflowDevelopmentRole-spaceNameperan untuk akun dan ruang Anda. Pahami bahwa CodeCatalystWorkflowDevelopmentRole-spaceName peran tersebut memiliki izin yang sangat luas yang dapat menimbulkan risiko keamanan. Kami menyarankan Anda hanya menggunakan peran ini dalam tutorial dan skenario di mana keamanan kurang menjadi perhatian. Tutorial ini mengasumsikan Anda membuat tiga peran yang tercantum sebelumnya.

catatan

Peran eksekusi Lambda juga diperlukan, tetapi Anda tidak perlu membuatnya sekarang karena sam-template.yml file membuatnya untuk Anda ketika Anda menjalankan alur kerja di langkah 5.

Untuk membuat peran penerapan
  1. Buat kebijakan untuk peran tersebut, sebagai berikut:

    1. Masuk ke AWS.

    2. Buka konsol IAM di https://console.aws.amazon.com/iam/.

    3. Di panel navigasi, pilih Kebijakan.

    4. Pilih Buat kebijakan.

    5. Pilih JSONtab.

    6. Hapus kode yang ada.

    7. Tempel kode berikut:

      { "Version": "2012-10-17", "Statement": [{ "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:Describe*", "cloudformation:UpdateStack", "cloudformation:CreateChangeSet", "cloudformation:DeleteChangeSet", "cloudformation:ExecuteChangeSet", "cloudformation:SetStackPolicy", "cloudformation:ValidateTemplate", "cloudformation:List*", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }] }
      catatan

      Pertama kali peran digunakan untuk menjalankan tindakan alur kerja, gunakan wildcard dalam pernyataan kebijakan sumber daya dan kemudian cakup kebijakan dengan nama sumber daya setelah tersedia.

      "Resource": "*"
    8. Pilih Berikutnya: Tanda.

    9. Pilih Berikutnya: Tinjau.

    10. Dalam Nama, masukkan:

      codecatalyst-deploy-policy
    11. Pilih Buat kebijakan.

      Anda sekarang telah membuat kebijakan izin.

  2. Buat peran deploy, sebagai berikut:

    1. Di panel navigasi, pilih Peran, lalu pilih Buat peran.

    2. Pilih Kebijakan kepercayaan khusus.

    3. Hapus kebijakan kepercayaan kustom yang ada.

    4. Tambahkan kebijakan kepercayaan khusus berikut:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. Pilih Selanjutnya.

    6. Di Kebijakan izin, cari codecatalyst-deploy-policy dan pilih kotak centang.

    7. Pilih Selanjutnya.

    8. Untuk nama Peran, masukkan:

      codecatalyst-deploy-role
    9. Untuk deskripsi Peran, masukkan:

      CodeCatalyst deploy role
    10. Pilih Buat peran.

    Anda sekarang telah membuat peran penerapan dengan kebijakan kepercayaan dan kebijakan izin.

  3. Dapatkan peran penyebaranARN, sebagai berikut:

    1. Di panel navigasi, pilih Peran.

    2. Di kotak pencarian, masukkan nama peran yang baru saja Anda buat (codecatalyst-deploy-role).

    3. Pilih peran dari daftar.

      Halaman Ringkasan peran muncul.

    4. Di bagian atas, salin ARNnilainya.

    Anda sekarang telah membuat peran penerapan dengan izin yang sesuai, dan mendapatkannya. ARN

Untuk membuat peran build
  1. Buat kebijakan untuk peran tersebut, sebagai berikut:

    1. Masuk ke AWS.

    2. Buka konsol IAM di https://console.aws.amazon.com/iam/.

    3. Di panel navigasi, pilih Kebijakan.

    4. Pilih Buat kebijakan.

    5. Pilih JSONtab.

    6. Hapus kode yang ada.

    7. Tempel kode berikut:

      { "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:PutObject", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }] }
      catatan

      Pertama kali peran digunakan untuk menjalankan tindakan alur kerja, gunakan wildcard dalam pernyataan kebijakan sumber daya dan kemudian cakup kebijakan dengan nama sumber daya setelah tersedia.

      "Resource": "*"
    8. Pilih Berikutnya: Tanda.

    9. Pilih Berikutnya: Tinjau.

    10. Dalam Nama, masukkan:

      codecatalyst-build-policy
    11. Pilih Buat kebijakan.

      Anda sekarang telah membuat kebijakan izin.

  2. Buat peran build, sebagai berikut:

    1. Di panel navigasi, pilih Peran, lalu pilih Buat peran.

    2. Pilih Kebijakan kepercayaan khusus.

    3. Hapus kebijakan kepercayaan kustom yang ada.

    4. Tambahkan kebijakan kepercayaan khusus berikut:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. Pilih Selanjutnya.

    6. Di Kebijakan izin, cari codecatalyst-build-policy dan pilih kotak centang.

    7. Pilih Selanjutnya.

    8. Untuk nama Peran, masukkan:

      codecatalyst-build-role
    9. Untuk deskripsi Peran, masukkan:

      CodeCatalyst build role
    10. Pilih Buat peran.

    Anda sekarang telah membuat peran build dengan kebijakan kepercayaan dan kebijakan izin.

  3. Dapatkan peran buildARN, sebagai berikut:

    1. Di panel navigasi, pilih Peran.

    2. Di kotak pencarian, masukkan nama peran yang baru saja Anda buat (codecatalyst-build-role).

    3. Pilih peran dari daftar.

      Halaman Ringkasan peran muncul.

    4. Di bagian atas, salin ARNnilainya.

    Anda sekarang telah membuat peran build dengan izin yang sesuai, dan mendapatkannya. ARN

Untuk membuat peran tumpukan
  1. Masuk untuk AWS menggunakan akun tempat Anda ingin menyebarkan tumpukan Anda.

  2. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  3. Buat peran tumpukan sebagai berikut:

    1. Di panel navigasi, pilih Peran.

    2. Pilih Buat peran.

    3. Pilih Layanan AWS .

    4. Di bagian Use case, pilih CloudFormationdari daftar drop-down.

    5. Pilih tombol CloudFormationradio.

    6. Di bagian bawah, pilih Berikutnya.

    7. Menggunakan kotak pencarian, temukan kebijakan izin berikut, lalu pilih kotak centang masing-masing.

      catatan

      Jika Anda mencari kebijakan dan tidak muncul, pastikan untuk memilih Hapus filter dan coba lagi.

      • CloudWatchFullAccess

      • AWS CloudFormationFullAccess

      • IAMFullAccess

      • AWS Lambda_ FullAccess

      • Seorang mazonAPIGateway Administrator

      • AmazonS3 FullAccess

      • Amazon EC2ContainerRegistryFullAccess

      Kebijakan pertama memungkinkan akses CloudWatch untuk mengaktifkan rollback tumpukan saat alarm terjadi.

      Kebijakan yang tersisa memungkinkan AWS SAM untuk mengakses layanan dan sumber daya di tumpukan yang akan digunakan dalam tutorial ini. Untuk informasi selengkapnya, lihat Izin di Panduan AWS Serverless Application Model Pengembang.

    8. Pilih Selanjutnya.

    9. Untuk nama Peran, masukkan:

      codecatalyst-stack-role
    10. Pilih Buat peran.

  4. Dapatkan peran tumpukanARN, sebagai berikut:

    1. Di panel navigasi, pilih Peran.

    2. Di kotak pencarian, masukkan nama peran yang baru saja Anda buat (codecatalyst-stack-role).

    3. Pilih peran dari daftar.

    4. Di bagian Ringkasan, salin ARNnilainya. Anda membutuhkannya nanti.

    Anda sekarang telah membuat peran tumpukan dengan izin yang sesuai, dan Anda telah ARN memperolehnya.

Langkah 3: Tambahkan AWS peran ke CodeCatalyst

Pada langkah ini, Anda menambahkan build role (codecatalyst-build-role) dan deploy role (codecatalyst-deploy-role) ke koneksi CodeCatalyst akun di ruang Anda.

catatan

Anda tidak perlu menambahkan stack role (codecatalyst-stack-role) ke koneksi. Ini karena peran tumpukan digunakan oleh CloudFormation(not CodeCatalyst), setelah koneksi sudah dibuat antara CodeCatalyst dan AWS menggunakan peran penerapan. Karena peran tumpukan tidak digunakan oleh CodeCatalyst untuk mendapatkan akses ke AWS, itu tidak perlu dikaitkan dengan koneksi akun.

Untuk menambahkan peran build dan deploy ke koneksi akun
  1. Masuk CodeCatalyst, navigasikan ke ruang Anda.

  2. Pilih AWS akun. Daftar koneksi akun muncul.

  3. Pilih koneksi akun yang mewakili AWS akun tempat Anda membuat peran build dan deploy.

  4. Pilih Kelola peran dari konsol AWS manajemen.

    Halaman CodeCatalyst ruang Tambahkan IAM peran ke Amazon muncul. Anda mungkin perlu masuk untuk mengakses halaman.

  5. Pilih Tambahkan peran yang sudah Anda buat IAM.

    Daftar drop-down muncul. Daftar ini menampilkan semua IAM peran dengan kebijakan kepercayaan yang mencakup prinsip codecatalyst-runner.amazonaws.com dan codecatalyst.amazonaws.com layanan.

  6. Dalam daftar drop-down, pilihcodecatalyst-build-role, dan pilih Tambah peran.

  7. Pilih Tambah IAM peran, pilih Tambahkan peran yang ada yang telah Anda buat IAM, dan di daftar drop-down, pilihcodecatalyst-deploy-role. Pilih Tambahkan peran.

    Anda sekarang telah menambahkan peran build dan deploy ke ruang Anda.

  8. Salin nilai nama CodeCatalyst tampilan Amazon. Anda akan membutuhkan nilai ini nanti, saat membuat alur kerja Anda.

Langkah 4: Buat ember Amazon S3

Pada langkah ini, Anda membuat bucket Amazon S3 tempat Anda menyimpan file paket deployment aplikasi tanpa server .zip Anda.

Untuk membuat bucket Amazon S3
  1. Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Di panel utama, pilih Buat ember.

  3. Untuk nama Bucket, masukkan:

    codecatalyst-cfn-s3-bucket
  4. Untuk Wilayah AWS , pilih Wilayah. Tutorial ini mengasumsikan Anda memilih US West (Oregon) us-west-2. Untuk informasi tentang Wilayah yang didukung oleh Amazon S3, lihat titik akhir dan kuota Amazon Simple Storage Service di. Referensi Umum AWS

  5. Di bagian bawah halaman, pilih Buat ember.

Anda sekarang telah membuat ember yang disebut codecatalyst-cfn-s3-bucket di Wilayah AS Barat (Oregon) us-west-2.

Langkah 5: Tambahkan file sumber

Pada langkah ini, Anda menambahkan beberapa file sumber aplikasi ke repositori CodeCatalyst sumber Anda. hello-worldFolder berisi file aplikasi yang akan Anda gunakan. testsFolder berisi tes unit. Struktur folder adalah sebagai berikut:

. |— hello-world | |— tests | |— unit | |— test-handler.js | |— app.js |— .npmignore |— package.json |— sam-template.yml |— setup-sam.sh

.npmignore file

.npmignoreFile menunjukkan file dan folder npm mana yang harus dikecualikan dari paket aplikasi. Dalam tutorial ini, npm mengecualikan tests folder karena bukan bagian dari aplikasi.

Untuk menambahkan file.npmignore
  1. Buka CodeCatalyst konsol di https://codecatalyst.aws/.

  2. Pilih proyek Anda, codecatalyst-cfn-project

  3. Di panel navigasi, pilih Kode, lalu pilih Repositori sumber.

  4. Dari daftar repositori sumber, pilih repositori Anda,. codecatalyst-cfn-source-repository

  5. Di File, pilih Buat file.

  6. Untuk nama File, masukkan:

    .npmignore
  7. Di kotak teks, masukkan kode berikut:

    tests/*
  8. Pilih Komit, lalu pilih Komit lagi.

    Anda sekarang telah membuat file yang disebut .npmignore di root repositori Anda.

berkas package.json

package.jsonFile berisi metadata penting tentang proyek Node Anda seperti nama proyek, nomor versi, deskripsi, dependensi, dan detail lain yang menjelaskan cara berinteraksi dan menjalankan aplikasi Anda.

package.jsonDalam tutorial ini mencakup daftar dependensi dan skrip. test Skrip pengujian melakukan hal berikut:

  • Menggunakan moka, skrip pengujian menjalankan pengujian unit yang ditentukan hello-world/tests/unit/ dan menulis hasilnya ke junit.xml file menggunakan reporter xunit.

  • Menggunakan Istanbul (nyc), skrip pengujian menghasilkan laporan cakupan kode (clover.xml) menggunakan reporter semanggi. Untuk informasi lebih lanjut, lihat Menggunakan reporter alternatif dalam dokumentasi Istanbul.

Untuk menambahkan file package.json
  1. Di repositori Anda, di File, pilih Buat file.

  2. Untuk nama File, masukkan:

    package.json
  3. Di kotak teks, masukkan kode berikut:

    { "name": "hello_world", "version": "1.0.0", "description": "hello world sample for NodeJS", "main": "app.js", "repository": "https://github.com/awslabs/aws-sam-cli/tree/develop/samcli/local/init/templates/cookiecutter-aws-sam-hello-nodejs", "author": "SAM CLI", "license": "MIT", "dependencies": { "axios": "^0.21.1", "nyc": "^15.1.0" }, "scripts": { "test": "nyc --reporter=clover mocha hello-world/tests/unit/ --reporter xunit --reporter-option output=junit.xml" }, "devDependencies": { "aws-sdk": "^2.815.0", "chai": "^4.2.0", "mocha": "^8.2.1" } }
  4. Pilih Komit, lalu pilih Komit lagi.

    Anda sekarang telah menambahkan file yang dipanggil package.json ke root repositori.

file sam-template.yml

sam-template.ymlFile berisi instruksi untuk menerapkan fungsi Lambda API dan Gateway dan mengonfigurasinya bersama-sama. Ini mengikuti spesifikasi AWS Serverless Application Model template, yang memperluas spesifikasi AWS CloudFormation template.

Anda menggunakan AWS SAM template dalam tutorial ini alih-alih AWS CloudFormation template biasa karena AWS SAM menawarkan tipe sumber daya AWS: :Serverless: :Function yang bermanfaat. Tipe ini melakukan banyak behind-the-scenes konfigurasi yang biasanya harus Anda tulis untuk menggunakan CloudFormation sintaks dasar. Misalnya, AWS::Serverless::Function membuat fungsi Lambda, peran eksekusi Lambda, dan pemetaan sumber peristiwa yang memulai fungsi. Anda harus mengkodekan semua ini jika Anda ingin menulisnya menggunakan dasar CloudFormation.

Meskipun tutorial ini menggunakan template yang telah ditulis sebelumnya, Anda dapat membuatnya sebagai bagian dari alur kerja Anda menggunakan tindakan build. Untuk informasi selengkapnya, lihat Menyebarkan tumpukan AWS CloudFormation.

Untuk menambahkan file sam-template.yml.
  1. Di repositori Anda, di File, pilih Buat file.

  2. Untuk nama File, masukkan:

    sam-template.yml
  3. Di kotak teks, masukkan kode berikut:

    AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: > serverless-api Sample SAM Template for serverless-api # More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst Globals: Function: Timeout: 3 Resources: HelloWorldFunction: Type: AWS::Serverless::Function # For details on this resource type, see https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: hello-world/ Handler: app.lambdaHandler Runtime: nodejs12.x Events: HelloWorld: Type: Api # For details on this event source type, see https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api Properties: Path: /hello Method: get Outputs: # ServerlessRestApi is an implicit API created out of the events key under Serverless::Function # Find out about other implicit resources you can reference within AWS SAM at # https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api HelloWorldApi: Description: "API Gateway endpoint URL for the Hello World function" Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/" HelloWorldFunction: Description: "Hello World Lambda function ARN" Value: !GetAtt HelloWorldFunction.Arn HelloWorldFunctionIamRole: Description: "Implicit Lambda execution role created for the Hello World function" Value: !GetAtt HelloWorldFunctionRole.Arn
  4. Pilih Komit, lalu pilih Komit lagi.

    Anda sekarang telah menambahkan file yang disebut sam-template.yml di bawah folder root repositori Anda.

setup-sam.sh berkas

setup-sam.shFile berisi instruksi untuk mengunduh dan menginstal AWS SAM CLI utilitas. Alur kerja menggunakan utilitas ini untuk mengemas hello-world sumber.

Untuk menambahkan file setup-sam.sh
  1. Di repositori Anda, di File, pilih Buat file.

  2. Untuk nama File, masukkan:

    setup-sam.sh
  3. Di kotak teks, masukkan kode berikut:

    #!/usr/bin/env bash echo "Setting up sam" yum install unzip -y curl -LO https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip unzip -qq aws-sam-cli-linux-x86_64.zip -d sam-installation-directory ./sam-installation-directory/install; export AWS_DEFAULT_REGION=us-west-2

    Pada kode sebelumnya, ganti us-west-2 dengan AWS wilayah Anda.

  4. Pilih Komit, lalu pilih Komit lagi.

    Anda sekarang telah menambahkan file yang dipanggil setup-sam.sh ke root repositori.

app.js berkas

app.jsBerisi kode fungsi Lambda. Dalam tutorial ini, kode mengembalikan tekshello world.

Untuk menambahkan file app.js
  1. Di repositori Anda, di File, pilih Buat file.

  2. Untuk nama File, masukkan:

    hello-world/app.js
  3. Di kotak teks, masukkan kode berikut:

    // const axios = require('axios') // const url = 'http://checkip.amazonaws.com/'; let response; /** * * Event doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format * @param {Object} event - API Gateway Lambda Proxy Input Format * * Context doc: https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html * @param {Object} context * * Return doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html * @returns {Object} object - API Gateway Lambda Proxy Output Format * */ exports.lambdaHandler = async (event, context) => { try { // const ret = await axios(url); response = { 'statusCode': 200, 'body': JSON.stringify({ message: 'hello world', // location: ret.data.trim() }) } } catch (err) { console.log(err); return err; } return response };
  4. Pilih Komit, lalu pilih Komit lagi.

    Anda sekarang telah membuat folder bernama hello-world dan file bernamaapp.js.

test-handler.js berkas

test-handler.jsFile berisi pengujian unit untuk fungsi Lambda.

Untuk menambahkan file test-handler.js
  1. Di repositori Anda, di File, pilih Buat file.

  2. Untuk nama File, masukkan:

    hello-world/tests/unit/test-handler.js
  3. Di kotak teks, masukkan kode berikut:

    'use strict'; const app = require('../../app.js'); const chai = require('chai'); const expect = chai.expect; var event, context; describe('Tests index', function () { it('verifies successful response', async () => { const result = await app.lambdaHandler(event, context) expect(result).to.be.an('object'); expect(result.statusCode).to.equal(200); expect(result.body).to.be.an('string'); let response = JSON.parse(result.body); expect(response).to.be.an('object'); expect(response.message).to.be.equal("hello world"); // expect(response.location).to.be.an("string"); }); });
  4. Pilih Komit, lalu pilih Komit lagi.

    Anda sekarang telah menambahkan file yang disebut test-handler.js di bawah hello-world/tests/unit folder.

Anda sekarang telah menambahkan semua file sumber Anda.

Luangkan waktu sejenak untuk memeriksa ulang pekerjaan Anda dan pastikan Anda menempatkan semua file di folder yang benar. Struktur folder adalah sebagai berikut:

. |— hello-world | |— tests | |— unit | |— test-handler.js | |— app.js |— .npmignore |— README.md |— package.json |— sam-template.yml |— setup-sam.sh

Langkah 6: Buat dan jalankan alur kerja

Pada langkah ini, Anda membuat alur kerja yang mengemas kode sumber Lambda Anda dan menerapkannya. Alur kerja terdiri dari blok bangunan berikut yang berjalan secara berurutan:

  • Pemicu - Pemicu ini memulai alur kerja yang dijalankan secara otomatis saat Anda mendorong perubahan ke repositori sumber Anda. Untuk informasi lebih lanjut tentang menggunakan pemicu, lihat Memulai alur kerja berjalan secara otomatis menggunakan pemicu.

  • Tindakan pengujian (Test) — Pada pemicu, tindakan ini menginstal manajer paket Node (npm), dan kemudian menjalankan perintah. npm run test Perintah ini memberitahu npm untuk menjalankan test script didefinisikan dalam package.json file. testSkrip, pada gilirannya, menjalankan pengujian unit dan menghasilkan dua laporan: laporan pengujian (junit.xml) dan laporan cakupan kode (clover.xml). Untuk informasi selengkapnya, lihat berkas package.json.

    Selanjutnya, tindakan pengujian mengubah XML laporan menjadi CodeCatalyst laporan dan menampilkannya di CodeCatalyst konsol, di bawah tab Laporan tindakan pengujian.

    Untuk informasi lebih lanjut tentang tindakan pengujian, lihatPengujian dengan alur kerja.

  • Tindakan build (BuildBackend) — Setelah menyelesaikan tindakan pengujian, tindakan build mengunduh dan menginstal, mengemas hello-world sumber AWS SAM CLI, dan menyalin paket ke bucket Amazon S3 Anda, tempat layanan Lambda mengharapkannya. Tindakan ini juga mengeluarkan file AWS SAM template baru yang disebut sam-template-packaged.yml dan menempatkannya dalam artefak keluaran yang disebut. buildArtifact

    Untuk informasi selengkapnya tentang tindakan build, lihatMembangun dengan alur kerja.

  • Tindakan penerapan (DeployCloudFormationStack) — Setelah menyelesaikan aksi build, tindakan deploy mencari artefak keluaran yang dihasilkan oleh build action (buildArtifact), menemukan AWS SAM template di dalamnya, dan kemudian menjalankan template. AWS SAM Template membuat tumpukan yang menyebarkan aplikasi tanpa server.

Untuk membuat alur kerja
  1. Di panel navigasi, pilih CI/CD, lalu pilih Alur kerja.

  2. Pilih Buat alur kerja.

  3. Untuk repositori Sumber, pilih. codecatalyst-cfn-source-repository

  4. Untuk Cabang, pilihmain.

  5. Pilih Buat.

  6. Hapus kode YAML sampel.

  7. Tambahkan YAML kode berikut:

    catatan

    Dalam YAML kode berikut, Anda dapat menghilangkan Connections: bagian jika Anda mau. Jika Anda menghilangkan bagian ini, Anda harus memastikan bahwa peran yang ditentukan dalam bidang IAMperan default di lingkungan Anda mencakup izin dan kebijakan kepercayaan dari kedua peran yang dijelaskan. Langkah 2: Buat AWS peran Untuk informasi selengkapnya tentang menyiapkan lingkungan dengan IAM peran default, lihatPembuatan lingkungan.

    Name: codecatalyst-cfn-workflow SchemaVersion: 1.0 Triggers: - Type: PUSH Branches: - main Actions: Test: Identifier: aws/managed-test@v1 Inputs: Sources: - WorkflowSource Outputs: Reports: CoverageReport: Format: CLOVERXML IncludePaths: - "coverage/*" TestReport: Format: JUNITXML IncludePaths: - junit.xml Configuration: Steps: - Run: npm install - Run: npm run test BuildBackend: Identifier: aws/build@v1 DependsOn: - Test Environment: Name: codecatalyst-cfn-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-build-role Inputs: Sources: - WorkflowSource Configuration: Steps: - Run: . ./setup-sam.sh - Run: sam package --template-file sam-template.yml --s3-bucket codecatalyst-cfn-s3-bucket --output-template-file sam-template-packaged.yml --region us-west-2 Outputs: Artifacts: - Name: buildArtifact Files: - "**/*" DeployCloudFormationStack: Identifier: aws/cfn-deploy@v1 DependsOn: - BuildBackend Environment: Name: codecatalyst-cfn-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-deploy-role Inputs: Artifacts: - buildArtifact Sources: [] Configuration: name: codecatalyst-cfn-stack region: us-west-2 role-arn: arn:aws:iam::111122223333:role/StackRole template: ./sam-template-packaged.yml capabilities: CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND

    Pada kode sebelumnya, ganti:

    • Kedua contoh codecatalyst-cfn-environment dengan nama lingkungan Anda.

    • Kedua contoh codecatalyst-account-connection dengan nama tampilan koneksi akun Anda. Nama tampilan mungkin nomor. Untuk informasi selengkapnya, lihat Langkah 3: Tambahkan AWS peran ke CodeCatalyst.

    • codecatalyst-build-role dengan nama peran build yang Anda buatLangkah 2: Buat AWS peran.

    • codecatalyst-cfn-s3-bucket dengan nama bucket Amazon S3 yang Anda buat. Langkah 4: Buat ember Amazon S3

    • Kedua contoh us-west-2 dengan Wilayah tempat bucket Amazon S3 Anda berada (instance pertama) dan tempat tumpukan Anda akan diterapkan (instance kedua). Daerah ini bisa berbeda. Tutorial ini mengasumsikan bahwa kedua Wilayah diatur keus-west-2. Untuk detail tentang Wilayah yang didukung oleh Amazon S3 dan AWS CloudFormation, lihat Titik akhir dan kuota layanan di. Referensi Umum AWS

    • codecatalyst-deploy-role dengan nama peran penerapan yang Anda buat. Langkah 2: Buat AWS peran

    • codecatalyst-cfn-environment dengan nama lingkungan yang Anda buatPrasyarat.

    • arn:aws:iam::111122223333:role/StackRole dengan Amazon Resource Name (ARN) dari peran stack yang Anda buatLangkah 2: Buat AWS peran.

      catatan

      Jika Anda memutuskan untuk tidak membuat peran build, deploy, dan stack, ganti codecatalyst-build-role, codecatalyst-deploy-role, dan arn:aws:iam::111122223333:role/StackRole dengan nama atau ARN CodeCatalystWorkflowDevelopmentRole-spaceName peran. Untuk informasi selengkapnya tentang peran ini, silakan lihat Langkah 2: Buat AWS peran.

    Untuk informasi tentang properti dalam kode yang ditunjukkan sebelumnya, lihatTindakan 'Menyebarkan tumpukan' AWS CloudFormation YAML.

  8. (Opsional) Pilih Validasi untuk memastikan YAML kode valid sebelum melakukan.

  9. Pilih Terapkan.

  10. Pada kotak dialog Commit workflow, masukkan yang berikut ini:

    1. Untuk nama file Workflow, pertahankan default,codecatalyst-cfn-workflow.

    2. Untuk pesan Commit, masukkan:

      add initial workflow file
    3. Untuk Repositori, pilih. codecatalyst-cfn-source-repository

    4. Untuk nama Branch, pilih main.

    5. Pilih Terapkan.

    Anda sekarang telah membuat alur kerja. Jalankan alur kerja dimulai secara otomatis karena pemicu yang ditentukan di bagian atas alur kerja. Khususnya, ketika Anda melakukan (dan mendorong) codecatalyst-cfn-workflow.yaml file ke repositori sumber Anda, pemicu memulai alur kerja dijalankan.

Untuk melihat alur kerja yang sedang berjalan
  1. Di panel navigasi, pilih CI/CD, lalu pilih Alur kerja.

  2. Pilih alur kerja yang baru saja Anda buat:codecatalyst-cfn-workflow.

  3. Pilih tab Runs.

  4. Di kolom Run ID, pilih run ID.

  5. Pilih Uji untuk melihat kemajuan tes.

  6. Pilih BuildBackenduntuk melihat kemajuan pembangunan.

  7. Pilih DeployCloudFormationStackuntuk melihat kemajuan penerapan.

    Untuk informasi selengkapnya tentang melihat detail run, lihatMelihat status dan detail alur kerja.

  8. Saat DeployCloudFormationStacktindakan selesai, lakukan hal berikut:

    • Jika alur kerja berjalan berhasil, pergi ke prosedur berikutnya.

    • Jika alur kerja gagal pada Pengujian atau BuildBackendtindakan, pilih Log untuk memecahkan masalah.

    • Jika alur kerja berjalan gagal pada DeployCloudFormationStacktindakan, pilih tindakan penerapan, lalu pilih tab Ringkasan. Gulir ke bagian CloudFormation peristiwa untuk melihat pesan kesalahan terperinci. Jika terjadi rollback, hapus codecatalyst-cfn-stack tumpukan melalui AWS CloudFormation konsol AWS sebelum menjalankan kembali alur kerja.

Untuk memverifikasi penyebaran
  1. Setelah penerapan berhasil, pilih Variabel (7) dari bilah menu horizontal di dekat bagian atas. (Jangan memilih Variabel di panel di sebelah kanan.)

  2. Di sebelah HelloWorldApi, tempel https:// URL ke browser.

    JSONPesan hello world dari fungsi Lambda ditampilkan, menunjukkan bahwa alur kerja diterapkan dan dikonfigurasi fungsi Lambda dan Gateway berhasil. API

    Tip

    Anda dapat CodeCatalyst menampilkan ini URL dalam diagram alur kerja dengan beberapa konfigurasi kecil. Untuk informasi selengkapnya, lihat Menampilkan aplikasi URL dalam diagram alur kerja.

Untuk memverifikasi hasil pengujian unit dan cakupan kode
  1. Dalam diagram alur kerja, pilih Uji, lalu pilih Laporan.

  2. Pilih TestReportuntuk melihat hasil pengujian unit, atau pilih CoverageReportuntuk melihat detail cakupan kode file yang sedang diuji, dalam hal ini, app.js dantest-handler.js.

Untuk memverifikasi sumber daya yang digunakan
  1. Masuk ke AWS Management Console dan buka konsol API Gateway di https://console.aws.amazon.com/apigateway/.

  2. Perhatikan codecatalyst-cfn-stackAPIbahwa AWS SAM template dibuat. APINama berasal dari Configuration/name nilai dalam file definisi alur kerja (codecatalyst-cfn-workflow.yaml).

  3. Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/.

  4. Di panel navigasi, pilih Fungsi.

  5. Pilih fungsi Lambda Anda,. codecatalyst-cfn-stack-HelloWorldFunction-string

  6. Anda dapat melihat bagaimana API Gateway adalah pemicu untuk fungsi tersebut. Integrasi ini secara otomatis dikonfigurasi oleh jenis AWS SAM AWS::Serverless::Function sumber daya.

Langkah 7: Buat perubahan

Pada langkah ini, Anda membuat perubahan pada kode sumber Lambda Anda dan melakukan itu. Komit ini memulai alur kerja baru. Proses ini menerapkan fungsi Lambda baru dalam skema biru-hijau yang menggunakan konfigurasi perpindahan lalu lintas default yang ditentukan di konsol Lambda.

Untuk membuat perubahan pada sumber Lambda Anda
  1. Masuk CodeCatalyst, navigasikan ke proyek Anda.

  2. Di panel navigasi, pilih Kode, lalu pilih Repositori sumber.

  3. Pilih repositori codecatalyst-cfn-source-repository sumber Anda.

  4. Ubah file aplikasi:

    1. Pilih hello-world folder.

    2. Pilih app.js file.

    3. Pilih Edit.

    4. Pada baris 23, ubah hello world keTutorial complete!.

    5. Pilih Komit, lalu pilih Komit lagi.

      Komit menyebabkan alur kerja berjalan dimulai. Proses ini akan gagal karena Anda belum memperbarui pengujian unit untuk mencerminkan perubahan nama.

  5. Perbarui pengujian unit:

    1. Pilih hello-world\tests\unit\test-handler.js.

    2. Pilih Edit.

    3. Pada baris 19, ubah hello world keTutorial complete!.

    4. Pilih Komit, lalu pilih Komit lagi.

      Komit menyebabkan alur kerja lain dijalankan. Lari ini akan berhasil.

  6. Di panel navigasi, pilih CI/CD, lalu pilih Alur kerja.

  7. Pilihcodecatalyst-cfn-workflow, lalu pilih Runs.

  8. Pilih ID run dari run terbaru. Seharusnya masih dalam proses.

  9. Pilih Uji, BuildBackend, dan DeployCloudFormationStackuntuk melihat alur kerja berjalan kemajuan.

  10. Saat alur kerja selesai, pilih Variabel (7) di dekat bagian atas.

  11. Di sebelah HelloWorldApi, tempel https:// URL ke browser.

    Sebuah Tutorial complete! pesan muncul di browser, menunjukkan bahwa aplikasi baru Anda berhasil digunakan.

Bersihkan

Bersihkan file dan layanan yang digunakan dalam tutorial ini untuk menghindari biaya untuk mereka.

Untuk membersihkan di CodeCatalyst konsol
  1. Buka CodeCatalyst konsol di https://codecatalyst.aws/.

  2. Hapuscodecatalyst-cfn-workflow.

  3. Hapuscodecatalyst-cfn-environment.

  4. Hapuscodecatalyst-cfn-source-repository.

  5. Hapuscodecatalyst-cfn-project.

Untuk membersihkan di AWS Management Console
  1. Bersihkan CloudFormation, sebagai berikut:

    1. Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

    2. Hapuscodecatalyst-cfn-stack.

      Menghapus tumpukan menghapus semua sumber daya tutorial dari layanan API Gateway dan Lambda.

  2. Bersihkan di Amazon S3, sebagai berikut:

    1. Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

    2. Pilih codecatalyst-cfn-s3-bucket.

    3. Hapus isi ember.

    4. Hapus bucket.

  3. BersihkanIAM, sebagai berikut:

    1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

    2. Hapuscodecatalyst-deploy-policy.

    3. Hapuscodecatalyst-build-policy.

    4. Hapuscodecatalyst-stack-policy.

    5. Hapuscodecatalyst-deploy-role.

    6. Hapuscodecatalyst-build-role.

    7. Hapuscodecatalyst-stack-role.

Dalam tutorial ini, Anda belajar bagaimana menerapkan aplikasi tanpa server sebagai CloudFormation tumpukan menggunakan CodeCatalyst alur kerja dan tindakan tumpukan Deploy. AWS CloudFormation