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
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 stack Dasar
Topik
- Prasyarat
- Langkah 1: Buat CloudFormation tumpukan
- Langkah 2: Periksa konfigurasi metode API Gateway untuk server Anda
- Langkah 3: Lihat detail server Transfer Family
- Langkah 4: Uji apakah pengguna Anda dapat terhubung ke server
- Langkah 5: Uji SFTP koneksi dan transfer file
- Langkah 6: Batasi akses ke ember
- Perbarui Lambda jika menggunakan Amazon EFS
Prasyarat
Sebelum Anda membuat resource Transfer Family di AWS CloudFormation, buat penyimpanan dan peran pengguna Anda.
Untuk menentukan penyimpanan dan membuat peran pengguna
Bergantung pada penyimpanan yang Anda gunakan, lihat dokumentasi berikut:
Untuk membuat bucket Amazon S3, lihat Bagaimana cara membuat bucket S3? di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
-
Untuk membuat sistem EFS file Amazon, lihatKonfigurasikan sistem EFS file Amazon.
-
Untuk membuat peran pengguna, lihat Buat IAM peran dan kebijakan
Anda memasukkan detail untuk penyimpanan dan peran pengguna saat membuat AWS CloudFormation tumpukan di bagian berikutnya.
Langkah 1: Buat CloudFormation tumpukan
Untuk membuat AWS CloudFormation tumpukan dari template yang disediakan
Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. -
Pilih Buat tumpukan, dan pilih Dengan sumber daya baru (standar).
-
Di panel Prasyarat - Siapkan templat, pilih Template sudah siap.
-
Salin tautan ini, template tumpukan dasar
, dan tempel ke bidang Amazon S3 URL. -
Klik Berikutnya.
-
Tentukan parameter, termasuk nama untuk tumpukan Anda. Pastikan untuk melakukan hal berikut:
Ganti nilai default untuk UserNamedan UserPassword.
-
Untuk UserHomeDirectory, masukkan detail penyimpanan (baik bucket Amazon S3 atau EFS sistem file Amazon) yang Anda buat sebelumnya.
-
Ganti default UserRoleArndengan peran pengguna yang Anda buat sebelumnya. Peran AWS Identity and Access Management (IAM) harus memiliki izin yang sesuai. Untuk contoh kebijakan IAM peran dan bucket, lihatLangkah 6: Batasi akses ke ember.
-
Jika Anda ingin mengautentikasi menggunakan kunci publik alih-alih kata sandi, masukkan kunci publik Anda di bidang UserPublicKey1. Pertama kali Anda terhubung ke server menggunakanSFTP, Anda kemudian memberikan kunci pribadi alih-alih kata sandi.
-
Pilih Berikutnya, lalu pilih Berikutnya lagi di halaman Configure stack options.
-
Tinjau detail tumpukan yang Anda buat, lalu pilih Buat tumpukan.
catatan
Di bagian bawah halaman, di bawah Kemampuan, Anda harus mengakui bahwa AWS CloudFormation mungkin membuat IAM sumber daya.
Langkah 2: Periksa konfigurasi metode API Gateway untuk server Anda
catatan
Untuk meningkatkan keamanan, Anda dapat mengkonfigurasi firewall aplikasi web. AWS WAF adalah firewall aplikasi web yang memungkinkan Anda memantau HTTP dan HTTPS permintaan yang diteruskan ke Amazon API Gateway. Untuk detailnya, lihat Tambahkan firewall aplikasi web.
Untuk memeriksa konfigurasi metode API Gateway untuk server Anda dan menerapkannya
-
Buka konsol API Gateway di https://console.aws.amazon.com/apigateway/
. -
Pilih template dasar Transfer Custom Identity Provider API yang dihasilkan AWS CloudFormation template.
-
Di panel Resources, pilih GET, lalu pilih Permintaan Metode.
-
Untuk Tindakan, pilih Terapkan API. Untuk tahap Deployment, pilih prod, lalu pilih Deploy.
Setelah metode API Gateway berhasil digunakan, lihat kinerjanya di bagian Editor Panggung.
catatan
Salin URL alamat Invoke yang muncul di bagian atas halaman. Anda akan membutuhkannya untuk langkah selanjutnya.
Langkah 3: Lihat detail server Transfer Family
Saat Anda menggunakan template untuk membuat AWS CloudFormation tumpukan, server Transfer Family dibuat secara otomatis.
Untuk melihat detail server Transfer Family
Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. Pilih tumpukan yang Anda buat.
Pilih tab Sumber Daya.
Server ARN ditampilkan di kolom ID Fisik untuk TransferServerbaris. ID server terkandung dalam, misalnya s-11112222333344445. ARN
Buka AWS Transfer Family konsol di https://console.aws.amazon.com/transfer/
, dan pada halaman Server, pilih server baru. ID server cocok dengan ID yang ditampilkan untuk TransferServersumber daya di AWS CloudFormation.
Langkah 4: Uji apakah pengguna Anda dapat terhubung ke server
Untuk menguji apakah pengguna Anda dapat terhubung ke server, menggunakan konsol Transfer Family
Buka AWS Transfer Family konsol di https://console.aws.amazon.com/transfer/
. -
Pada halaman Server, pilih server baru Anda, pilih Tindakan, lalu pilih Uji.
-
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 AWS CloudFormation tumpukan.
-
Untuk Protokol Server, pilih SFTP, dan untuk IP Sumber, masukkan
127.0.0.1
. -
Pilih Uji.
Jika otentikasi pengguna berhasil, pengujian mengembalikan
StatusCode: 200
HTML respons dan JSON objek yang berisi rincian peran dan izin pengguna. Sebagai 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 AWS terkelola API Gateway ke peran yang Anda gunakan untuk AndaAPI.
Langkah 5: Uji SFTP koneksi dan transfer file
Untuk menguji SFTP koneksi
-
Pada perangkat Linux atau macOS, buka terminal perintah.
-
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.rproxy.goskope.comSaat 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), masukkanus-east-2
. -
-
Pada
sftp>
prompt, pastikan bahwa Anda dapat meng-upload (put
), download (get
), dan melihat direktori dan file (pwd
danls
).
Langkah 6: Batasi akses ke ember
Anda dapat membatasi siapa yang dapat mengakses bucket Amazon S3 tertentu. Contoh berikut menunjukkan setelan yang akan digunakan dalam CloudFormation tumpukan Anda dan dalam kebijakan yang Anda pilih untuk pengguna Anda.
Dalam contoh ini, kami menetapkan parameter berikut untuk AWS CloudFormation tumpukan:
CreateServer:
true
UserHomeDirectory:
/myuser-bucket
UserName:
myuser
UserPassword:
MySuperSecretPassword
penting
Ini adalah contoh kata sandi. Saat Anda mengonfigurasi metode API Gateway Anda, pastikan Anda memasukkan kata sandi yang kuat.
UserPublicKey1:
your-public-key
UserRoleArn:
arn:aws:iam::
role-id
:role/myuser-api-gateway-role
UserPublicKey1 adalah kunci publik yang telah Anda hasilkan sebagai bagian dari public/private key pair.
Ini unik untuk peran pengguna yang Anda buat. Kebijakan yang dilampirkan role-id
myuser-api-gateway-role
adalah sebagai berikut:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::myuser-bucket" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:PutObjectAcl", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::myuser-bucket/*" } ] }
Untuk terhubung ke server menggunakanSFTP, 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.rproxy.goskope.comSaat 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), gunakanus-east-2
.
Pada sftp
prompt, Anda diarahkan ke direktori home Anda, yang dapat Anda lihat dengan menjalankan pwd
perintah. Sebagai contoh:
sftp> pwd Remote working directory: /myuser-bucket
Pengguna tidak dapat melihat direktori apa pun di atas direktori home. Sebagai contoh:
sftp> pwd Remote working directory: /myuser-bucket sftp> cd .. sftp> ls Couldn't read directory: Permission denied
Perbarui Lambda jika menggunakan Amazon EFS
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
Buka konsol Lambda di. https://console.aws.amazon.com/lambda/
-
Pilih fungsi Lambda yang Anda buat sebelumnya. Fungsi Lambda memiliki format
stack-name
-GetUserConfigLambda-lambda-identifier
, tempatstack-name
adalah nama CloudFormation tumpukan danlambda-identifier
adalah pengenal untuk fungsi tersebut. -
Di tab Kode, pilih index.js untuk menampilkan kode untuk fungsi tersebut.
-
Dalam
response
, tambahkan baris berikut antaraPolicy
danHomeDirectory
:PosixProfile: {"Uid":
uid-value
, "Gid":gid-value
},Dimana
uid-value
andgid-value
adalah 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 '/' };