Bekerja dengan AWS SAM menggunakan AWS Toolkit - AWS Cloud9

AWS Cloud9 tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Cloud9 dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya

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

Bekerja dengan AWS SAM menggunakan AWS Toolkit

AWS Toolkit menyediakan dukungan untuk aplikasi tanpa server. Menggunakan AWS Toolkit, Anda dapat membuat aplikasi tanpa server yang berisi AWS Lambdafungsi, dan kemudian menyebarkan aplikasi ke tumpukan. AWS CloudFormation

Membuat aplikasi nirserver

Contoh ini menunjukkan cara menggunakan AWS Toolkit untuk membuat aplikasi tanpa server. Untuk informasi tentang cara menjalankan dan men-debug aplikasi tanpa server, lihat. Menjalankan dan men-debug aplikasi nirserver

Prasyarat yang diperlukan untuk membuat aplikasi tanpa server termasuk dan. AWS SAM CLIAWS CLI Ini termasuk dengan AWS Cloud9. Jika AWS SAM CLI tidak diinstal, atau jika sudah usang, Anda mungkin perlu menjalankan instalasi atau upgrade. Untuk petunjuk tentang cara menginstal AWS SAM CLI, lihat Menginstal AWS SAM CLI dan untuk petunjuk tentang cara memutakhirkan AWS SAM CLI, lihat Memutakhirkan AWS SAM CLI.

Membuat aplikasi nirserver dengan AWS Toolkit

Contoh ini menunjukkan cara membuat aplikasi tanpa server dengan AWS Toolkit dengan menggunakan ().AWS Serverless Application ModelAWS SAM

  1. Di AWS Explorer, buka menu konteks (klik kanan) untuk simpul Lambda, lalu pilih Buat Aplikasi SAM Lambda.

    catatan

    Atau, Anda dapat memilih ikon menu di seberang judul AWS: Explorer, dan pilih Buat Aplikasi Lambda SAM.

  2. Pilih runtime untuk SAM aplikasi Anda. Untuk contoh ini, pilih nodejs12.x.

    catatan

    Jika Anda memilih salah satu runtime dengan “(Gambar),” aplikasi Anda adalah jenis Image paket. Jika Anda memilih salah satu runtime tanpa “(Gambar),” aplikasi Anda adalah Zip jenisnya. Untuk informasi selengkapnya tentang perbedaan antara jenis paket Image dan Zip, lihat paket deployment Lambda dalam Panduan Developer AWS Lambda .

  3. Pilih salah satu templat berikut untuk aplikasi tanpa server Anda:

    • AWS SAM Hello World: Template dasar dengan fungsi Lambda yang mengembalikan pesan klasik “Hello World”.

    • AWS Step Functions Sample App: Contoh aplikasi yang menjalankan alur kerja perdagangan saham. Fungsi langkah mengatur interaksi fungsi Lambda yang terlibat.

  4. Pilih lokasi untuk proyek baru Anda. Jika tersedia, Anda dapat memilih folder ruang kerja yang ada. Jika tidak, telusuri folder yang berbeda. Jika Anda memilih Pilih folder yang berbeda, kotak dialog akan ditampilkan di mana Anda dapat memilih lokasi folder.

  5. Masukkan nama untuk aplikasi baru Anda. Untuk contoh ini, gunakan my-sam-app-nodejs. Setelah Anda menekan Enter, AWS Toolkit membutuhkan beberapa saat untuk membuat proyek.

Ketika proyek dibuat, Anda dapat melihat file aplikasi Anda di jendela Lingkungan. Temukan itu tercantum di jendela Explorer.

Screenshot yang menunjukkan runtime yang tersedia untuk SAM aplikasi.

Menjalankan dan men-debug aplikasi nirserver

Anda dapat menggunakan AWS Toolkit untuk mengonfigurasi cara men-debug aplikasi tanpa server dan menjalankannya secara lokal di lingkungan pengembangan Anda. Anda dapat men-debug aplikasi tanpa server yang ditentukan oleh template AWS Serverless Application Model ()AWS SAM. Template ini menggunakan YAML sintaks sederhana untuk mendeskripsikan sumber daya seperti fungsiAPIs, database, dan pemetaan sumber peristiwa yang membentuk aplikasi tanpa server.

