

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 khusus
<a name="gateway-api-tutorial"></a>

Tutorial ini menggambarkan cara mengatur metode Amazon API Gateway dan menggunakannya sebagai penyedia identitas khusus untuk mengunggah file ke AWS Transfer Family server. Tutorial ini menggunakan template tumpukan [ dasar](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-basic-apig.template.yml), dan fungsionalitas 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: Melihat 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 bucket](#example-bucket)
+ [Perbarui Lambda jika menggunakan Amazon EFS](#lambda-posix)

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

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

**Untuk menentukan penyimpanan dan membuat peran pengguna**

1. Tergantung 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)dalam 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 [Membuat peran dan kebijakan IAM](requirements-roles.md)

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

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

**Untuk membuat sebuah 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 template, pilih ** Pilih template 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 tempelkan 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 untuk penyimpanan (baik bucket Amazon S3 atau sistem file Amazon EFS) yang Anda buat sebelumnya.
   + Ganti default ** UserRoleArn ** dengan peran pengguna yang Anda buat sebelumnya. Per AWS Identity and Access Management an (IAM) harus memiliki izin yang sesuai. Untuk contoh peran IAM dan kebijakan bucket, lihat[Langkah 6: Batasi akses ke bucket](#example-bucket). 
   + Jika Anda ingin mengotentikasi 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 Ber ** ikutnya ** lagi pada ** halaman ** Konfigurasi opsi tumpukan. 

1. Tinjau detail untuk tumpukan yang Anda buat, lalu pilih ** Buat tumpukan**. 
**catatan**  
Di bagian bawah halaman, di bawah Kem ** ampuan**, 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 mengonfigurasi 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 [Menambahkan 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 mengirim permintaan duplikat atau berulang ke API Gateway
Mengaktifkan caching akan menyebabkan API Gateway merespons dengan data yang tidak cocok, mengakibatkan tanggapan yang tidak valid terhadap permintaan otentikasi

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

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 Pro ** vider yang dihasilkan CloudFormation template.

1. Di ** panel ** Sumber daya, pilih ** GET**, lalu pilih Per ** mintaan Metode**.

1. Untuk T ** ind ** akan, pilih De ** ploy API**. Untuk tahap ** Deployment**, pilih ** prod**, lalu pilih Deploy**. **

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

## Langkah 3: Melihat 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 menunjukkan daftar sumber daya yang dibuat selama pembuatan CloudFormation tumpukan, dengan detail untuk server Transfer Family disorot.](https://docs.aws.amazon.com/id_id/transfer/latest/userguide/images/apig-find-server-id.png)

   Server ARN ditampilkan di ** kolom ID ** Fisik untuk ** TransferServer ** baris. 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 Tind ** akan**, lalu pilih U ** ji**.

1. Masukkan teks untuk kredenSIAL masuk Anda ke bidang Nama ** Pengguna, dan ke ** bidang ** Kata ** Sandi. Ini adalah nilai yang Anda tetapkan saat Anda menerapkan tumpu CloudFormation kan.

1. Untuk ** Server Protocol**, 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 terkel AWS ola 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 pasangan kunci 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 pasangan kunci, masukkan perintah ini: 

     ` sftp -i {{private-key-file}} {{myuser}}@{{server-ID}}.server.transfer.{{region-code}}.amazonaws.com `
**catatan**  
Untuk `sftp` perintah ini, masukkan kode untuk 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 Anda dapat mengunggah (`put`), mengunduh (`get`), dan melihat direktori dan file (`pwd`dan`ls`). 

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

Anda dapat membatasi siapa yang dapat mengakses bucket Amazon S3 tertentu. Contoh berikut menunjukkan pengaturan yang akan digunakan dalam CloudFormation tumpukan dan 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`

``Ini ** UserPublicKey1 ** adalah kunci publik yang telah Anda buat sebagai bagian dari pasangan public/private kunci.

`{{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 menyambung ke server menggunakan SFTP, masukkan salah satu perintah berikut pada prompt. 
+ Jika Anda menggunakan kata sandi untuk mengotentikasi, 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 pasangan kunci untuk mengotentikasi, 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 untuk Wilayah AWS lokasi server Transfer Family Anda. 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**

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}} adalah 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.  Di dalamnya`response`, tambahkan baris berikut antara `Policy` dan`HomeDirectory`: 

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

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

   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 '/'
       };
   ```