Apa itu AWS Serverless Application Model (AWS SAM)? - AWS Serverless Application Model

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

Apa itu AWS Serverless Application Model (AWS SAM)?

The AWS Serverless Application Model (AWS SAM) adalah toolkit yang meningkatkan pengalaman pengembang dalam membangun dan menjalankan aplikasi tanpa server. AWS AWS SAM menawarkan berbagai manfaat:

Tentukan kode infrastruktur aplikasi Anda dengan cepat, menggunakan lebih sedikit kode

AWS SAM Template penulis untuk menentukan kode infrastruktur aplikasi tanpa server Anda. Terapkan templat Anda secara langsung AWS CloudFormation untuk menyediakan sumber daya Anda.

Kelola aplikasi tanpa server Anda melalui seluruh siklus hidup pengembangannya

Gunakan AWS SAMCLI untuk mengelola aplikasi tanpa server Anda melalui fase penulisan, pembuatan, penerapan, pengujian, dan pemantauan siklus hidup pengembangan Anda. Untuk informasi selengkapnya, lihat Menggunakan AWS SAMCLI.

Menyediakan izin dengan cepat antara sumber daya dengan konektor AWS SAM

Gunakan AWS SAM konektor di AWS SAM template Anda untuk menentukan izin antara AWS sumber daya Anda. AWS SAM mengubah kode Anda menjadi izin IAM yang diperlukan untuk memfasilitasi maksud Anda. Untuk informasi selengkapnya, lihat Mengelola izin sumber daya dengan konektor AWS SAM.

Terus sinkronkan perubahan lokal ke cloud saat Anda mengembangkan

Gunakan AWS SAMCLI sam sync perintah untuk secara otomatis menyinkronkan perubahan lokal ke cloud, mempercepat alur kerja pengembangan dan pengujian cloud Anda. Untuk informasi selengkapnya, lihat Menggunakan sam sync.

Kelola aplikasi Terraform tanpa server Anda

Gunakan AWS SAMCLI untuk melakukan debugging lokal dan pengujian fungsi dan lapisan Lambda Anda. Untuk informasi selengkapnya, lihat AWS SAMCLITerraformdukungan.

Konsep Basic

AWS SAM terdiri dari tiga bagian utama:

  1. AWS SAM spesifikasi template — Kerangka kerja sumber terbuka yang dapat Anda gunakan untuk menentukan infrastruktur aplikasi tanpa server Anda. AWS Kerangka kerja ini diakses melalui AWS SAM template.

  2. AWS SAM template — apa yang Anda gunakan untuk mengakses spesifikasi AWS SAM template, kerangka kerja sumber terbuka yang dapat Anda gunakan untuk menentukan infrastruktur aplikasi tanpa server Anda. AWS AWS SAM Template adalah ekstensi AWS CloudFormation template dengan beberapa komponen tambahan yang membuatnya lebih mudah untuk dikerjakan.

  3. AWS SAM antarmuka baris perintah (AWS SAMCLI) - Alat baris perintah yang dapat Anda gunakan dengan AWS SAM templat dan integrasi pihak ketiga yang didukung untuk membangun dan menjalankan aplikasi tanpa server Anda.

Baru mengenal tanpa server?

Kami sarankan Anda meninjauKonsep tanpa server.

Apa spesifikasi AWS SAM templatenya?

Spesifikasi AWS SAM template adalah kerangka kerja sumber terbuka yang dapat Anda gunakan untuk menentukan dan mengelola kode infrastruktur aplikasi tanpa server Anda. Spesifikasi AWS SAM template adalah:

  • Dibangun di atas AWS CloudFormation - Gunakan AWS CloudFormation sintaks langsung dalam AWS SAM template Anda, mengambil keuntungan dari dukungan ekstensif sumber daya dan konfigurasi properti. Jika Anda sudah terbiasa AWS CloudFormation, Anda tidak perlu mempelajari layanan baru untuk mengelola kode infrastruktur aplikasi Anda.

  • Perpanjangan AWS CloudFormation - AWS SAM menawarkan sintaks uniknya sendiri yang berfokus secara khusus pada mempercepat pengembangan tanpa server. Anda dapat menggunakan kedua AWS CloudFormation dan AWS SAM sintaks dalam template yang sama.

  • Sintaks abstrak dan pendek — Menggunakan AWS SAM sintaks, Anda dapat menentukan infrastruktur Anda dengan cepat, dalam baris kode yang lebih sedikit, dan dengan kemungkinan kesalahan yang lebih rendah. Sintaksnya secara khusus dikuratori untuk mengabstraksikan kompleksitas dalam mendefinisikan infrastruktur aplikasi tanpa server Anda.

  • Transformasional — AWS SAM melakukan pekerjaan kompleks mengubah template Anda menjadi kode yang diperlukan untuk menyediakan infrastruktur Anda. AWS CloudFormation

