Menyiapkan dan menggunakan konektor SFTP - AWS Transfer Family

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

Menyiapkan dan menggunakan konektor SFTP

Tujuan dari konektor adalah untuk membangun hubungan antara AWS penyimpanan Anda dan server SFTP mitra. Anda dapat mengirim file dari Amazon S3 ke tujuan eksternal milik mitra. Anda juga dapat menggunakan konektor SFTP untuk mengambil file dari server SFTP mitra.

Tutorial ini menggambarkan cara mengatur konektor SFTP, dan kemudian mentransfer file antara penyimpanan Amazon S3 dan server SFTP.

Konektor SFTP mengambil kredensi SFTP dari AWS Secrets Manager untuk mengautentikasi ke server SFTP jarak jauh dan membuat koneksi. Konektor mengirim file ke atau mengambil file dari server jarak jauh, dan menyimpan file di Amazon S3. Peran IAM digunakan untuk mengizinkan akses ke bucket Amazon S3 dan ke kredensil yang disimpan di Secrets Manager. Dan Anda dapat masuk ke Amazon CloudWatch.

Diagram arsitektur untuk bagaimana konektor SFTP berinteraksi dengan Secrets Manager, Amazon S3, CloudWatch log, peran IAM, dan server SFTP jarak jauh.

Posting blog berikut menyediakan arsitektur referensi untuk membangun alur kerja MFT menggunakan konektor SFTP, termasuk enkripsi file menggunakan PGP sebelum mengirimnya ke server SFTP jarak jauh menggunakan konektor SFTP: Merancang transfer file terkelola yang aman dan sesuai dengan konektor SFTP dan enkripsi PGP. AWS Transfer Family

Langkah 1: Buat sumber daya pendukung yang diperlukan

Anda dapat menggunakan konektor SFTP untuk menyalin file antara Amazon S3 dan server SFTP jarak jauh apa pun. Untuk tutorial ini, kami menggunakan AWS Transfer Family server sebagai server SFTP jarak jauh kami. Kita perlu membuat dan mengkonfigurasi sumber daya berikut:

Buat ember Amazon S3

Untuk membuat bucket Amazon S3
  1. Masuk ke AWS Transfer Family konsol di https://console.aws.amazon.com/s3/.

  2. Pilih Wilayah dan masukkan nama.

    Untuk tutorial ini, ember kami ada diUS East (N. Virginia) us-east-1, dan namanyasftp-server-storage-east.

  3. Terima defaultnya dan pilih Buat bucket.

Untuk detail selengkapnya tentang membuat bucket Amazon S3, lihat Bagaimana cara membuat bucket S3? di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Buat peran IAM dengan izin yang diperlukan

Untuk peran akses, buat kebijakan dengan izin berikut.

Contoh berikut memberikan izin yang diperlukan untuk mengakses DOC-EXAMPLE-BUCKET di Amazon S3, dan rahasia tertentu yang disimpan di Secrets Manager.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/SecretName-6RandomCharacters" } ] }

Ganti item sebagai berikut:

  • Untuk DOC-EXAMPLE-BUCKET, tutorialnya menggunakan. s3-storage-east

  • Untuk wilayah, tutorial menggunakanus-east-1.

  • Untuk account-id, gunakan ID Anda Akun AWS .

  • Untuk SecretName-6 RandomCharacters, kami using sftp-connector1 untuk nama (Anda akan memiliki enam karakter acak Anda sendiri untuk rahasia Anda).

Anda juga harus memastikan bahwa peran ini berisi hubungan kepercayaan yang memungkinkan konektor mengakses sumber daya Anda saat melayani permintaan transfer pengguna Anda. Untuk detail tentang membangun hubungan kepercayaan, lihatUntuk membangun hubungan kepercayaan.

catatan

Untuk melihat detail untuk peran yang kita gunakan untuk tutorial, lihatGabungan peran pengguna dan akses.

Buat dan simpan rahasia di AWS Secrets Manager

