Pemecahan masalah pembantu kredensial dan koneksi HTTPS ke AWS CodeCommit - AWS CodeCommit

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

Pemecahan masalah pembantu kredensial dan koneksi HTTPS ke AWS CodeCommit

Informasi berikut dapat membantu Anda memecahkan masalah umum yang terjadi saat menggunakan pembantu kredensial yang termasuk dengan AWS CLI dan HTTPS untuk terhubung ke repositori CodeCommit.

catatan

Meskipun pembantu kredensial adalah metode yang didukung untuk menghubungkan ke CodeCommit menggunakan akses gabungan, penyedia identitas, atau kredensial sementara, metode yang disarankan adalah menginstal dan menggunakan utilitas git-remote-codecommit. Untuk informasi selengkapnya, lihat Langkah-langkah penyiapan untuk koneksi HTTPS keAWS CodeCommitbersamagit-remote-codecommit.

Saya menerima galat saat menjalankan perintah git config untuk mengkonfigurasi pembantu kredensial

Masalah: Ketika Anda mencoba untuk menjalankan perintah git config untuk mengkonfigurasi pembantu kredensional untuk berkomunikasi dengan repositori CodeCommit, Anda melihat kesalahan bahwa terlalu sedikit argumen, atau prompt penggunaan menyarankan perintah dan sintaks Git config.

Perbaikan yang dimungkinkan: Alasan paling umum untuk kesalahan ini adalah bahwa tanda kutip tunggal digunakan untuk perintah pada sistem operasi Windows, atau tanda kutip ganda digunakan untuk perintah dalam sistem operasi Linux, MacOS, atau Unix. Sintaks yang benar adalah sebagai berikut:

  • Windows: git config --global credential.helper "!aws codecommit credential-helper $@"

  • Linux, macOS, atau Unix: git config --global credential.helper '!aws codecommit credential-helper $@'

Saya mendapatkan perintah tidak ditemukan kesalahan di Windows saat menggunakan pembantu kredensial

Masalah: Setelah memperbaruiAWSCLI, koneksi pembantu kredenensial ke repositori CodeCommit gagal denganaws codecommit credential-helper $@ get: aws: command not found.

Penyebab: Alasan paling umum untuk kesalahan ini adalah bahwa kesalahan AndaAWSVersi CLI telah diperbarui ke versi yang menggunakan Python 3. Ada masalah yang diketahui dengan paket MSI. Untuk memverifikasi apakah Anda memiliki salah satu versi yang terpengaruh, buka baris perintah dan jalankan perintah berikut: aws --version

Jika versi Python output dimulai dengan 3, Anda memiliki versi yang terpengaruh. Misalnya:

aws-cli/1.16.62 Python/3.6.2 Darwin/16.7.0 botocore/1.12.52

Perbaikan yang dimungkinkan: Anda dapat mengatasi masalah ini dengan melakukan salah satu hal berikut:

  • Instal dan konfigurasi AWS CLI pada Windows menggunakan Python dan pip bukannya MSI. Untuk informasi selengkapnya, lihat Instal Python, pip, dan AWS CLI di Windows.

  • Mengedit secara manual file .gitconfig Anda untuk mengubah bagian [credential] untuk secara eksplisit menunjuk ke aws.cmd di komputer lokal Anda. Misalnya:

    [credential] helper = !"\C:\\Program Files\\Amazon\\AWSCLI\\bin\\aws.cmd\" codecommit credential-helper $@ UseHttpPath = true
  • Jalankan perintah git config untuk memperbarui file .gitconfig Anda untuk secara eksplisit merujuk aws.cmd, dan secara manual memperbarui variabel lingkungan PATH Anda untuk menyertakan path ke perintah yang diperlukan. Misalnya:

    git config --global credential.helper "!aws.cmd codecommit credential-helper $@" git config --global credential.UseHttpPath true

Saya diminta untuk memasukkan nama pengguna ketika saya terhubung ke sebuah repositori CodeCommit