Apa AWS SAM templatenya?

AWS SAM Template adalah apa yang Anda gunakan untuk mengakses spesifikasi AWS SAM template, kerangka kerja sumber terbuka yang dapat Anda gunakan untuk menentukan infrastruktur aplikasi tanpa server Anda AWS, dengan beberapa komponen tambahan yang membuatnya lebih mudah untuk dikerjakan. Dalam hal ini, AWS SAM template adalah perpanjangan dari AWS CloudFormation template.

Berikut adalah contoh aplikasi tanpa server dasar. Aplikasi ini memproses permintaan untuk mendapatkan semua item dari database melalui permintaan HTTP. Ini terdiri dari bagian-bagian berikut:

  1. Fungsi yang berisi logika untuk memproses permintaan.

  2. HTTP API untuk berfungsi sebagai komunikasi antara klien (requestor) dan aplikasi.

  3. Database untuk menyimpan item.

  4. Izin agar aplikasi berjalan dengan aman.

Arsitektur aplikasi aplikasi tanpa server sederhana.

Kode infrastruktur aplikasi ini dapat didefinisikan dalam AWS SAM template berikut:

AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Resources: getAllItemsFunction: Type: AWS::Serverless::Function Properties: Handler: src/get-all-items.getAllItemsHandler Runtime: nodejs12.x Events: Api: Type: HttpApi Properties: Path: / Method: GET Connectors: MyConn: Properties: Destination: Id: SampleTable Permissions: - Read SampleTable: Type: AWS::Serverless::SimpleTable

Dalam 23 baris kode, infrastruktur berikut didefinisikan:

  • Fungsi yang menggunakan AWS Lambda layanan.

  • API HTTP menggunakan layanan Amazon API Gateway.

  • Database yang menggunakan layanan Amazon DynamoDB.

  • Izin AWS Identity and Access Management (IAM) yang diperlukan untuk layanan ini untuk berinteraksi satu sama lain.

Untuk menyediakan infrastruktur ini, template dikerahkan ke AWS CloudFormation. Selama penyebaran, AWS SAM mengubah 23 baris kode menjadi AWS CloudFormation sintaks yang diperlukan untuk menghasilkan sumber daya ini di. AWS AWS CloudFormation Template yang diubah berisi lebih dari 200 baris kode!

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "getAllItemsFunction": { "Type": "AWS::Lambda::Function", "Metadata": { "SamResourceId": "getAllItemsFunction" }, "Properties": { "Code": { "S3Bucket": "aws-sam-cli-managed-default-samclisourcebucket-1a4x26zbcdkqr", "S3Key": "what-is-app/a6f856abf1b2c4f7488c09b367540b5b" }, "Handler": "src/get-all-items.getAllItemsHandler", "Role": { "Fn::GetAtt": [ "getAllItemsFunctionRole", "Arn" ] }, "Runtime": "nodejs12.x", "Tags": [ { "Key": "lambda:createdBy", "Value": "SAM" } ] } }, "getAllItemsFunctionRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] } } ] }, "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" ], "Tags": [ { "Key": "lambda:createdBy", "Value": "SAM" } ] } }, "getAllItemsFunctionApiPermission": { "Type": "AWS::Lambda::Permission", "Properties": { "Action": "lambda:InvokeFunction", "FunctionName": { "Ref": "getAllItemsFunction" }, "Principal": "apigateway.amazonaws.com", "SourceArn": { "Fn::Sub": [ "arn:${AWS::Partition}:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/", { "__ApiId__": { "Ref": "ServerlessHttpApi" }, "__Stage__": "*" } ] } } }, "ServerlessHttpApi": { "Type": "AWS::ApiGatewayV2::Api", "Properties": { "Body": { "info": { "version": "1.0", "title": { "Ref": "AWS::StackName" } }, "paths": { "/": { "get": { "x-amazon-apigateway-integration": { "httpMethod": "POST", "type": "aws_proxy", "uri": { "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${getAllItemsFunction.Arn}/invocations" }, "payloadFormatVersion": "2.0" }, "responses": {} } } }, "openapi": "3.0.1", "tags": [ { "name": "httpapi:createdBy", "x-amazon-apigateway-tag-value": "SAM" } ] } } }, "ServerlessHttpApiApiGatewayDefaultStage": { "Type": "AWS::ApiGatewayV2::Stage", "Properties": { "ApiId": { "Ref": "ServerlessHttpApi" }, "StageName": "$default", "Tags": { "httpapi:createdBy": "SAM" }, "AutoDeploy": true } }, "SampleTable": { "Type": "AWS::DynamoDB::Table", "Metadata": { "SamResourceId": "SampleTable" }, "Properties": { "AttributeDefinitions": [ { "AttributeName": "id", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "id", "KeyType": "HASH" } ], "BillingMode": "PAY_PER_REQUEST" } }, "getAllItemsFunctionMyConnPolicy": { "Type": "AWS::IAM::ManagedPolicy", "Metadata": { "aws:sam:connectors": { "getAllItemsFunctionMyConn": { "Source": { "Type": "AWS::Serverless::Function" }, "Destination": { "Type": "AWS::Serverless::SimpleTable" } } } }, "Properties": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:BatchGetItem", "dynamodb:ConditionCheckItem", "dynamodb:PartiQLSelect" ], "Resource": [ { "Fn::GetAtt": [ "SampleTable", "Arn" ] }, { "Fn::Sub": [ "${DestinationArn}/index/*", { "DestinationArn": { "Fn::GetAtt": [ "SampleTable", "Arn" ] } } ] } ] } ] }, "Roles": [ { "Ref": "getAllItemsFunctionRole" } ] } } } }