Kita perlu menyimpan rahasia di Secrets Manager untuk menyimpan kredensil pengguna untuk konektor SFTP Anda. Anda dapat menggunakan kata sandi, kunci pribadi SSH, atau keduanya. Untuk tutorial, kita menggunakan kunci pribadi.

catatan

Ketika Anda menyimpan rahasia di Secrets Manager, Anda Akun AWS dikenakan biaya. Untuk informasi tentang harga, lihat AWS Secrets Manager Harga.

Sebelum Anda memulai prosedur untuk menyimpan rahasia, mengambil dan memformat kunci pribadi Anda. Kunci pribadi harus sesuai dengan kunci publik yang dikonfigurasi untuk pengguna di server SFTP jarak jauh. Untuk tutorial kami, kunci pribadi harus sesuai dengan kunci publik yang disimpan untuk pengguna uji kami di server SFTP Transfer Family yang kami gunakan sebagai server jarak jauh.

Untuk melakukan ini, jalankan perintah berikut:

jq -sR . path-to-private-key-file

Misalnya, jika file kunci pribadi Anda berada di~/.ssh/sftp-testuser-privatekey, perintahnya adalah sebagai berikut.

jq -sR . ~/.ssh/sftp-testuser-privatekey

Ini menghasilkan kunci dalam format yang benar (dengan karakter baris baru yang disematkan) ke output standar. Salin teks ini di suatu tempat, karena Anda harus menempelkannya dalam prosedur berikut (pada langkah 6).

Untuk menyimpan kredensi pengguna di Secrets Manager untuk konektor SFTP
  1. Masuk ke AWS Management Console dan buka AWS Secrets Manager konsol di https://console.aws.amazon.com/secretsmanager/.

  2. Pada panel navigasi kiri, pilih Rahasia.

  3. Pada halaman Rahasia, pilih Simpan rahasia baru.

  4. Pada halaman Pilih jenis rahasia, untuk tipe Rahasia, pilih Jenis rahasia lainnya.

  5. Di bagian pasangan kunci/Nilai, pilih tab kunci/Nilai.

    • Kunci — MasukkanUsername.

    • nilai — Masukkan nama pengguna kami,sftp-testuser.

  6. Untuk memasukkan kunci, kami sarankan Anda menggunakan tab Plaintext.

    1. Pilih Tambah baris, lalu masukkanPrivateKey.

    2. Pilih tab Plaintext. Bidang sekarang berisi teks berikut:

      {"Username":"sftp-testuser","PrivateKey":""}
    3. Tempelkan teks untuk kunci pribadi Anda (disimpan sebelumnya) di antara tanda kutip ganda kosong (“”).

      Layar Anda akan terlihat sebagai berikut (data kunci berwarna abu-abu).

      Rahasia dalam teks biasa, menunjukkan nama pengguna dan kunci pribadi.
  7. Pilih Selanjutnya.

  8. Pada halaman Konfigurasi rahasia, masukkan nama untuk rahasia Anda. Untuk tutorial ini, kami beri nama rahasianyaaws/transfer/sftp-connector1.

  9. Pilih Berikutnya, dan kemudian terima default pada halaman Konfigurasi rotasi. Lalu pilih Selanjutnya.

  10. Pada halaman Review, pilih Store untuk membuat dan menyimpan rahasia.

Langkah 2: Buat dan uji konektor SFTP

Di bagian ini, kami membuat konektor SFTP yang menggunakan semua sumber daya yang kami buat sebelumnya. Untuk detail selengkapnya, lihat Konfigurasikan konektor SFTP.

