

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

# Menyiapkan metode Amazon API Gateway sebagai penyedia identitas kustom
<a name="gateway-api-tutorial"></a>

Tutorial ini menggambarkan cara menyiapkan metode Amazon API Gateway dan menggunakannya sebagai penyedia identitas khusus untuk mengunggah file ke AWS Transfer Family server. Tutorial ini menggunakan [template stack Dasar](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-basic-apig.template.yml), dan fungsi dasar lainnya sebagai contoh saja. 

**Topics**
+ [Prasyarat](#prereq-api-gateway-tutorial)
+ [Langkah 1: Buat CloudFormation tumpukan](#create-cf-stack)
+ [Langkah 2: Periksa konfigurasi metode API Gateway untuk server Anda](#deploy-api-gateway)
+ [Langkah 3: Lihat detail server Transfer Family](#create-transfer-server)
+ [Langkah 4: Uji apakah pengguna Anda dapat terhubung ke server](#test-user-server-connect)
+ [Langkah 5: Uji koneksi SFTP dan transfer file](#test-sftp-connection)
+ [Langkah 6: Batasi akses ke ember](#example-bucket)
+ [Perbarui Lambda jika menggunakan Amazon EFS](#lambda-posix)

## Prasyarat
<a name="prereq-api-gateway-tutorial"></a>

Sebelum Anda membuat resource Transfer Family di CloudFormation, buat penyimpanan dan peran pengguna Anda.

**Untuk menentukan penyimpanan dan membuat peran pengguna**

1. Bergantung pada penyimpanan yang Anda gunakan, lihat dokumentasi berikut:
   + Untuk membuat bucket Amazon S3, lihat [Bagaimana cara membuat bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket-overview.html)? di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*.
   + Untuk membuat sistem file Amazon EFS, lihat[Konfigurasikan sistem file Amazon EFS](configure-storage.md#requirements-efs).

1. Untuk membuat peran pengguna, lihat [Buat peran dan kebijakan IAM](requirements-roles.md)

Anda memasukkan detail untuk penyimpanan Anda dan peran pengguna Anda ketika Anda membuat CloudFormation tumpukan Anda di bagian berikutnya.

## Langkah 1: Buat CloudFormation tumpukan
<a name="create-cf-stack"></a>

**Untuk membuat AWS CloudFormation tumpukan dari template yang disediakan**

1. Buka CloudFormation konsol di [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Pilih **Buat tumpukan**, dan pilih **Dengan sumber daya baru (standar)**. 

1. Di panel **Prasyarat - Siapkan templat**, pilih **Pilih** templat yang ada. 

1. Salin tautan ini, [template tumpukan dasar](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-basic-apig.template.yml), dan tempel ke bidang **URL Amazon S3**. 

1. Klik **Berikutnya**. 

1. Tentukan parameter, termasuk nama untuk tumpukan Anda. Pastikan untuk melakukan hal berikut: 
   + Ganti nilai default untuk **UserName**dan **UserPassword**.
   + Untuk **UserHomeDirectory**, masukkan detail penyimpanan (baik bucket Amazon S3 atau sistem file Amazon EFS) yang Anda buat sebelumnya.
   + Ganti default **UserRoleArn**dengan peran pengguna yang Anda buat sebelumnya. Peran AWS Identity and Access Management (IAM) harus memiliki izin yang sesuai. Untuk contoh peran IAM dan kebijakan bucket, lihat[Langkah 6: Batasi akses ke ember](#example-bucket). 
   + Jika Anda ingin mengautentikasi menggunakan kunci publik alih-alih kata sandi, masukkan kunci publik Anda di **UserPublicKey1**bidang. Pertama kali Anda terhubung ke server menggunakan SFTP, Anda kemudian memberikan kunci pribadi alih-alih kata sandi. 

1. Pilih **Berikutnya**, lalu pilih **Berikutnya** lagi di halaman **Configure stack options**. 

1. Tinjau detail tumpukan yang Anda buat, lalu pilih **Buat tumpukan**. 
**catatan**  
Di bagian bawah halaman, di bawah **Kemampuan**, Anda harus mengakui bahwa CloudFormation mungkin membuat sumber daya IAM. 

## Langkah 2: Periksa konfigurasi metode API Gateway untuk server Anda
<a name="deploy-api-gateway"></a>

**catatan**  
Untuk meningkatkan keamanan, Anda dapat mengkonfigurasi firewall aplikasi web. AWS WAF adalah firewall aplikasi web yang memungkinkan Anda memantau permintaan HTTP dan HTTPS yang diteruskan ke Amazon API Gateway. Lihat perinciannya di [Tambahkan firewall aplikasi web](web-application-firewall.md).

**Jangan aktifkan caching API Gateway**  
Jangan aktifkan caching untuk metode API Gateway Anda saat menggunakannya sebagai penyedia identitas khusus untuk Transfer Family. Caching tidak pantas dan tidak valid untuk permintaan otentikasi karena:  
Setiap permintaan otentikasi unik dan memerlukan respons langsung, bukan respons yang di-cache
Caching tidak memberikan manfaat karena Transfer Family tidak pernah mengirimkan permintaan duplikat atau berulang ke API Gateway
Mengaktifkan caching akan menyebabkan API Gateway merespons dengan data yang tidak cocok, sehingga respons yang tidak valid terhadap permintaan otentikasi

**Untuk memeriksa konfigurasi metode API Gateway untuk server Anda dan menerapkannya**

1. <a name="step_invoke_url"></a>

   Buka konsol API Gateway di [https://console.aws.amazon.com/apigateway/](https://console.aws.amazon.com/apigateway/). 

1. Pilih **API template dasar Transfer Custom Identity Provider** yang dihasilkan CloudFormation template.

1. Di panel **Resources**, pilih **GET**, lalu pilih **Method Request**.

1. Untuk **Tindakan**, pilih **Deploy API**. **Untuk **tahap Deployment**, pilih **prod**, lalu pilih Deploy.**

   Setelah metode API Gateway berhasil diterapkan, lihat kinerjanya di bagian **Editor Panggung**.
**catatan**  
Salin alamat **URL Invoke** yang muncul di bagian atas halaman. Anda akan membutuhkannya untuk langkah selanjutnya.

## Langkah 3: Lihat detail server Transfer Family
<a name="create-transfer-server"></a>

Saat Anda menggunakan template untuk membuat CloudFormation tumpukan, server Transfer Family dibuat secara otomatis.

**Untuk melihat detail server Transfer Family**

1. Buka CloudFormation konsol di [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Pilih tumpukan yang Anda buat.

1. Pilih tab **Sumber Daya**.  
![Layar yang menampilkan daftar sumber daya yang dibuat selama pembuatan CloudFormation tumpukan, dengan detail untuk server Transfer Family disorot.](http://docs.aws.amazon.com/id_id/transfer/latest/userguide/images/apig-find-server-id.png)

   Server ARN ditampilkan di kolom **Physical ID** untuk baris. **TransferServer** **ID server terkandung dalam ARN, misalnya s-11112222333344445.**

1. Buka AWS Transfer Family konsol di [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/), dan pada halaman **Server**, pilih server baru.

   ID server cocok dengan ID yang ditampilkan untuk **TransferServer**sumber daya di CloudFormation.

## Langkah 4: Uji apakah pengguna Anda dapat terhubung ke server
<a name="test-user-server-connect"></a>

**Untuk menguji apakah pengguna Anda dapat terhubung ke server, menggunakan konsol Transfer Family**

1. Buka AWS Transfer Family konsol di [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/).

1. Pada halaman **Server**, pilih server baru Anda, pilih **Tindakan**, lalu pilih **Uji**.

1. **Masukkan teks untuk kredensi login Anda ke dalam bidang **Nama Pengguna**, dan ke bidang Kata Sandi.** Ini adalah nilai yang Anda tetapkan saat Anda menerapkan CloudFormation tumpukan.

1. Untuk **Protokol Server**, pilih **SFTP**, dan untuk **IP Sumber, masukkan**. **127.0.0.1** 

1. Pilih **Uji**.

   Jika otentikasi pengguna berhasil, pengujian mengembalikan respons `StatusCode: 200` HTML dan objek JSON yang berisi rincian peran dan izin pengguna. Contoh:

   ```
   {
       "Response": "{\"Role\": \"arn:aws:iam::{{123456789012}}:role/{{my-user-role}}\",\"HomeDirectory\": \"/${transfer:HomeBucket}/\"}",
       "StatusCode": 200,
       "Message": "",
       "Url": "https://{{1a2b3c4d5e}}.execute-api.{{us-east-2}}.amazonaws.com/prod/servers/s-{{1234abcd5678efgh0}}/users/{{myuser}}/config"
   }
   ```

   Jika pengujian gagal, tambahkan salah satu kebijakan yang AWS dikelola API Gateway ke peran yang Anda gunakan untuk API Anda. 

## Langkah 5: Uji koneksi SFTP dan transfer file
<a name="test-sftp-connection"></a>

**Untuk menguji koneksi SFTP**

1. Pada perangkat Linux atau macOS, buka terminal perintah. 

1. Masukkan salah satu perintah berikut, tergantung pada apakah Anda menggunakan kata sandi atau key pair untuk otentikasi. 
   + Jika Anda menggunakan kata sandi, masukkan perintah ini:

      ` sftp -o PubkeyAuthentication=no {{myuser}}@{{server-ID}}.server.transfer.{{region-code}}.amazonaws.com ` 

     Saat diminta, masukkan kata sandi Anda.
   +  Jika Anda menggunakan key pair, masukkan perintah ini: 

     ` sftp -i {{private-key-file}} {{myuser}}@{{server-ID}}.server.transfer.{{region-code}}.amazonaws.com `
**catatan**  
Untuk `sftp` perintah ini, masukkan kode Wilayah AWS tempat server Transfer Family Anda berada. Misalnya, jika server Anda berada di AS Timur (Ohio), masukkan**us-east-2**.

1.  Pada `sftp>` prompt, pastikan bahwa Anda dapat meng-upload (`put`), download (`get`), dan melihat direktori dan file (`pwd`dan`ls`). 

## Langkah 6: Batasi akses ke ember
<a name="example-bucket"></a>

Anda dapat membatasi siapa yang dapat mengakses bucket Amazon S3 tertentu. Contoh berikut menunjukkan setelan yang akan digunakan di CloudFormation tumpukan Anda dan dalam kebijakan yang Anda pilih untuk pengguna Anda. 

Dalam contoh ini, kami menetapkan parameter berikut untuk CloudFormation tumpukan: 
+ **CreateServer**: `true`
+ **UserHomeDirectory**: `/amzn-s3-demo-bucket1`
+ **UserName**: `myuser`
+ **UserPassword**: `MySuperSecretPassword`
**penting**  
Ini adalah contoh kata sandi. Saat mengonfigurasi metode API Gateway, pastikan Anda memasukkan kata sandi yang kuat.
+ **UserPublicKey1**: `{{your-public-key}}`
+ **UserRoleArn**: `arn:aws:iam::{{role-id}}:role/myuser-api-gateway-role`

``**UserPublicKey1**Ini adalah kunci publik yang telah Anda hasilkan sebagai bagian dari public/private key pair.

`{{role-id}}`Ini unik untuk peran pengguna yang Anda buat. Kebijakan yang dilampirkan `myuser-api-gateway-role` adalah sebagai berikut: 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObjectAcl",
                "s3:GetObject",
                "s3:DeleteObjectVersion",
                "s3:DeleteObject",
                "s3:PutObjectAcl",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*"
        }
    ]
}
```

 Untuk terhubung ke server menggunakan SFTP, masukkan salah satu perintah berikut pada prompt. 
+ Jika Anda menggunakan kata sandi untuk mengautentikasi, jalankan perintah berikut:

   ` sftp -o PubkeyAuthentication=no {{myuser}}@{{transfer-server-ID}}.server.transfer.{{region-id}}.amazonaws.com` 

  Saat diminta, masukkan kata sandi Anda.
+  Jika Anda menggunakan key pair untuk mengautentikasi, jalankan perintah berikut: 

  ` sftp -i {{private-key-file}} myuser@{{transfer-server-ID}}.server.transfer.{{region-id}}.amazonaws.com `

**catatan**  
Untuk `sftp` perintah ini, gunakan ID Wilayah AWS tempat server Transfer Family Anda berada. Misalnya, jika server Anda berada di AS Timur (Ohio), gunakan`us-east-2`. 

 Pada `sftp` prompt, Anda diarahkan ke direktori home Anda, yang dapat Anda lihat dengan menjalankan `pwd` perintah. Contoh: 

```
sftp> pwd
Remote working directory: /amzn-s3-demo-bucket1
```

Pengguna tidak dapat melihat direktori apa pun di atas direktori home. Contoh: 

```
sftp> pwd
Remote working directory: /amzn-s3-demo-bucket1
sftp> cd ..
sftp> ls
Couldn't read directory: Permission denied
```

## Perbarui Lambda jika menggunakan Amazon EFS
<a name="lambda-posix"></a>

 Jika Anda memilih Amazon EFS sebagai opsi penyimpanan untuk server Transfer Family, Anda perlu mengedit fungsi lambda untuk tumpukan Anda. 

**Untuk menambahkan profil Posix ke fungsi Lambda Anda**

1. Buka konsol Lambda di. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)

1.  Pilih fungsi Lambda yang Anda buat sebelumnya. Fungsi Lambda memiliki format **{{stack-name}}- GetUserConfigLambda - {{lambda-identifier}}**, di mana {{stack-name}} nama CloudFormation tumpukan dan {{lambda-identifier}} merupakan pengidentifikasi untuk fungsi tersebut. 

1.  Di tab **Kode**, pilih **index.js** untuk menampilkan kode untuk fungsi tersebut. 

1.  Dalam`response`, tambahkan baris berikut antara `Policy` dan`HomeDirectory`: 

    ` PosixProfile: {"Uid": {{uid-value}}, "Gid": {{gid-value}}}, ` 

    Dimana {{uid-value}} dan {{gid-value}} merupakan bilangan bulat, 0 atau lebih besar, yang mewakili ID Pengguna dan ID Grup masing-masing. 

   Misalnya, setelah Anda menambahkan profil Posix, bidang respons mungkin terlihat seperti berikut:

   ```
    response = {
         Role: 'arn:aws:iam::123456789012:role/api-gateway-transfer-efs-role', // The user will be authenticated if and only if the Role field is not blank
         Policy: '', // Optional JSON blob to further restrict this user's permissions
         PosixProfile: {"Gid": 65534, "Uid": 65534},
         HomeDirectory: '/fs-fab2c234' // Not required, defaults to '/'
       };
   ```