Untuk melihat lebih dekat pada AWS SAM template, lihat anatomi AWS SAM template di Panduan AWS Serverless Application Model Pengembang.

Atau, Anda dapat dengan cepat men-debug aplikasi tanpa server yang belum berkomitmen ke template. SAM

Anda mulai mengonfigurasi perilaku debug dengan menggunakan tindakan sebaris untuk mengidentifikasi fungsi yang memenuhi syarat AWS Lambda . Untuk menggunakan infrastruktur yang ditentukan oleh SAM template, gunakan tindakan sebaris dalam file YAML -format yang relevan. Untuk menguji fungsi secara langsung tanpa templat, gunakan tautan sadar konteks untuk penangan Lambda di file aplikasi.

catatan

Dalam contoh ini, kita men-debug aplikasi yang menggunakan JavaScript. Tetapi Anda dapat menggunakan fitur debugging yang tersedia di AWS Toolkit dengan bahasa dan runtime berikut:

  • JavaScript - Node.js 10. x, 12. x, 14. x

  • Python — 3.7, 3.8, 3.9, 3.10 (Python 2.7 dan 3.6 aplikasi tanpa server dapat dijalankan tetapi tidak di-debug oleh Toolkit.) AWS

Pilihan bahasa Anda juga memengaruhi bagaimana tautan sadar konteks menunjukkan penangan Lambda yang memenuhi syarat. Untuk informasi selengkapnya, lihat Menjalankan dan men-debug fungsi nirserver langsung dari kode.

Menggunakan SAM template untuk menjalankan dan men-debug aplikasi tanpa server

Untuk aplikasi yang dijalankan dan di-debug menggunakan SAM template, file YAML yang diformat menjelaskan perilaku aplikasi dan sumber daya yang digunakannya. Jika Anda membuat aplikasi tanpa server menggunakan AWS Toolkit, file bernama akan dibuat template.yaml secara otomatis untuk proyek Anda.

Dalam prosedur ini, gunakan contoh aplikasi yang dibuat diMembuat aplikasi nirserver.

Untuk menggunakan SAM template untuk menjalankan dan men-debug aplikasi tanpa server

  1. Untuk melihat file aplikasi Anda yang membentuk aplikasi nirserver Anda, buka jendela Lingkungan.

  2. Dari folder aplikasi (misalnya, my-sample-app), buka template.yaml file.

  3. Untuktemplate.yaml, pilih Edit Konfigurasi Peluncuran.

    Editor baru menampilkan file launch.json yang menyediakan konfigurasi debug dengan atribut default.

  4. Edit atau konfirmasi nilai untuk properti konfigurasi berikut:

    • "name"— Masukkan nama yang ramah pembaca untuk muncul di bidang tarik-turun Konfigurasi di tampilan Jalankan.

    • "target"— Pastikan nilainya"template". Dengan begitu, SAM template adalah titik masuk untuk sesi debug.

    • "templatePath" – Masukkan jalur relatif atau absolut untuk file template.yaml.

    • "logicalId"— Pastikan bahwa nama cocok dengan yang ditentukan di bagian Resources SAM template. Dalam hal ini, ini adalah HelloWorldFunction dari tipe AWS::Serverless::Function.

    Untuk informasi selengkapnya tentang entri ini dan entri lainnya dalam file launch.json, lihat Opsi konfigurasi untuk men-debug aplikasi nirserver.

  5. Jika Anda puas dengan konfigurasi debug Anda, simpan launch.json. Kemudian, pilih tombol “putar” hijau di sebelah RUNuntuk memulai debugging.

    catatan

    Jika SAM aplikasi Anda gagal dijalankan, periksa jendela Output untuk melihat apakah kesalahan disebabkan oleh image Docker yang tidak dibangun. Anda mungkin perlu mengosongkan ruang disk di lingkungan Anda.

    Untuk informasi selengkapnya, lihat Kesalahan menjalankan SAM aplikasi secara lokal di AWS Toolkit karena AWS Cloud9 lingkungan tidak memiliki cukup ruang disk.

    Saat sesi debugging dimulai, DEBUGCONSOLEpanel menampilkan output debugging dan menampilkan nilai apa pun yang dikembalikan oleh fungsi Lambda. Saat men-debug SAM aplikasi, AWS Toolkit dipilih sebagai saluran Output di panel Output.

    catatan

    Untuk pengguna Windows, jika Anda melihat kesalahan pemasangan Docker selama proses ini, Anda mungkin perlu menyegarkan kredensional untuk drive bersama Anda di Pengaturan Docker. Kesalahan pemasangan Docker terlihat mirip dengan yang berikut ini.

    Fetching lambci/lambda:nodejs10.x Docker container image...... 2019-07-12 13:36:58 Mounting C:\Users\<username>\AppData\Local\Temp\ ... as /var/task:ro,delegated inside runtime container Traceback (most recent call last): ...requests.exceptions.HTTPError: 500 Server Error: Internal Server Error ...