Untuk membuat konektor SFTP
  1. Buka AWS Transfer Family konsol di https://console.aws.amazon.com/transfer/.

  2. Di panel navigasi kiri, pilih Konektor, lalu pilih Buat konektor.

  3. Pilih SFTP untuk jenis konektor untuk membuat konektor SFTP, lalu pilih Berikutnya.

    Konsol Transfer Family, menampilkan halaman Buat konektor, tempat Anda memilih jenis konektor. SFTP dipilih.
  4. Di bagian Konfigurasi konektor, berikan informasi berikut:

    • Untuk URL, masukkan URL server SFTP jarak jauh. Untuk tutorialnya, kami memasukkan URL server Transfer Family yang kami gunakan sebagai server SFTP jarak jauh.

      sftp://s-1111aaaa2222bbbb3.server.transfer.us-east-1.amazonaws.com

      Ganti 1111aaaa22bbbb3 dengan ID server Transfer Family Anda.

    • Untuk peran Access, masukkan peran yang kita buat sebelumnya,sftp-connector-role.

    • Untuk peran Logging, pilihAWSTransferLoggingAccess.

      catatan

      AWSTransferLoggingAccess adalah kebijakan yang AWS dikelola. Kebijakan ini dijelaskan secara rinci dalamAWS kebijakan terkelola: AWSTransferLoggingAccess.

    Konsol konektor Transfer Family SFTP, menampilkan pengaturan konfigurasi Konektor.
  5. Di bagian Konfigurasi SFTP, berikan informasi berikut:

    • Untuk kredensi Connector, pilih nama sumber daya Secrets Manager Anda yang berisi kredenal SFTP. Untuk tutorialnya, pilihaws/transfer/sftp-connector1.

    • Untuk kunci host Tepercaya, tempel di bagian publik dari kunci host. Anda dapat mengambil kunci ini dengan menjalankan ssh-keyscan server SFTP Anda. Untuk detail tentang cara memformat dan menyimpan kunci host tepercaya, lihat dokumentasi tipe SftpConnectorConfigdata.

    Konsol konektor SFTP Transfer Family, menampilkan pengaturan konfigurasi SFTP.
  6. Setelah Anda mengkonfirmasi semua pengaturan Anda, pilih Buat konektor untuk membuat konektor SFTP.

Setelah Anda membuat konektor SFTP, kami sarankan Anda mengujinya sebelum mencoba mentransfer file apa pun menggunakan konektor baru Anda.

Test a connector using the console
Untuk menguji konektor SFTP
  1. Buka AWS Transfer Family konsol di https://console.aws.amazon.com/transfer/.

  2. Di panel navigasi kiri, pilih Konektor, dan pilih konektor.

  3. Dari menu Tindakan, pilih Uji koneksi.

    Konsol Transfer Family, menampilkan konektor SFTP yang dipilih, dan tindakan koneksi Uji koneksi Uji disorot.

Sistem mengembalikan pesan, menunjukkan apakah tes lulus atau gagal. Jika tes gagal, sistem memberikan pesan kesalahan berdasarkan alasan pengujian gagal.

Panel koneksi uji konektor SFTP, menunjukkan tes yang berhasil.
Panel koneksi uji konektor SFTP, menunjukkan tes yang gagal: pesan kesalahan menunjukkan bahwa peran akses untuk konektor tidak benar.
Test a connector using the CLI

Untuk menguji konektor menggunakan AWS Command Line Interface, jalankan perintah berikut pada prompt perintah (ganti connector-id dengan ID konektor Anda yang sebenarnya):

aws transfer test-connection --connector-id c-connector-id

Jika tes berhasil, baris berikut dikembalikan:

{ "Status": "OK", "StatusMessage": "Connection succeeded" }

Jika tes tidak berhasil, Anda menerima pesan kesalahan deskriptif, misalnya:

{ "Status": "ERROR", "StatusMessage": "Unable to assume the configured access role" }

Langkah 3: Kirim dan ambil file menggunakan konektor SFTP

Untuk mempermudah, kami berasumsi bahwa Anda sudah memiliki file di bucket Amazon S3 Anda.

catatan

Tutorial ini menggunakan bucket Amazon S3 untuk lokasi penyimpanan sumber dan tujuan. Jika server SFTP Anda tidak menggunakan penyimpanan Amazon S3, maka di mana pun Anda sftp-server-storage-east melihat dalam perintah berikut, Anda dapat mengganti jalur dengan jalur ke lokasi file yang dapat diakses dari server SFTP Anda.

  • Kami mengirim file bernama SEND-to-SERVER.txt dari penyimpanan Amazon S3 ke server SFTP.

  • Kami mengambil file bernama RETRIEVE-to-S3.txt dari server SFTP ke penyimpanan Amazon S3.

