

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

# Menerbitkan aplikasi Anda dengan AWS SAMCLI
<a name="serverless-sam-template-publishing-applications"></a>

Untuk membuat AWS SAM aplikasi Anda tersedia bagi orang lain untuk menemukan dan menyebarkan, Anda dapat menggunakan AWS SAMCLI untuk mempublikasikannya ke AWS Serverless Application Repository. Untuk mempublikasikan aplikasi Anda menggunakan AWS SAMCLI, Anda harus mendefinisikannya menggunakan AWS SAM template. Anda juga harus sudah mengujinya secara lokal atau di AWS Cloud.

Ikuti instruksi pada topik ini untuk membuat aplikasi baru, membuat versi baru dari aplikasi yang ada, atau memperbarui metadata aplikasi yang ada. (Apa yang Anda lakukan tergantung pada apakah aplikasi sudah ada di AWS Serverless Application Repository, dan apakah ada metadata aplikasi yang berubah.) Untuk informasi selengkapnya tentang metadata aplikasi, lihat [AWS SAM Template properti bagian metadata](serverless-sam-template-publishing-applications-metadata-properties.md).

## Prasyarat
<a name="serverless-sam-template-publishing-applications-prerequisites"></a>

Sebelum Anda mempublikasikan aplikasi untuk AWS Serverless Application Repository menggunakan AWS SAMCLI, Anda harus memiliki yang berikut:
+ Yang AWS SAMCLI diinstal. Untuk informasi selengkapnya, lihat [Instal AWS SAMCLI](install-sam-cli.md). Untuk menentukan AWS SAMCLI apakah diinstal, jalankan perintah berikut:

  ```
  sam --version
  ```
+  AWS SAM Template yang valid.
+ Kode aplikasi Anda dan dependensi yang referensi AWS SAM template.
+ Versi semantik, hanya diperlukan untuk membagikan aplikasi Anda secara publik. Nilai ini bisa hanya sebesar 1,0.
+ URL yang memberi akses ke kode sumber aplikasi Anda.
+ File `README.md`. File ini harus menjelaskan cara pelanggan dapat menggunakan aplikasi Anda dan cara mengonfigurasinya sebelum men-deploynya ke Akun AWS pelanggan sendiri.
+ File `LICENSE.txt`, hanya diperlukan untuk membagikan aplikasi Anda secara publik.
+ Jika aplikasi Anda mencakup aplikasi yang di-nest, Anda harus sudah memublikasikan aplikasi tersebut ke AWS Serverless Application Repository.
+ Kebijakan valid bucket Amazon Simple Storage Service (Amazon S3) yang memberikan layanan izin baca untuk artefak yang Anda unggah ke Amazon S3 ketika Anda mengemas aplikasi Anda. Untuk menyiapkan kebijakan ini, lakukan hal berikut:

  1. Buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

  1. Pilih nama bucket Amazon S3 yang Anda gunakan untuk mengemas aplikasi Anda.

  1. Pilih **Izin**.

  1. Pada tab **Izin**, di bawah **Kebijakan bucket**, pilih **Edit**.

  1. Pada Halaman **Edit kebijakan bucket**, tempel pernyataan kebijakan berikut ke editor **Kebijakan**. Pada pernyataan kebijakan, pastikan untuk menggunakan nama bucket Anda di elemen `Resource` dan ID akun AWS di elemen `Condition`. Ekspresi dalam `Condition` elemen memastikan bahwa AWS Serverless Application Repository memiliki izin untuk mengakses hanya aplikasi dari AWS akun yang ditentukan. Untuk informasi selengkapnya tentang pernyataan kebijakan, lihat [Referensi elemen kebijakan JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) di *Panduan Pengguna IAM*.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Principal": {
                     "Service":  "serverlessrepo.amazonaws.com"
                 },
                 "Action": "s3:GetObject",
                 "Resource": "arn:aws:s3:::<your-bucket-name>/*",
                 "Condition" : {
                     "StringEquals": {
                         "aws:SourceAccount": "123456789012"
                     }
                 }
             }
         ]
     }
     ```

------

  1. Pilih **Simpan perubahan**.

## Memublikasikan aplikasi baru
<a name="serverless-sam-template-publishing-applications-new-app"></a>

### Langkah 1: Tambahkan `Metadata` bagian ke AWS SAM template
<a name="serverless-sam-template-publishing-applications-step1"></a>

Pertama, tambahkan `Metadata` bagian ke AWS SAM template Anda. Berikan informasi aplikasi yang akan dipublikasikan ke AWS Serverless Application Repository.

Berikut ini adalah contoh bagian `Metadata`:

```
Metadata:
  AWS::ServerlessRepo::Application:
    Name: my-app
    Description: hello world
    Author: user1
    SpdxLicenseId: Apache-2.0
    LicenseUrl: LICENSE.txt
    ReadmeUrl: README.md
    Labels: ['tests']
    HomePageUrl: https://github.com/user1/my-app-project
    SemanticVersion: 0.0.1
    SourceCodeUrl: https://github.com/user1/my-app-project