Menjalankan dan men-debug fungsi nirserver langsung dari kode

Saat menguji AWS SAM aplikasi, Anda dapat memilih untuk menjalankan dan men-debug hanya fungsi Lambda. Kecualikan sumber daya lain yang ditentukan oleh SAM template. Pendekatan ini melibatkan penggunaan tindakan inline untuk mengidentifikasi penangan fungsi Lambda dalam kode sumber yang dapat langsung dipanggil.

Penangan Lambda yang dideteksi oleh tautan sadar konteks bergantung pada bahasa dan runtime yang Anda gunakan untuk aplikasi Anda.

Bahasa/runtime Kondisi untuk fungsi Lambda untuk diidentifikasi oleh tautan sadar konteks

JavaScript (Node.js 10.x, 12.x, dan 14.x)

Fungsi tersebut memiliki fitur berikut:
  • Ini adalah fungsi yang diekspor dengan hingga tiga parameter.

  • Ini memiliki file package.json dalam folder induknya di dalam folder ruang kerja.

Python (3.7, 3.8, 3.9, dan 3.10)

Fungsi tersebut memiliki fitur berikut:
  • Ini adalah fungsi tingkat atas.

  • Ini memiliki file requirements.txt dalam folder induknya di dalam folder ruang kerja.

Untuk menjalankan dan men-debug aplikasi nirserver langsung dari kode aplikasi

  1. Untuk melihat file aplikasi tanpa server Anda, navigasikan ke folder aplikasi dengan memilih ikon folder di sebelah editor.

  2. Dari folder aplikasi (misalnya, my-sample-app), perluas folder fungsi (dalam contoh ini, hello-world) dan buka file. app.js

  3. Dalam tindakan sebaris yang mengidentifikasi fungsi penangan Lambda yang memenuhi syarat, pilih Add Debug Configuration. Jika opsi tambahkan konfigurasi debug tidak muncul, Anda harus mengaktifkan lensa kode. Untuk mengaktifkan lensa kode, lihatMengaktifkan lensa kode AWS Toolkit .

    Mengakses opsi Tambahkan Konfigurasi Debug dalam tindakan sebaris untuk penangan fungsi Lambda.
  4. Pilih runtime tempat SAM aplikasi Anda berjalan.

  5. Di editor untuk file launch.json, edit atau konfirmasi nilai untuk properti konfigurasi berikut:

    • "name" – Masukkan nama yang mudah dibaca.

    • "target" – Pastikan bahwa nilainya adalah "code" agar penangan fungsi Lambda dipanggil secara langsung.

    • "lambdaHandler" – Masukkan nama metode dalam kode Anda yang dipanggil Lambda untuk memanggil fungsi Anda. Misalnya, untuk aplikasi di JavaScript, defaultnya adalahapp.lambdaHandler.

    • "projectRoot" – Masukkan jalur ke file aplikasi yang berisi fungsi Lambda.

    • "runtime"— Masukkan atau konfirmasikan runtime yang valid untuk lingkungan eksekusi Lambda (misalnya"nodejs.12x",).

    • "payload" – Pilih salah satu opsi berikut untuk menentukan muatan peristiwa yang ingin Anda berikan ke fungsi Lambda Anda sebagai input:

      • "json": JSON -diformat pasangan kunci-nilai yang menentukan payload acara.

      • "path": Jalur ke file yang digunakan sebagai muatan peristiwa.

  6. Jika Anda puas dengan konfigurasi debug, pilih panah putar hijau di sebelah RUNuntuk memulai debugging.

    Saat sesi debugging dimulai, DEBUGCONSOLEpanel menampilkan output debugging dan menampilkan nilai apa pun yang dikembalikan oleh fungsi Lambda. Saat men-debug SAM aplikasi, AWS Toolkit dipilih sebagai saluran Output di panel Output.

    catatan

    Jika Anda melihat Docker disebutkan dalam pesan kesalahan, lihat catatan ini.