catatan

Dalam perintah berikut, ganti connector-id dengan ID konektor Anda.

Pertama, kami mengirim file dari bucket Amazon S3 kami ke server SFTP jarak jauh. Dari command prompt, jalankan perintah berikut:

aws transfer start-file-transfer --connector-id c-connector-id --send-file-paths "/s3-storage-east/SEND-to-SERVER.txt" / --remote-directory-path "/sftp-server-storage-east/incoming"

sftp-server-storage-eastEmber Anda sekarang akan terlihat seperti ini.

Bucket server SFTP dengan file yang baru ditransfer.

Jika Anda tidak melihat file seperti yang diharapkan, periksa CloudWatch log Anda.

Untuk memeriksa CloudWatch log Anda
  1. Buka CloudWatch konsol Amazon di https://console.aws.amazon.com/cloudwatch/

  2. Pilih Grup log dari menu navigasi kiri.

  3. Masukkan ID konektor Anda di bilah pencarian untuk menemukan log Anda.

  4. Pilih aliran Log yang dikembalikan dari pencarian.

  5. Perluas entri log terbaru.

Jika berhasil, entri log terlihat seperti berikut:

{ "operation": "SEND", "timestamp": "2023-12-18T15:26:57.346283Z", "connector-id": "connector-id", "transfer-id": "transfer-id", "file-transfer-id": "transfer-id/file-transfer-id", "url": "sftp://server-id.server.transfer.us-east-1.amazonaws.com", "file-path": "/s3-storage-east/SEND-to-SERVER.txt", "status-code": "COMPLETED", "start-time": "2023-12-18T15:26:56.915864Z", "end-time": "2023-12-18T15:26:57.298122Z", "account-id": "500655546075", "connector-arn": "arn:aws:transfer:us-east-1:500655546075:connector/connector-id", "remote-directory-path": "/sftp-server-storage-east/incoming" }

Jika transfer file gagal, entri log berisi pesan kesalahan yang menentukan masalah. Penyebab umum kesalahan adalah masalah dengan izin IAM dan jalur file yang salah.

Selanjutnya, kami mengambil file dari server SFTP ke bucket Amazon S3. Dari command prompt, jalankan perintah berikut:

aws transfer start-file-transfer --connector-id c-connector-id --retrieve-file-paths "/sftp-server-storage-east/RETRIEVE-to-S3.txt" --local-directory-path "/s3-storage-east/incoming"

Jika transfer berhasil, bucket Amazon S3 Anda berisi file yang ditransfer, seperti yang ditunjukkan di sini.

Bucket Amazon S3 dengan file yang baru ditransfer.

Jika berhasil, entri log terlihat seperti berikut:

{ "operation": "RETRIEVE", "timestamp": "2023-12-18T15:36:40.017800Z", "connector-id": "c-connector-id", "transfer-id": "transfer-id", "file-transfer-id": "transfer-id/file-transfer-id", "url": "sftp://s-server-id.server.transfer.us-east-1.amazonaws.com", "file-path": "/sftp-server-storage-east/RETRIEVE-to-S3.txt", "status-code": "COMPLETED", "start-time": "2023-12-18T15:36:39.727626Z", "end-time": "2023-12-18T15:36:39.895726Z", "account-id": "500655546075", "connector-arn": "arn:aws:transfer:us-east-1:500655546075:connector/c-connector-id", "local-directory-path": "/s3-storage-east/incoming" }

Prosedur untuk membuat server Transfer Family untuk digunakan sebagai server SFTP jarak jauh