Masalah: Ketika Anda mencoba untuk menggunakan pembantu kredenal untuk berkomunikasi dengan repositori CodeCommit, muncul pesan yang meminta Anda untuk memasukkan nama pengguna Anda.

Perbaikan yang dimungkinkan: MengonfigurasiAWSprofil atau pastikan profil yang Anda gunakan adalah profil yang Anda konfigurasikan untuk bekerja dengan CodeCommit. Untuk informasi lebih lanjut tentang pengaturan, lihat Langkah-langkah pengaturan untuk koneksi HTTPS ke AWS CodeCommit di Linux, macOS, atau Unix dengan pembantu kredensial AWS CLI, atau Langkah pengaturan untuk koneksi HTTPS ke repositori AWS CodeCommit pada Windows dengan pembantu kredensial AWS CLI. Untuk informasi selengkapnya tentang IAM, access key, dan secret key, lihat Mengelola Access Key dan Bagaimana Saya Mendapatkan Kredensial?

Git untuk macOS: Saya mengkonfigurasi pembantu kredenal dengan sukses, tapi sekarang saya menolak akses ke repositori saya (403)

Masalah: Di macOS, pembantu kredensional sepertinya tidak mengakses atau menggunakan kredenal Anda seperti yang diharapkan. Hal ini dapat disebabkan oleh dua masalah yang berbeda:

  • AWS CLI dikonfigurasi untuk Wilayah AWS berbeda dari tempat repositori berada.

  • Keychain Access telah menyimpan kredensial yang telah kedaluwarsa.

Perbaikan yang dimungkinkan: Untuk memverifikasi apakahAWS CLIdikonfigurasi untuk wilayah yang benar, jalankanaws configureperintah, dan meninjau informasi yang ditampilkan. Jika repositori CodeCommit berada dalam Wilayah AWS berbeda dari yang ditunjukkan untuk AWS CLI, Anda harus menjalankan perintah aws configure dan mengubah nilai yang sesuai untuk Wilayah tersebut. Untuk informasi selengkapnya, lihat Langkah 1: Konfigurasi awal untukCodeCommit.

Versi default Git yang dirilis di OS X dan macOS menggunakan utilitas Keychain Access untuk menyimpan kredensial yang dihasilkan. Untuk alasan keamanan, kata sandi yang dihasilkan untuk akses ke repositori CodeCommit Anda bersifat sementara, sehingga kredensial yang tersimpan di keychain berhenti bekerja setelah sekitar 15 menit. Jika Anda hanya mengakses Git dengan CodeCommit, coba hal berikut:

  1. Di Terminal, jalankan perintah git config untuk menemukan file konfigurasi Git (gitconfig) dimana utilitas Keychain Access didefinisikan. Tergantung pada sistem dan preferensi lokal Anda, Anda mungkin memiliki lebih dari satu file gitconfig.

    git config -l --show-origin | grep credential

    Dalam output dari perintah ini, mencari hasil yang mirip dengan:

    file:/path/to/gitconfig credential.helper=osxkeychain

    File yang tercantum di awal baris ini adalah file konfigurasi Git yang harus Anda edit.

  2. Untuk mengedit file konfigurasi Git, gunakan editor teks biasa atau jalankan perintah berikut:

    nano /usr/local/git/etc/gitconfig
  3. Modifikasi konfigurasi menggunakan salah satu strategi berikut:

    • Komentari atau hapus bagian kredensial yang berisi helper = osxkeychain. Misalnya:

      # helper = osxkeychain
    • Perbarui bagian pembantu kredensial aws credential helper dan osxkeychain untuk memiliki konteks. Misalnya, jika osxkeychain digunakan untuk mengotentikasi ke GitHub:

      [credential "https://git-codecommit.us-east-1.amazonaws\.com"] helper = !aws --profile CodeCommitProfile codecommit credential-helper $@ UseHttpPath = true [credential "https://github.com"] helper = osxkeychain

      Dalam konfigurasi ini, Git akan menggunakan pembantu osxkeychain ketika host remote cocok dengan "https://github.com" dan pembantu kredensial saat host remote cocok dengan "https://git-codecommit\.us-east-1\.amazonaws.com".

    • Sertakan pembantu string kosong sebelum pembantu kredensial. Misalnya:

      [credential] helper = helper = !aws --profile CodeCommitProfile codecommit credential-helper $@ UseHttpPath = true

    Atau, jika Anda ingin terus menggunakan utilitas Keychain Access untuk cache kredensial untuk repositori Git lainnya, modifikasi header bukannya mengomentari keluar garis. Misalnya, untuk mengizinkan kredensial cache untuk GitHub, Anda dapat memodifikasi header sebagai berikut:

    [credential "https://github.com"] helper = osxkeychain