Menjalankan dan men-debug sumber daya Amazon API Gateway lokal

Anda dapat menjalankan atau men-debug sumber daya lokal AWS SAM API Gateway yang ditentukan dalamtemplate.yaml. Lakukan dengan menjalankan konfigurasi AWS Cloud9 peluncuran type=aws-sam dengan fileinvokeTarget.target=api.

catatan

APIGateway mendukung dua jenisAPIs. Mereka adalah REST dan HTTPAPIs. Namun, fitur API Gateway dengan AWS Toolkit hanya mendukung RESTAPIs. Terkadang HTTP APIs disebut "APIGateway V2APIs.”

Untuk menjalankan dan men-debug sumber daya API Gateway lokal
  1. Pilih salah satu pendekatan berikut untuk membuat konfigurasi peluncuran untuk sumber daya AWS SAM API Gateway:

    • Opsi 1: Kunjungi kode sumber handler (khususnya, file.js, .cs, atau .py) di AWS SAM proyek Anda, arahkan kursor ke handler Lambda, dan pilih Tambahkan Konfigurasi Debug Jika opsi tambahkan konfigurasi debug tidak muncul, aktifkan lensa kode. Untuk mengaktifkan lensa kode, lihatMengaktifkan lensa kode AWS Toolkit .). Kemudian, di menu, pilih item yang ditandai API Peristiwa.

    • Opsi 2: Edit launch.json dan buat konfigurasi peluncuran baru menggunakan sintaks berikut.

      { "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} } }, "sam": {}, "aws": {} }
  2. Di menu tarik-turun di sebelah tombol Run, pilih konfigurasi peluncuran (dinamai myConfig dalam contoh sebelumnya).

  3. (Opsional) Tambahkan titik henti ke kode proyek Lambda Anda.

  4. Pilih tombol jalankan di sebelah tombol “play” hijau.

  5. Di panel output, lihat hasilnya.

Konfigurasi

Ketika Anda menggunakan invokeTarget.target nilai properti api, Toolkit mengubah validasi dan perilaku konfigurasi peluncuran untuk mendukung bidang api.

{ "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} }, "querystring": "abc=def&qrs=tuv", "headers": { "cookie": "name=value; name2=value2; name3=value3" } }, "sam": {}, "aws": {} }

Ganti nilai-nilai dalam contoh sebagai berikut:

invokeTarget.logicalId

APISumber daya.

path

APIJalur yang diminta konfigurasi peluncuran (misalnya,"path": "/hello").

Harus merupakan API jalur yang valid diselesaikan dari template.yaml yang ditentukan olehinvokeTarget.templatePath.

httpMethod

Gunakan salah satu kata kerja berikut: “delete,” “get,” “head,” “options,” “patch,” “post,” dan “put.”

payload

JSONPayload (HTTPbody) untuk mengirim permintaan dengan struktur dan aturan yang sama dengan bidang lambda.payload.

payload.pathmenunjuk ke file yang berisi JSON muatan.

payload.jsonmenentukan JSON payload inline.

headers

Peta opsional pasangan nama-nilai. Gunakan untuk menentukan HTTP header untuk disertakan dalam permintaan.

"headers": { "accept-encoding": "deflate, gzip;q=1.0, *;q=0.5", "accept-language": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5", "cookie": "name=value; name2=value2; name3=value3", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", }
querystring

(Opsional) Gunakan string ini untuk mengatur permintaan (misalnya,"querystring": "abc=def&ghi=jkl"). querystring

aws

Bagaimana informasi AWS koneksi disediakan. Untuk informasi selengkapnya, lihat tabel properti koneksi AWS (aws) di Opsi konfigurasi untuk men-debug aplikasi nirserver.

sam

Bagaimana AWS SAM CLI membangun aplikasi. Untuk informasi selengkapnya, lihat properti AWS SAM CLI (” sam “) diOpsi konfigurasi untuk men-debug aplikasi nirserver.

Menyinkronkan aplikasi tanpa server

Contoh ini menunjukkan cara menyinkronkan aplikasi tanpa server yang dibuat di topik sebelumnya (Membuat aplikasi nirserver) untuk AWS menggunakan. AWS Toolkit for Visual Studio Code

Prasyarat

  • Pastikan untuk memilih nama bucket Amazon S3 yang unik secara global.

  • Pastikan kredenal yang Anda konfigurasikan menyertakan akses baca/tulis yang sesuai ke layanan berikut: Amazon S3,,, AWS CloudFormation dan Amazon Gateway. AWS Lambda API

  • Untuk aplikasi dengan tipe penerapanImage, pastikan Anda memiliki nama bucket Amazon S3 yang unik secara global dan URI repositori ECR Amazon untuk digunakan untuk penerapan.

Menyinkronkan aplikasi tanpa server

  1. Di jendela AWS Explorer, buka menu konteks (klik kanan) untuk simpul Lambda dan pilih SAM Sync Application.

  2. Pilih Wilayah AWS untuk menyebarkan ke.

  3. Pilih file template.yaml yang akan digunakan untuk deployment.

  4. Masukkan nama bucket Amazon S3 yang dapat digunakan penerapan ini. Bucket harus berada di Wilayah tempat Anda menerapkan.

    Awas

    Nama bucket Amazon S3 harus unik secara global di semua nama bucket yang ada di Amazon S3. Tambahkan pengenal unik ke nama yang diberikan dalam contoh berikut atau pilih nama lain.

  5. Jika aplikasi tanpa server Anda menyertakan fungsi dengan jenis paketImage, masukkan nama ECR repositori Amazon yang dapat digunakan penyebaran ini. Repositori harus berada di Wilayah tempat Anda men-deploy.

  6. Masukkan nama untuk tumpukan yang di-deploy, baik nama tumpukan baru atau nama tumpukan yang sudah ada.

  7. Verifikasi keberhasilan deployment pada tab AWS Toolkit di Konsol.

    Jika terjadi kesalahan, pesan muncul di kanan bawah.

    Jika hal ini terjadi, periksa teks di tab AWS Toolkit untuk detailnya. Berikut ini adalah contoh detail kesalahan.

    Error with child process: Unable to upload artifact HelloWorldFunction referenced by CodeUri parameter of HelloWorldFunction resource. S3 Bucket does not exist. Execute the command to create a new bucket aws s3 mb s3://pbart-my-sam-app-bucket An error occurred while deploying a SAM Application. Check the logs for more information by running the "View AWS Toolkit Logs" command from the Command Palette.

    Dalam contoh ini, kesalahan terjadi karena bucket Amazon S3 tidak ada.

Ketika penerapan selesai, Anda akan melihat aplikasi Anda yang terdaftar di AWS Explorer. Untuk mempelajari cara memanggil fungsi Lambda yang dibuat sebagai bagian dari aplikasi, lihat Memanggil fungsi Lambda jarak jauh.

Menghapus aplikasi nirserver dari AWS Cloud

Menghapus aplikasi tanpa server melibatkan penghapusan AWS CloudFormation tumpukan yang sebelumnya Anda gunakan ke Cloud. AWS Perhatikan bahwa prosedur ini tidak menghapus direktori aplikasi Anda dari host lokal Anda.

  1. Buka AWS Explorer.

  2. Di jendela AWS Explorer, perluas Wilayah yang berisi aplikasi yang di-deploy yang ingin Anda hapus, lalu perluas AWS CloudFormation.

  3. Buka menu konteks (klik kanan) untuk nama AWS CloudFormation tumpukan yang sesuai dengan aplikasi tanpa server yang ingin Anda hapus. Kemudian, pilih Delete CloudFormation Stack.

  4. Untuk mengonfirmasi bahwa Anda ingin menghapus tumpukan yang dipilih, pilih Hapus.

Jika penghapusan tumpukan berhasil, AWS Toolkit menghapus nama tumpukan dari daftar di Explorer. AWS CloudFormation AWS