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.
Topik
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
-
Di CodeCatalyst, di panel navigasi, pilih Kode, lalu pilih Repositori sumber.
-
Pilih Tambahkan repositori, lalu pilih Buat repositori.
-
Dalam nama Repositori, masukkan:
codecatalyst-cfn-source-repository
-
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-
peran, alih-alih tiga peran yang tercantum sebelumnya. Untuk informasi selengkapnya, lihat Membuat CodeCatalystWorkflowDevelopmentRole-spaceNameperan untuk akun dan ruang Anda. Pahami bahwa spaceName
CodeCatalystWorkflowDevelopmentRole-
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.spaceName
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
-
Buat kebijakan untuk peran tersebut, sebagai berikut:
-
Masuk ke AWS.
Buka konsol IAM di https://console.aws.amazon.com/iam/
. -
Di panel navigasi, pilih Kebijakan.
-
Pilih Buat kebijakan.
-
Pilih JSONtab.
-
Hapus kode yang ada.
-
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": "*"
-
Pilih Berikutnya: Tanda.
-
Pilih Berikutnya: Tinjau.
-
Dalam Nama, masukkan:
codecatalyst-deploy-policy
-
Pilih Buat kebijakan.
Anda sekarang telah membuat kebijakan izin.
-
-
Buat peran deploy, sebagai berikut:
-
Di panel navigasi, pilih Peran, lalu pilih Buat peran.
-
Pilih Kebijakan kepercayaan khusus.
-
Hapus kebijakan kepercayaan kustom yang ada.
-
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" } ] }
-
Pilih Selanjutnya.
-
Di Kebijakan izin, cari
codecatalyst-deploy-policy
dan pilih kotak centang. -
Pilih Selanjutnya.
-
Untuk nama Peran, masukkan:
codecatalyst-deploy-role
-
Untuk deskripsi Peran, masukkan:
CodeCatalyst deploy role
-
Pilih Buat peran.
Anda sekarang telah membuat peran penerapan dengan kebijakan kepercayaan dan kebijakan izin.
-
-
Dapatkan peran penyebaranARN, sebagai berikut:
-
Di panel navigasi, pilih Peran.
-
Di kotak pencarian, masukkan nama peran yang baru saja Anda buat (
codecatalyst-deploy-role
). -
Pilih peran dari daftar.
Halaman Ringkasan peran muncul.
-
Di bagian atas, salin ARNnilainya.
Anda sekarang telah membuat peran penerapan dengan izin yang sesuai, dan mendapatkannya. ARN
-
Untuk membuat peran build
-
Buat kebijakan untuk peran tersebut, sebagai berikut:
-
Masuk ke AWS.
Buka konsol IAM di https://console.aws.amazon.com/iam/
. -
Di panel navigasi, pilih Kebijakan.
-
Pilih Buat kebijakan.
-
Pilih JSONtab.
-
Hapus kode yang ada.
-
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": "*"
-
Pilih Berikutnya: Tanda.
-
Pilih Berikutnya: Tinjau.
-
Dalam Nama, masukkan:
codecatalyst-build-policy
-
Pilih Buat kebijakan.
Anda sekarang telah membuat kebijakan izin.
-
-
Buat peran build, sebagai berikut:
-
Di panel navigasi, pilih Peran, lalu pilih Buat peran.
-
Pilih Kebijakan kepercayaan khusus.
-
Hapus kebijakan kepercayaan kustom yang ada.
-
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" } ] }
-
Pilih Selanjutnya.
-
Di Kebijakan izin, cari
codecatalyst-build-policy
dan pilih kotak centang. -
Pilih Selanjutnya.
-
Untuk nama Peran, masukkan:
codecatalyst-build-role
-
Untuk deskripsi Peran, masukkan:
CodeCatalyst build role
-
Pilih Buat peran.
Anda sekarang telah membuat peran build dengan kebijakan kepercayaan dan kebijakan izin.
-
-
Dapatkan peran buildARN, sebagai berikut:
-
Di panel navigasi, pilih Peran.
-
Di kotak pencarian, masukkan nama peran yang baru saja Anda buat (
codecatalyst-build-role
). -
Pilih peran dari daftar.
Halaman Ringkasan peran muncul.
-
Di bagian atas, salin ARNnilainya.
Anda sekarang telah membuat peran build dengan izin yang sesuai, dan mendapatkannya. ARN
-
Untuk membuat peran tumpukan
-
Masuk untuk AWS menggunakan akun tempat Anda ingin menyebarkan tumpukan Anda.
Buka konsol IAM di https://console.aws.amazon.com/iam/
. -
Buat peran tumpukan sebagai berikut:
-
Di panel navigasi, pilih Peran.
-
Pilih Buat peran.
-
Pilih Layanan AWS .
-
Di bagian Use case, pilih CloudFormationdari daftar drop-down.
-
Pilih tombol CloudFormationradio.
-
Di bagian bawah, pilih Berikutnya.
-
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.
-
-
Pilih Selanjutnya.
-
Untuk nama Peran, masukkan:
codecatalyst-stack-role
-
Pilih Buat peran.
-
-
Dapatkan peran tumpukanARN, sebagai berikut:
-
Di panel navigasi, pilih Peran.
-
Di kotak pencarian, masukkan nama peran yang baru saja Anda buat (
codecatalyst-stack-role
). -
Pilih peran dari daftar.
-
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
-
Masuk CodeCatalyst, navigasikan ke ruang Anda.
-
Pilih AWS akun. Daftar koneksi akun muncul.
-
Pilih koneksi akun yang mewakili AWS akun tempat Anda membuat peran build dan deploy.
-
Pilih Kelola peran dari konsol AWS manajemen.
Halaman CodeCatalyst ruang Tambahkan IAM peran ke Amazon muncul. Anda mungkin perlu masuk untuk mengakses halaman.
-
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
dancodecatalyst.amazonaws.com
layanan. -
Dalam daftar drop-down, pilih
codecatalyst-build-role
, dan pilih Tambah peran. -
Pilih Tambah IAM peran, pilih Tambahkan peran yang ada yang telah Anda buat IAM, dan di daftar drop-down, pilih
codecatalyst-deploy-role
. Pilih Tambahkan peran.Anda sekarang telah menambahkan peran build dan deploy ke ruang Anda.
-
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
Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Di panel utama, pilih Buat ember.
-
Untuk nama Bucket, masukkan:
codecatalyst-cfn-s3-bucket
-
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
-
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-world
Folder berisi file aplikasi yang akan Anda gunakan. tests
Folder 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
.npmignore
File 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
Buka CodeCatalyst konsol di https://codecatalyst.aws/
. -
Pilih proyek Anda,
codecatalyst-cfn-project
-
Di panel navigasi, pilih Kode, lalu pilih Repositori sumber.
-
Dari daftar repositori sumber, pilih repositori Anda,.
codecatalyst-cfn-source-repository
-
Di File, pilih Buat file.
-
Untuk nama File, masukkan:
.npmignore
-
Di kotak teks, masukkan kode berikut:
tests/*
-
Pilih Komit, lalu pilih Komit lagi.
Anda sekarang telah membuat file yang disebut
.npmignore
di root repositori Anda.
berkas package.json
package.json
File 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.json
Dalam 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 kejunit.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
-
Di repositori Anda, di File, pilih Buat file.
-
Untuk nama File, masukkan:
package.json
-
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" } }
-
Pilih Komit, lalu pilih Komit lagi.
Anda sekarang telah menambahkan file yang dipanggil
package.json
ke root repositori.
file sam-template.yml
sam-template.yml
File 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.
-
Di repositori Anda, di File, pilih Buat file.
-
Untuk nama File, masukkan:
sam-template.yml
-
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
-
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.sh
File 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
-
Di repositori Anda, di File, pilih Buat file.
-
Untuk nama File, masukkan:
setup-sam.sh
-
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. -
Pilih Komit, lalu pilih Komit lagi.
Anda sekarang telah menambahkan file yang dipanggil
setup-sam.sh
ke root repositori.
app.js berkas
app.js
Berisi kode fungsi Lambda. Dalam tutorial ini, kode mengembalikan tekshello world
.
Untuk menambahkan file app.js
-
Di repositori Anda, di File, pilih Buat file.
-
Untuk nama File, masukkan:
hello-world/app.js
-
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 };
-
Pilih Komit, lalu pilih Komit lagi.
Anda sekarang telah membuat folder bernama
hello-world
dan file bernamaapp.js
.
test-handler.js berkas
test-handler.js
File berisi pengujian unit untuk fungsi Lambda.
Untuk menambahkan file test-handler.js
-
Di repositori Anda, di File, pilih Buat file.
-
Untuk nama File, masukkan:
hello-world/tests/unit/test-handler.js
-
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"); }); });
-
Pilih Komit, lalu pilih Komit lagi.
Anda sekarang telah menambahkan file yang disebut
test-handler.js
di bawahhello-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 menjalankantest
script didefinisikan dalampackage.json
file.test
Skrip, 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, mengemashello-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 disebutsam-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
-
Di panel navigasi, pilih CI/CD, lalu pilih Alur kerja.
-
Pilih Buat alur kerja.
-
Untuk repositori Sumber, pilih.
codecatalyst-cfn-source-repository
-
Untuk Cabang, pilih
main
. -
Pilih Buat.
-
Hapus kode YAML sampel.
-
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-bucketcodecatalyst-cfn-s3-bucket
--output-template-file sam-template-packaged.yml --regionus-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_EXPANDPada 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
, danarn:aws:iam::111122223333:role/StackRole
dengan nama atau ARNCodeCatalystWorkflowDevelopmentRole-
peran. Untuk informasi selengkapnya tentang peran ini, silakan lihat Langkah 2: Buat AWS peran.spaceName
Untuk informasi tentang properti dalam kode yang ditunjukkan sebelumnya, lihatTindakan 'Menyebarkan tumpukan' AWS CloudFormation YAML.
-
-
(Opsional) Pilih Validasi untuk memastikan YAML kode valid sebelum melakukan.
-
Pilih Terapkan.
-
Pada kotak dialog Commit workflow, masukkan yang berikut ini:
-
Untuk nama file Workflow, pertahankan default,
codecatalyst-cfn-workflow
. -
Untuk pesan Commit, masukkan:
add initial workflow file
-
Untuk Repositori, pilih. codecatalyst-cfn-source-repository
-
Untuk nama Branch, pilih main.
-
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
-
Di panel navigasi, pilih CI/CD, lalu pilih Alur kerja.
-
Pilih alur kerja yang baru saja Anda buat:
codecatalyst-cfn-workflow
. -
Pilih tab Runs.
-
Di kolom Run ID, pilih run ID.
-
Pilih Uji untuk melihat kemajuan tes.
-
Pilih BuildBackenduntuk melihat kemajuan pembangunan.
-
Pilih DeployCloudFormationStackuntuk melihat kemajuan penerapan.
Untuk informasi selengkapnya tentang melihat detail run, lihatMelihat status dan detail alur kerja.
-
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
-
Setelah penerapan berhasil, pilih Variabel (7) dari bilah menu horizontal di dekat bagian atas. (Jangan memilih Variabel di panel di sebelah kanan.)
-
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
-
Dalam diagram alur kerja, pilih Uji, lalu pilih Laporan.
-
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
Masuk ke AWS Management Console dan buka konsol API Gateway di https://console.aws.amazon.com/apigateway/
. -
Perhatikan codecatalyst-cfn-stackAPIbahwa AWS SAM template dibuat. APINama berasal dari
Configuration/name
nilai dalam file definisi alur kerja (codecatalyst-cfn-workflow.yaml
). Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/
. -
Di panel navigasi, pilih Fungsi.
-
Pilih fungsi Lambda Anda,.
codecatalyst-cfn-stack-HelloWorldFunction-
string
-
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
-
Masuk CodeCatalyst, navigasikan ke proyek Anda.
-
Di panel navigasi, pilih Kode, lalu pilih Repositori sumber.
-
Pilih repositori
codecatalyst-cfn-source-repository
sumber Anda. -
Ubah file aplikasi:
-
Pilih
hello-world
folder. -
Pilih
app.js
file. -
Pilih Edit.
-
Pada baris 23, ubah
hello world
keTutorial complete!
. -
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.
-
-
Perbarui pengujian unit:
-
Pilih
hello-world\tests\unit\test-handler.js
. -
Pilih Edit.
-
Pada baris 19, ubah
hello world
keTutorial complete!
. -
Pilih Komit, lalu pilih Komit lagi.
Komit menyebabkan alur kerja lain dijalankan. Lari ini akan berhasil.
-
-
Di panel navigasi, pilih CI/CD, lalu pilih Alur kerja.
-
Pilih
codecatalyst-cfn-workflow
, lalu pilih Runs. -
Pilih ID run dari run terbaru. Seharusnya masih dalam proses.
-
Pilih Uji, BuildBackend, dan DeployCloudFormationStackuntuk melihat alur kerja berjalan kemajuan.
-
Saat alur kerja selesai, pilih Variabel (7) di dekat bagian atas.
-
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
Buka CodeCatalyst konsol di https://codecatalyst.aws/
. -
Hapus
codecatalyst-cfn-workflow
. -
Hapus
codecatalyst-cfn-environment
. -
Hapus
codecatalyst-cfn-source-repository
. -
Hapus
codecatalyst-cfn-project
.
Untuk membersihkan di AWS Management Console
-
Bersihkan CloudFormation, sebagai berikut:
Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. -
Hapus
codecatalyst-cfn-stack
.Menghapus tumpukan menghapus semua sumber daya tutorial dari layanan API Gateway dan Lambda.
-
Bersihkan di Amazon S3, sebagai berikut:
Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Pilih
codecatalyst-cfn-s3-bucket
. -
Hapus isi ember.
-
Hapus bucket.
-
BersihkanIAM, sebagai berikut:
Buka konsol IAM di https://console.aws.amazon.com/iam/
. -
Hapus
codecatalyst-deploy-policy
. -
Hapus
codecatalyst-build-policy
. -
Hapus
codecatalyst-stack-policy
. -
Hapus
codecatalyst-deploy-role
. -
Hapus
codecatalyst-build-role
. -
Hapus
codecatalyst-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