Jika Anda mengakses repositori lain dengan Git, Anda dapat mengkonfigurasi utilitas Keychain Access sehingga tidak menyediakan kredensial untuk repositori CodeCommit Anda. Untuk mengkonfigurasi utilitas Keychain Access:

  1. Buka utilitas Keychain Access. (Anda dapat menggunakan Finder untuk menemukannya.)

  2. Cari git-codecommit.us-east-2.amazonaws.com dan ganti us-east-2 dengan Wilayah AWS dimana repositori berada. Sorot baris, buka menu konteks (klik kanan), lalu pilih Dapatkan Info.

  3. Pilih tab Kontrol akses.

  4. Dalam Konfirmasi sebelum mengizinkan akses, pilih git-credential-osxkeychain, lalu pilih tanda minus untuk menghapusnya dari daftar.

    catatan

    Setelah menghapus git-credential-osxkeychain dari daftar, Anda melihat kotak dialog setiap kali Anda menjalankan perintah Git. Pilih Tolak untuk melanjutkan. Jika menurut Anda pop-up terlalu mengganggu, berikut adalah beberapa alternatif:

Jika Anda ingin menghentikan Git dari menggunakan utilitas Keychain Access sepenuhnya, Anda dapat mengkonfigurasi Git untuk berhenti menggunakan osxkeychain sebagai pembantu kredensial. Misalnya, jika Anda membuka terminal dan menjalankan perintah git config --system credential.helper, dan menjawab osxkeychain, Git diatur untuk menggunakan utilitas Keychain Access. Anda dapat mengganti ini dengan menjalankan perintah berikut:

git config --system --unset credential.helper

Ketahui bahwa dengan menjalankan perintah ini dengan opsi --system mengubah perilaku Git seluruh sistem untuk semua pengguna, dan ini mungkin memiliki konsekuensi yang tidak diinginkan bagi pengguna lain, atau untuk repositori lain jika Anda menggunakan layanan repositori lain selain CodeCommit. Juga diketahui bahwa pendekatan ini mungkin memerlukan penggunaan sudo, dan akun Anda mungkin tidak memiliki izin sistem yang memadai untuk menerapkan perubahan ini. Pastikan untuk memverifikasi bahwa perintah diterapkan berhasil dengan menjalankan perintah git config --system credential.helper lagi. Untuk informasi selengkapnya, lihat Kustomisasi Git - Konfigurasi Git dan artikel ini di Stack Overflow.

Git untuk Windows: Saya menginstal Git untuk Windows, tapi akses saya ke repositori saya ditolak (403)

Masalah: Pada Windows, pembantu kredensional tampaknya tidak mengakses atau menggunakan kredensial Anda seperti yang diharapkan. Hal ini dapat disebabkan oleh masalah yang berbeda:

  • AWS CLI dikonfigurasi untuk Wilayah AWS berbeda dari tempat repositori berada.

  • Secara default, Git untuk Windows menginstal utilitas Git Credential Manager yang tidak kompatibel dengan koneksi CodeCommit yang menggunakan pembantu kredensial AWS. Ketika diinstal, ini menyebabkan koneksi ke repositori gagal meskipun pembantu kredensial telah diinstal dengan AWS CLI dan dikonfigurasi untuk koneksi ke CodeCommit.

  • Beberapa versi Git untuk Windows mungkin tidak sepenuhnya sesuai dengan RFC 2617 dan RFC 4559, yang berpotensi menyebabkan masalah dengan kredensial Git dan pembantu kredensialnya disertakan dengan AWS CLI. Untuk informasi lebih lanjut, lihat Versi 2.11.0(3) tidak meminta nama pengguna/kata sandi.

