

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)?
<a name="what-is-sam"></a>

AWS Serverless Application Model (AWS SAM) adalah kerangka kerja sumber terbuka untuk membangun aplikasi tanpa server menggunakan infrastruktur sebagai kode (IAc). Dengan AWS SAM sintaks singkatan, pengembang mendeklarasikan [CloudFormation](https://aws.amazon.com/cloudformation)sumber daya dan sumber daya tanpa server khusus yang diubah menjadi infrastruktur selama penerapan. Saat bekerja dengan AWS SAM, Anda akan berinteraksi dengan:

1. AWS SAM CLI- Alat baris perintah yang membantu Anda mengembangkan, menguji secara lokal, dan menyebarkan aplikasi tanpa server Anda.

1. AWS SAM Template - Ekstensi yang menyediakan sintaks CloudFormation yang disederhanakan untuk mendefinisikan sumber daya tanpa server.

Ketika Anda menggunakan **sam init** perintah, itu membuat direktori proyek, yang akan kita sebut sebagai AWS SAM proyek, yang biasanya mencakup AWS SAM template Anda, kode aplikasi, dan file konfigurasi lainnya.

## Kapan harus menggunakan AWS SAM
<a name="when-to-use-sam"></a>

AWS SAM adalah solusi IAc yang ideal untuk skenario di mana Anda ingin pengembangan tanpa server yang disederhanakan dengan kekuatan penuh. CloudFormation Misalnya, Anda dapat menggunakan SAM untuk:
+ **Aplikasi tanpa server:** Anda dapat menggunakan SAM untuk mendefinisikan AWS Lambda fungsi dengan cepat, fungsi tahan lama Lambda, Amazon API Gateway, tabel Amazon APIs DynamoDB, dan sumber daya tanpa server lainnya dengan kode minimal.
+ **CloudFormation peningkatan:** Anda dapat menggabungkan SAM dengan CloudFormation template yang ada untuk menambahkan komponen tanpa server ke infrastruktur tradisional. Sumber daya SAM bekerja bersama CloudFormation sumber daya standar dalam template yang sama.
+ **Pengembangan dan pengujian lokal:** Anda dapat menggunakan SAM CLI untuk menguji fungsi Lambda secara lokal, mensimulasikan titik akhir API Gateway, dan men-debug aplikasi tanpa server pada mesin pengembangan Anda sebelum menerapkan ke. AWS
+ **CI/CD untuk tanpa server:** Anda dapat membangun pipeline penerapan menggunakan templat SAM yang secara otomatis menghasilkan CloudFormation infrastruktur yang diperlukan untuk lingkungan pementasan dan produksi.
+ **Migrasi dari sumber daya yang dibuat konsol:** Anda dapat mengonversi fungsi Lambda dan sumber daya API Gateway yang dibuat di Konsol AWS Manajemen menjadi infrastruktur sebagai kode menggunakan templat SAM.

**Membandingkan AWS SAM dengan alat IAc lainnya**
+ Gunakan SAM alih-alih CloudFormation untuk menyederhanakan definisi sumber daya tanpa server sambil mempertahankan kompatibilitas template.
+ Gunakan SAM daripada AWS CDK jika Anda lebih suka pendekatan deklaratif untuk menggambarkan infrastruktur Anda daripada yang terprogram.
+ Gabungkan SAM AWS CDK dengan menggunakan fitur pengujian lokal SAM CLI untuk menyempurnakan aplikasi CDK Anda.

## Fitur utama
<a name="what-is-sam-feature"></a>

AWS SAM menawarkan berbagai manfaat yang meningkatkan pengalaman pengembang dengan memungkinkan Anda untuk: 

**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 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 [AWS SAM CLI](using-sam-cli.md).

**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](managing-permissions-connectors.md).

**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 [Pengantar penggunaan sam sync untuk menyinkronkan ke AWS Cloud](using-sam-cli-sync.md).

**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](terraform-support.md).