Resources:
  HelloWorldFunction:
    Type: AWS::Lambda::Function
      Properties:
        ...
        CodeUri: source-code1
        ...
```

Untuk informasi selengkapnya tentang `Metadata` bagian AWS SAM templat, lihat[AWS SAM Template properti bagian metadata](serverless-sam-template-publishing-applications-metadata-properties.md).

### Langkah 2: Kemas aplikasi
<a name="serverless-sam-template-publishing-applications-step2"></a>

Jalankan AWS SAMCLI perintah berikut, yang mengunggah artefak aplikasi ke Amazon S3 dan mengeluarkan file template baru yang disebut: `packaged.yaml`

```
sam package --output-template-file packaged.yaml --s3-bucket <your-bucket-name>
```

Anda menggunakan file templat `packaged.yaml` di langkah berikutnya untuk memublikasikan aplikasi ke AWS Serverless Application Repository. File ini mirip dengan file templat asli (`template.yaml`), tetapi memiliki perbedaan kunci— properti inti `CodeUri`, `LicenseUrl`, dan `ReadmeUrl` menunjuk pada bucket Amazon S3 dan objek yang mencakup artefaknya masing-masing.

Sinppet berikut dari contoh file templat `packaged.yaml` menunjukkan properti `CodeUri`:

```
MySampleFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: s3://bucketname/fbd77a3647a4f47a352fcObjectGUID

...
```

### Langkah 3: Publikasikan aplikasi
<a name="serverless-sam-template-publishing-applications-step3"></a>

Untuk mempublikasikan versi pribadi AWS SAM aplikasi Anda ke AWS Serverless Application Repository, jalankan AWS SAMCLI perintah berikut:

```
sam publish --template packaged.yaml --region us-east-1
```

Output dari perintah `sam publish` memuat link ke aplikasi Anda pada AWS Serverless Application Repository. Anda juga dapat langsung membuka [Halaman arahan AWS Serverless Application Repository](https://serverlessrepo.aws.amazon.com/applications) dan mencari aplikasi Anda.

### Langkah 4: Bagikan aplikasi (opsional)
<a name="serverless-sam-template-publishing-applications-step4"></a>

Secara default, aplikasi Anda diatur pada pengaturan privat, sehingga tidak terlihat oleh akun AWS lain. Untuk membagikan aplikasi Anda dengan orang lain, Anda harus membuatnya publik atau memberikan izin ke daftar AWS akun tertentu.

*Untuk informasi tentang berbagi aplikasi menggunakan AWS CLI, lihat [Contoh Kebijakan AWS Serverless Application Repository Berbasis Sumber Daya](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/security_iam_resource-based-policy-examples.html) di Panduan Pengembang.AWS Serverless Application Repository * Untuk informasi tentang berbagi aplikasi menggunakan Konsol Manajemen AWS, lihat [Berbagi Aplikasi](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-how-to-publish.html#share-application) di *Panduan Developer AWS Serverless Application Repository *.

## Memublikasikan versi baru aplikasi yang sudah ada
<a name="serverless-sam-template-publishing-applications-new-version"></a>

Setelah Anda menerbitkan aplikasi ke AWS Serverless Application Repository, Anda mungkin ingin mempublikasikan versi baru dari itu. Misalnya, Anda mungkin telah mengubah kode fungsi Lambda Anda atau menambahkan komponen baru ke arsitektur aplikasi Anda.

Untuk memperbarui aplikasi yang telah Anda publikasikan sebelumnya, Aplikasi dipublikasikan kembali menggunakan proses yang sama pada detail sebelumnya. Di bagian `Metadata` file templat AWS SAM , berikan nama aplikasi yang sama dengan nama aplikasi yang sebelumnya Anda publikasikan, tetapi sertakan nilai `SemanticVersion` baru.

Misalnya, pertimbangkan aplikasi yang dipublikasikan dengan nama `SampleApp` dan `SemanticVersion` dari `1.0.0`. Untuk memperbarui aplikasi tersebut, templat AWS SAM harus memiliki nama aplikasi `SampleApp` dan `SemanticVersion` dari `1.0.1` (atau apa pun selain `1.0.0`).

## Topik Tambahan
<a name="serverless-sam-template-publishing-applications-additional-topics"></a>
+ [AWS SAM Template properti bagian metadata](serverless-sam-template-publishing-applications-metadata-properties.md)