Perbaikan yang dimungkinkan:

  • Jika Anda mencoba untuk menggunakan pembantu kredensial yang disertakan dengan AWS CLI, pertimbangkan menghubungkan dengan kredensial Git melalui HTTPS bukan menggunakan pembantu kredensial. Git kredensials yang dikonfigurasi untuk pengguna IAM Anda kompatibel dengan Git Credential Manager untuk Windows, tidak seperti pembantu kredensial untuk AWS CodeCommit. Untuk informasi selengkapnya, lihat Untuk pengguna HTTPS menggunakan kredensials Git.

    Jika Anda ingin menggunakan pembantu kredensial, untuk memverifikasi apakah AWS CLI dikonfigurasi untuk Wilayah AWS yang benar, jalankan perintah aws configure, dan tinjau informasi yang ditampilkan. Jika repositori CodeCommit berada dalam Wilayah AWS berbeda dari yang ditunjukkan untuk AWS CLI, Anda harus menjalankan perintah aws configure dan mengubah nilai yang sesuai untuk Wilayah tersebut. Untuk informasi selengkapnya, lihat Langkah 1: Konfigurasi awal untukCodeCommit.

  • Jika memungkinkan, uninstall dan instal ulang Git untuk Windows. Ketika Anda menginstal Git untuk Windows, kosongkan kotak centang untuk opsi untuk menginstal utilitas Git Credential Manager. Credential manager ini tidak kompatibel dengan pembantu kredensial untuk AWS CodeCommit. Jika Anda menginstal Git Credential Manager atau utilitas manajemen kredensia lain dan Anda tidak ingin meng-uninstal-nya, Anda dapat memodifikasi file .gitconfig Anda dan menambahkan manajemen kredensial untuk CodeCommit:

    1. Buka Panel Kontrol, pilih Credential Manager, dan hapus kredensial yang disimpan untuk CodeCommit.

    2. Buka file .gitconfig Anda dalam editor teks biasa, seperti Notepad.

      catatan

      Jika Anda bekerja dengan beberapa profil Git, Anda mungkin memiliki file .gitconfig lokal dan global. Pastikan untuk mengedit file yang sesuai.

    3. Tambahkan bagian berikut ke file .gitconfig Anda:

      [credential "https://git-codecommit.*.amazonaws.com"] helper = !aws codecommit credential-helper $@ UseHttpPath = true
    4. Simpan file, dan kemudian buka sesi baris perintah baru sebelum Anda mencoba untuk terhubung lagi.

    Anda juga dapat menggunakan pendekatan ini jika Anda ingin menggunakan pembantu kredensial untuk AWS CodeCommit saat Anda terhubung ke repositori CodeCommit dan sistem manajemen kredensial lainnya saat Anda terhubung ke repositori lain yang dihosting, seperti repositori GitHub.

    Untuk me-reset pembantu kredensial mana yang digunakan sebagai default, Anda dapat menggunakan opsi --system bukan --global atau --local ketika Anda menjalankan perintah git config.

  • Jika Anda menggunakan kredensial Git pada komputer Windows, Anda dapat mencoba memecahkan setiap masalah ketidaksesuaian RFC dengan memasukkan nama pengguna kredensial Git Anda sebagai bagian dari string sambungan. Misalnya, untuk mengatasi masalah dan mengkloning repositori bernama MyDemoRepo di US East (Ohio):

    git clone https://Your-Git-Credential-Username@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
    catatan

    Pendekatan ini tidak bekerja jika Anda memiliki karakter @ dalam nama pengguna kredensial Git Anda. Anda harus mengkodekan URL (juga dikenal sebagai pelolosan URL atau Pengkodean persen) karakter.