Berikut ini, kami menguraikan langkah-langkah untuk membuat server Transfer Family yang berfungsi sebagai server SFTP jarak jauh Anda untuk tutorial ini. Perhatikan hal berikut:

  • Kami menggunakan server Transfer Family untuk mewakili server SFTP jarak jauh. Pengguna konektor SFTP yang khas memiliki server SFTP jarak jauh mereka sendiri. Lihat Buat server SFTP Transfer Family dan pengguna.

  • Karena kami menggunakan server Transfer Family, kami juga menggunakan pengguna SFTP yang dikelola layanan. Dan, untuk kesederhanaan, kami menggabungkan izin yang dibutuhkan pengguna ini untuk mengakses server Transfer Family dengan izin yang mereka butuhkan untuk menggunakan konektor kami. Sekali lagi, sebagian besar kasus penggunaan konektor SFTP memiliki pengguna SFTP terpisah yang tidak terkait dengan server Transfer Family. Lihat Buat server SFTP Transfer Family dan pengguna.

  • Untuk tutorial, karena kita menggunakan penyimpanan Amazon S3 untuk server SFTP jarak jauh kita, kita perlu membuat ember kedua,s3-storage-east, sehingga kita dapat mentransfer file dari satu ember ke ember lainnya.

Buat server SFTP Transfer Family dan pengguna

Sebagian besar pengguna tidak perlu membuat server SFTP Transfer Family dan pengguna, karena Anda sudah memiliki server SFTP dengan pengguna, dan Anda dapat menggunakan server ini untuk mentransfer file ke dan dari. Namun, untuk tutorial ini, untuk kesederhanaan, kami menggunakan server Transfer Family untuk berfungsi sebagai server SFTP jarak jauh.

Ikuti prosedur yang dijelaskan dalam Buat server berkemampuan SFTP untuk membuat server, dan Langkah 3: Tambahkan pengguna yang dikelola layanan untuk menambahkan pengguna. Ini adalah detail pengguna yang kami gunakan untuk tutorial:

  • Buat pengguna yang dikelola layanan Anda,. sftp-testuser

    • Mengatur direktori home ke /sftp-server-storage-east/sftp-testuser

    • Saat Anda membuat pengguna, Anda menyimpan kunci publik. Kemudian, ketika Anda membuat rahasia di Secrets Manager, Anda perlu memberikan kunci pribadi yang sesuai.

  • Peran:sftp-connector-role. Untuk tutorial, kami menggunakan peran IAM yang sama untuk pengguna SFTP kami dan untuk mengakses konektor SFTP. Saat membuat konektor untuk organisasi, Anda mungkin memiliki peran pengguna dan akses yang terpisah.

  • Kunci host server: Anda perlu menggunakan kunci host server saat Anda membuat konektor. Anda dapat mengambil kunci ini dengan menjalankan ssh-keyscan server Anda. Misalnya, jika ID server Andas-1111aaaa2222bbbb3, dan titik akhirnya masukus-east-1, perintah berikut mengambil kunci host server:

    ssh-keyscan s-1111aaaa2222bbbb3.server.transfer.us-east-1.amazonaws.com

    Salin teks ini di suatu tempat, karena Anda harus menempelkannya dalam Langkah 2: Buat dan uji konektor SFTP prosedur.

Gabungan peran pengguna dan akses

Untuk tutorial, kita menggunakan peran tunggal gabungan. Kami menggunakan peran ini baik untuk pengguna SFTP kami, maupun untuk akses ke konektor. Contoh berikut berisi rincian untuk peran ini, jika Anda ingin melakukan tugas-tugas dalam tutorial.

Contoh berikut memberikan izin yang diperlukan untuk mengakses dua bucket kami di Amazon S3, dan rahasia bernama disimpan di aws/transfer/sftp-connector1 Secrets Manager. Untuk tutorial, peran ini diberi namasftp-connector-role.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::sftp-server-storage-east", "arn:aws:s3:::s3-storage-east" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": [ "arn:aws:s3:::sftp-server-storage-east/*", "arn:aws:s3:::s3-storage-east/*" ] }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:us-east-1:500655546075:secret:aws/transfer/sftp-connector1-6RandomCharacters" } ] }

Untuk detail lengkap tentang membuat peran untuk Transfer Family, ikuti prosedur yang dijelaskan Membuat peran pengguna untuk membuat peran.