Dengan menggunakan AWS SAM, Anda menentukan 23 baris kode infrastruktur. AWS SAM mengubah kode Anda menjadi 200+ baris AWS CloudFormation kode yang diperlukan untuk menyediakan aplikasi Anda.

Apa itu AWS SAMCLI?

AWS SAMCLIIni adalah alat baris perintah yang dapat Anda gunakan dengan AWS SAM templat dan integrasi pihak ketiga yang didukung untuk membangun dan menjalankan aplikasi tanpa server Anda. Gunakan AWS SAMCLI untuk:

  • Menginisialisasi proyek aplikasi baru dengan cepat.

  • Bangun aplikasi Anda untuk penerapan.

  • Lakukan debugging dan pengujian lokal.

  • Men-deploy aplikasi Anda.

  • Konfigurasikan pipeline penyebaran CI/CD.

  • Pantau dan pecahkan masalah aplikasi Anda di cloud.

  • Sinkronkan perubahan lokal ke cloud saat Anda mengembangkan.

  • Dan banyak lagi!

Yang paling AWS SAMCLI baik digunakan saat digunakan dengan AWS SAM dan AWS CloudFormation template. Ini juga bekerja dengan produk pihak ketiga sepertiTerraform.

Inisialisasi proyek baru

Pilih dari template pemula atau pilih lokasi template kustom untuk memulai proyek baru.

Di sini, kita menggunakan sam init perintah untuk menginisialisasi proyek aplikasi baru. Kami memilih proyek Hello World Example untuk memulai. AWS SAMCLIDownload template starter dan membuat struktur direktori folder proyek kami.

Menggunakan sam init untuk memulai proyek aplikasi baru dengan AWS SAMCLI.

Membangun aplikasi Anda untuk penerapan

Package dependensi fungsi Anda dan atur kode proyek dan struktur folder Anda untuk mempersiapkan penerapan.

Di sini, kami menggunakan sam build perintah untuk mempersiapkan aplikasi kami untuk penyebaran. AWS SAMCLIMembuat .aws-sam direktori dan mengatur dependensi aplikasi dan file kami di sana untuk penyebaran.

Menggunakan sam build untuk menyiapkan aplikasi untuk penyebaran.

Lakukan debugging dan pengujian lokal

Di mesin lokal Anda, simulasikan peristiwa, uji API, panggil fungsi, dan lainnya untuk men-debug dan menguji aplikasi Anda.