## Informasi Terkait
<a name="w2aab5c15"></a>
+ Untuk informasi tentang cara AWS SAM kerja, lihat[Bagaimana cara AWS SAM kerja](what-is-sam-overview.md).
+ Untuk mulai menggunakan AWS SAM, lihat[Memulai dengan AWS SAM](serverless-getting-started.md). 
+ Untuk ikhtisar tentang bagaimana Anda dapat menggunakan AWS SAM untuk membuat aplikasi tanpa server, lihat. [Cara menggunakan AWS SAM](chapter-using-sam.md#chapter-using-sam.title)

# Bagaimana cara AWS SAM kerja
<a name="what-is-sam-overview"></a>

Saat bekerja dengan AWS SAM untuk membuat aplikasi tanpa server Anda, Anda akan berinteraksi dengan komponen-komponen berikut:

1. **[AWS SAM Template](sam-specification.md)**— File penting yang mendefinisikan AWS sumber daya Anda. Template ini mencakup **spesifikasi AWS SAM template** — kerangka kerja sumber terbuka yang dilengkapi dengan sintaks singkat yang disederhanakan yang Anda gunakan untuk menentukan fungsi, peristiwa,, konfigurasi APIs, dan izin aplikasi tanpa server Anda. File ini terletak di AWS SAM proyek, yang merupakan folder aplikasi yang akan dibuat ketika Anda menjalankan **sam init** perintah.

1. **[AWS SAM CLI](using-sam-cli.md)**— Alat baris perintah yang dapat Anda gunakan dengan AWS SAM proyek Anda dan mendukung integrasi pihak ketiga untuk membangun dan menjalankan aplikasi tanpa server Anda. AWS SAMCLIIni adalah alat yang Anda gunakan untuk menjalankan perintah pada AWS SAM proyek Anda dan akhirnya mengubahnya menjadi aplikasi tanpa server Anda.

Untuk mengekspresikan sumber daya, pemetaan sumber peristiwa, dan properti lain yang menentukan aplikasi tanpa server Anda, Anda menentukan sumber daya dan mengembangkan aplikasi Anda dalam AWS SAM template dan file lain dalam proyek Anda. AWS SAM Anda menggunakan perintah AWS SAMCLI untuk menjalankan AWS SAM proyek Anda, yang merupakan cara Anda menginisialisasi, membangun, menguji, dan menerapkan aplikasi tanpa server Anda.

**Baru mengenal tanpa server?**  
Kami sarankan Anda meninjau[Konsep tanpa server untuk AWS Serverless Application Model](what-is-concepts.md).

## Apa spesifikasi AWS SAM template?
<a name="what-is-sam-template-spec"></a>

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** - Anda menggunakan CloudFormation sintaks langsung di AWS SAM template Anda, mengambil keuntungan dari dukungan ekstensif sumber daya dan konfigurasi properti. Jika Anda sudah terbiasa CloudFormation, Anda tidak perlu mempelajari layanan baru untuk mengelola kode infrastruktur aplikasi Anda.
+ **Perpanjangan CloudFormation** - AWS SAM menawarkan sintaks uniknya sendiri yang berfokus secara khusus pada mempercepat pengembangan tanpa server. Anda dapat menggunakan kedua 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. CloudFormation

## Apa AWS SAM proyek dan AWS SAM templatnya?
<a name="what-is-sam-template"></a>

 AWS SAM Proyek ini mencakup AWS SAM template yang berisi spesifikasi AWS SAM template. Spesifikasi ini adalah kerangka kerja sumber terbuka yang 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 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.

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

1. Database untuk menyimpan item.

1. Izin agar aplikasi berjalan dengan aman.

![\[Arsitektur aplikasi aplikasi tanpa server sederhana.\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/images/what-is-sam-06.png)


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: nodejs20.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 CloudFormation. Selama penyebaran, AWS SAM mengubah 23 baris kode menjadi CloudFormation sintaks yang diperlukan untuk menghasilkan sumber daya ini di. AWS CloudFormation Template yang diubah berisi lebih dari 200 baris kode\$1

### CloudFormation Template yang diubah
<a name="what-is-sam-template-example-cfn"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "getAllItemsFunction": {
      "Type": "AWS::Lambda::Function",
      "Metadata": {
        "SamResourceId": "getAllItemsFunction"
      },
      "Properties": {
        "Code": {
          "S3Bucket": "amzn-s3-demo-source-bucket-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\$1 baris CloudFormation kode yang diperlukan untuk menyediakan aplikasi Anda.

## Apa itu AWS SAMCLI?
<a name="what-is-sam-cli"></a>

 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 CI/CD penerapan.
+ Pantau dan pecahkan masalah aplikasi Anda di cloud.
+ Sinkronkan perubahan lokal ke cloud saat Anda mengembangkan.
+ Dan banyak lagi\$1

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

### Inisialisasi proyek baru
<a name="what-is-sam-cli-init"></a>

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.\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/images/what-is-sam-01.gif)


Untuk detail selengkapnya, lihat [Buat aplikasi Anda di AWS SAM](using-sam-cli-init.md).

### Membangun aplikasi Anda untuk penerapan
<a name="what-is-sam-cli-build"></a>

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.\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/images/what-is-sam-02.gif)


Untuk detail selengkapnya, lihat [Bangun aplikasi Anda](serverless-building.md).

### Lakukan debugging dan pengujian lokal
<a name="what-is-sam-cli-local"></a>

Di mesin lokal Anda, simulasikan peristiwa, uji APIs, 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. Anda dapat menggunakan aplikasi seperti Docker untuk menjalankan kontainer di mesin Anda.

![\[Menggunakan AWS SAMCLI sam local invoke perintah untuk memanggil fungsi secara lokal.\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/images/what-is-sam-04.gif)


Untuk lebih jelasnya, lihat [Uji aplikasi Anda](serverless-test-and-debug.md) dan[Debug aplikasi Anda](debug-application.md).

### Men-deploy aplikasi Anda
<a name="what-is-sam-cli-deploy"></a>

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 CloudFormation, dan menyebarkan CloudFormation untuk membuat sumber daya kami.

![\[Menggunakan AWS SAMCLI sam deploy perintah untuk menyebarkan aplikasi ke AWS Cloud.\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/images/what-is-sam-03.gif)


Untuk detail selengkapnya, lihat [Menyebarkan aplikasi dan sumber daya Anda](serverless-deploying.md).

### Konfigurasikan CI/CD pipeline penerapan
<a name="what-is-sam-cli-cicd"></a>

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

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 CI/CD pipeline dengan CI/CD sistem pilihan kami.\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/images/what-is-sam-07.gif)


Untuk detail selengkapnya, lihat [Menyebarkan dengan CI/CD sistem dan jaringan pipa](deploying-options.md#serverless-deploying-ci-cd).

### Pantau dan pecahkan masalah aplikasi Anda di cloud
<a name="what-is-sam-cli-monitor"></a>

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.\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/images/what-is-sam-08.gif)


Untuk detail selengkapnya, lihat [Pantau aplikasi Anda](serverless-monitoring.md).

### Sinkronkan perubahan lokal ke cloud saat Anda mengembangkan
<a name="what-is-sam-cli-sync"></a>

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.\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/images/what-is-sam-05.gif)


### Uji sumber daya yang didukung di cloud
<a name="what-is-sam-cli-remote-invoke"></a>

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.\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/images/what-is-sam-09.gif)


## Pelajari selengkapnya
<a name="what-is-sam-learn"></a>

Untuk terus mempelajarinya AWS SAM, lihat sumber daya berikut:
+ **[AWS SAM Lokakarya Lengkap](https://s12d.com/sam-ws-en-intro)** — Lokakarya yang dirancang untuk mengajari Anda banyak fitur utama yang AWS SAM menyediakan.
+ **[Sesi dengan SAM](https://www.youtube.com/playlist?list=PLJo-rJlep0ED198FJnTzhIB5Aut_1vDAd)** - Seri video yang dibuat oleh tim Advokat Pengembang AWS Tanpa Server kami tentang penggunaan. AWS SAM
+ **[Serverless Land](https://serverlessland.com/)** — Situs yang menyatukan informasi terbaru, blog, video, kode, dan sumber belajar untuk AWS tanpa server.

## Langkah selanjutnya
<a name="what-is-sam-next"></a>

Jika ini adalah pertama kalinya Anda menggunakan AWS SAM, lihat[Memulai dengan AWS SAM](serverless-getting-started.md).

# Konsep tanpa server untuk AWS Serverless Application Model
<a name="what-is-concepts"></a>

Pelajari tentang konsep dasar tanpa server sebelum menggunakan AWS Serverless Application Model ()AWS SAM.

## Konsep tanpa server
<a name="what-is-concepts-terms"></a>

**Arsitektur berbasis peristiwa**  <a name="what-is-concepts-terms-eda"></a>
Aplikasi tanpa server terdiri dari AWS layanan individual, seperti AWS Lambda untuk komputasi dan Amazon DynamoDB untuk manajemen basis data, yang masing-masing melakukan peran khusus. Layanan ini kemudian terintegrasi secara longgar satu sama lain melalui arsitektur berbasis peristiwa. Untuk mempelajari lebih lanjut tentang arsitektur berbasis peristiwa, lihat [Apa itu Arsitektur Berbasis Acara?](https://aws.amazon.com/event-driven-architecture/) . 

**Infrastruktur sebagai Kode (IAc)**  <a name="what-is-concepts-terms-iac"></a>
Infrastructure as Code (IAc) adalah cara memperlakukan infrastruktur dengan cara yang sama seperti pengembang memperlakukan kode, menerapkan ketelitian pengembangan kode aplikasi yang sama untuk penyediaan infrastruktur. Anda menentukan infrastruktur Anda dalam file template, menyebarkannya ke AWS, dan AWS membuat sumber daya untuk Anda. Dengan IAc, Anda menentukan dalam kode apa yang AWS ingin Anda berikan. Untuk perbandingan alat IAc yang tersedia AWS, lihat[Infrastruktur sebagai Kode (IAc)](what-is-iac.md).

**Teknologi tanpa server**  <a name="what-is-concepts-terms-serverless"></a>
Dengan teknologi AWS tanpa server, Anda dapat membangun dan menjalankan aplikasi tanpa harus mengelola server Anda sendiri. Semua manajemen server dilakukan oleh AWS, memberikan banyak manfaat seperti penskalaan otomatis dan ketersediaan tinggi bawaan, memungkinkan Anda membawa ide Anda ke produksi dengan cepat. Menggunakan teknologi tanpa server, Anda dapat fokus pada inti produk Anda tanpa harus khawatir tentang mengelola dan mengoperasikan server. Untuk mempelajari lebih lanjut tentang tanpa server, lihat yang berikut ini:  
+ [Tanpa server di AWS](https://aws.amazon.com/serverless/)
+ [Panduan Pengembang Tanpa Server](https://docs.aws.amazon.com/serverless/latest/devguide/serverless-preface.html) - Memberikan gambaran konseptual pengembangan tanpa server di Cloud. AWS 
*Untuk pengenalan dasar tentang layanan tanpa AWS server inti, lihat Serverless [101: Memahami layanan tanpa server di Serverless](https://serverlessland.com/learn/serverless-101) Land.*

**Aplikasi Tanpa Server**  <a name="what-is-concepts-terms-serverless"></a>
Saat Anda menggunakan AWS SAM, Anda mengelola sumber daya terkait dalam aplikasi, yang terdiri dari AWS SAM proyek dan template Anda. Semua sumber daya dalam aplikasi Anda didefinisikan atau dirujuk dalam AWS SAM template Anda. Saat AWS SAM memproses template Anda, itu menciptakan CloudFormation sumber daya. Di CloudFormation, sumber daya dikelola dalam satu unit yang disebut tumpukan, dan semua sumber daya dalam tumpukan ditentukan oleh CloudFormation template tumpukan.

# Infrastruktur sebagai Kode (IAc)
<a name="what-is-iac"></a>

Dengan Infrastructure as Code (IAc), Anda dapat mengotomatiskan penyebaran dan pengelolaan AWS sumber daya Anda, termasuk aplikasi tanpa server. IAc memungkinkan Anda untuk menentukan infrastruktur Anda menggunakan kode, membuatnya lebih mudah untuk versi, berbagi, dan mereplikasi penerapan Anda. Pendekatan ini membantu Anda:
+ Mempercepat siklus pengembangan Anda
+ Sederhanakan manajemen konfigurasi
+ Meningkatkan keandalan dan konsistensi penerapan Anda

## Alat IAC untuk aplikasi tanpa AWS server
<a name="iac-tools-aws"></a>

AWS menawarkan beberapa alat IAC untuk membantu Anda membangun, menyebarkan, dan mengelola sumber daya cloud Anda. Bagian ini menjelaskan seberapa AWS SAM cocok dalam ekosistem ini dan bekerja dengan alat AWS IAc lainnya.

**AWS CloudFormation**  
Dengan menggunakan [CloudFormation](https://aws.amazon.com/cloudformation/), Anda dapat memodelkan dan menyediakan seluruh AWS infrastruktur Anda dengan templat YAMAL atau JSON. CloudFormation menangani pembuatan sumber daya, pembaruan, dan penghapusan secara otomatis. Saat Anda menerapkan AWS SAM aplikasi, CloudFormation proses template yang diubah untuk membuat dan mengelola sumber daya Anda.

**AWS Serverless Application Model (AWS SAM)**  
AWS SAM membantu Anda membangun aplikasi tanpa server dengan sintaks yang disederhanakan untuk mendefinisikan sumber daya tanpa server. Anda dapat menggunakan AWS SAM template untuk menyediakan fungsi Lambda, database APIs, dan sumber peristiwa menggunakan sintaks YAMAL ringkas. AWS SAM mengubah template ini menjadi CloudFormation template selama penerapan.  
Meskipun AWS SAM mengkhususkan diri dalam aplikasi tanpa server, Anda dapat menggunakan jenis CloudFormation sumber daya apa pun di templat Anda. AWS SAM Ini memberi Anda fleksibilitas untuk memasukkan sumber daya non-server bila diperlukan.

**AWS Cloud Development Kit (AWS CDK)**  
Dengan [AWS CDK](https://aws.amazon.com/cdk/), Anda dapat menentukan infrastruktur tanpa server Anda menggunakan bahasa pemrograman yang sudah dikenal seperti, TypeScript Python, Java, C \$1/.Net, atau Go. Anda dapat menggunakan konstruksi pemrograman seperti loop dan kondisi untuk menentukan infrastruktur Anda, dan AWS CDK menghasilkan CloudFormation template untuk penerapan. Anda dapat menggunakan aplikasi AWS SAMCLI untuk menguji dan men-debug secara lokal yang dibuat dengan. AWS CDK Untuk mempelajari lebih lanjut, lihat [Menguji aplikasi CDK secara lokal](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html).

## Membandingkan alat IAC untuk Aplikasi Tanpa Server
<a name="comparing-iac-tools"></a>

Saat memilih alat IAC untuk aplikasi tanpa server Anda, pertimbangkan preferensi tim Anda, persyaratan proyek, dan alur kerja yang ada. Tabel berikut membandingkan karakteristik utama alat AWS IAc untuk pengembangan tanpa server:


| **Alat** | **Penggunaan utama** | **Terbaik untuk** | **Bekerja dengan AWS SAM** | **Kapan harus memilih** | 
| --- | --- | --- | --- | --- | 
| **CloudFormation** | Mengelola AWS infrastruktur yang kompleks | Aplikasi yang membutuhkan kontrol AWS sumber daya secara terperinci | AWS SAM template berubah menjadi CloudFormation template selama penerapan | Untuk kontrol halus atas sumber daya non-server | 
| **AWS SAM** | Pengembangan aplikasi tanpa server | Tim membangun aplikasi tanpa server menggunakan Lambda | Fungsionalitas asli | Saat berfokus terutama pada arsitektur tanpa server dengan fungsi Lambda, API Gateway, dan sumber daya tanpa server lainnya APIs | 
| **AWS CDK** | Definisi infrastruktur menggunakan bahasa pemrograman | Tim lebih memilih bahasa yang diketik dan pendekatan kode-pertama | Hasilkan AWS SAM template dan gunakan AWS SAMCLI untuk pengujian | Bila Anda membutuhkan definisi infrastruktur terprogram atau logika konfigurasi sumber daya yang kompleks | 

**catatan**  
Meskipun panduan ini berfokus pada alat IAc AWS-native, Terraform adalah solusi IAc populer lainnya yang dapat digunakan untuk mendefinisikan aplikasi tanpa server. AWS SAMCLIMendukung pengujian lokal fungsi Lambda yang didefinisikan dalam Terraform. Untuk informasi selengkapnya, lihat [AWS SAMCLITerraformdukungan](terraform-support.md).

## Pelajari selengkapnya
<a name="iac-learn-more"></a>
+ Untuk mempelajari lebih lanjut tentang DevOps praktik AWS, lihat [Pengantar DevOps tentang AWS](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html)
+ Untuk informasi tentang penggunaan Lambda dengan berbagai alat IAc, lihat Menggunakan [Lambda dengan infrastruktur](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac.html) sebagai kode (IAc)