Di sini, kita menggunakan sam local invoke perintah untuk memanggil kita secara HelloWorldFunction lokal. Untuk mencapai hal ini, AWS SAMCLI membuat wadah lokal, membangun fungsi kita, memanggilnya, dan mengeluarkan hasilnya.

Menggunakan AWS SAMCLI sam local invoke perintah untuk memanggil fungsi secara lokal.

Men-deploy aplikasi Anda

Konfigurasikan setelan penerapan aplikasi Anda dan terapkan ke AWS Cloud untuk menyediakan sumber daya Anda.

Di sini, kami menggunakan sam deploy --guided perintah untuk menyebarkan aplikasi kami melalui aliran interaktif. AWS SAMCLIPanduan kami melalui konfigurasi pengaturan penerapan aplikasi kami, mengubah template kami menjadi AWS CloudFormation, dan menyebarkan AWS CloudFormation untuk membuat sumber daya kami.

Menggunakan AWS SAMCLI sam deploy perintah untuk menyebarkan aplikasi ke AWS Cloud.

Konfigurasikan pipeline penyebaran CI/CD

Buat pipeline integrasi dan pengiriman berkelanjutan (CI/CD) yang aman, menggunakan sistem CI/CD yang didukung.

Di sini, kita menggunakan sam pipeline init --bootstrap perintah untuk mengkonfigurasi pipeline penyebaran CI/CD untuk aplikasi kita. Ini AWS SAMCLI memandu kami melalui opsi kami dan menghasilkan AWS sumber daya dan file konfigurasi untuk digunakan dengan sistem CI/CD kami.

Menggunakan AWS SAMCLI sam pipeline init --bootstrap perintah untuk mengkonfigurasi pipa CI/CD dengan sistem CI/CD pilihan kami.

Pantau dan pecahkan masalah aplikasi Anda di cloud

Lihat informasi penting tentang sumber daya yang Anda gunakan, kumpulkan log, dan gunakan alat pemantauan bawaan seperti. AWS X-Ray

Di sini, kami menggunakan sam list perintah untuk melihat sumber daya yang kami gunakan. Kami mendapatkan endpoint API kami dan memanggilnya, yang memicu fungsi kami. Kemudian, kita gunakan sam logs untuk melihat log fungsi kita.

Menggunakan AWS SAMCLI sam list perintah untuk mendapatkan endpoint API kami. Kemudian, sam logs digunakan untuk melihat log fungsi kita.

Sinkronkan perubahan lokal ke cloud saat Anda mengembangkan

Saat Anda mengembangkan di komputer lokal Anda, secara otomatis menyinkronkan perubahan ke cloud. Lihat perubahan Anda dengan cepat dan lakukan pengujian dan validasi di cloud.

Di sini, kami menggunakan sam sync --watch perintah untuk AWS SAMCLI mengawasi perubahan lokal. Kami memodifikasi HelloWorldFunction kode kami dan AWS SAMCLI secara otomatis mendeteksi perubahan dan menyebarkan pembaruan kami ke cloud.

Menggunakan AWS SAMCLI sam sync perintah untuk menyinkronkan perubahan lokal ke AWS Cloud.

Uji sumber daya yang didukung di cloud

Memanggil dan meneruskan acara ke sumber daya yang didukung di cloud.

Di sini, kami menggunakan sam remote invoke perintah untuk menguji fungsi Lambda yang diterapkan di cloud. Kami menjalankan fungsi Lambda kami dan menerima log dan tanggapannya. Dengan fungsi Lambda kami yang dikonfigurasi untuk mengalirkan respons, responsnya AWS SAMCLI mengalir kembali secara real time.

Menggunakan AWS SAMCLI sam remote invoke perintah untuk menguji fungsi yang kami gunakan di AWS Cloud.

Pelajari selengkapnya

Untuk terus mempelajarinya AWS SAM, lihat sumber daya berikut:

  • AWS SAM Lokakarya Lengkap — Lokakarya yang dirancang untuk mengajari Anda banyak fitur utama yang AWS SAM menyediakan.

  • Sesi dengan SAM - Seri video yang dibuat oleh tim Advokat Pengembang AWS Tanpa Server kami tentang penggunaan. AWS SAM

  • Serverless Land — Situs yang menyatukan informasi terbaru, blog, video, kode, dan sumber belajar untuk AWS tanpa server.

Langkah selanjutnya

Jika ini adalah pertama kalinya Anda menggunakan AWS SAM, lihatMemulai dengan AWS SAM.