Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bukti kelayakan lalai tidak ditemui dalam Cloud Run

Bukti kelayakan lalai tidak ditemui dalam Cloud Run

WBOY
WBOYke hadapan
2024-02-06 09:57:041165semak imbas

在 Cloud Run 中找不到默认凭据

Kandungan soalan

Saya sedang menulis program yang bercakap dengan sepana awan menggunakan dialek postgres. Aplikasi saya ialah pelayan gin dan saya menggunakan pgadapter untuk menyambung seperti yang diterangkan dalam dokumen ini.

Apl saya berfungsi dengan baik di dalam negara. Tetapi apabila saya menggunakan ia ke awan untuk dijalankan, saya menerima log berikut.

Ralat ini terutamanya datang daripada fungsi startpgadapterwithcredentials.

func StartPGAdapter(ctx context.Context, project, instance string) (port int, cleanup func(), err error) {
    credentials, err := google.FindDefaultCredentials(ctx)
    fmt.Println("credentials " + (credentials.ProjectID) + "json " + utils.ToString(credentials.JSON) + "ts " + utils.ToString(credentials.TokenSource))
    if err != nil {
        return 0, func() {}, err
    }
    return StartPGAdapterWithCredentials(ctx, project, instance, credentials)
}
func StartPGAdapterWithCredentials(ctx context.Context, project, instance string, credentials *google.Credentials) (port int, cleanup func(), err error) {
    if credentials == nil {
        return 0, func() {}, fmt.Errorf("credentials cannot be nil")
    }
    if credentials.JSON == nil || len(credentials.JSON) == 0 {
        return 0, func() {}, fmt.Errorf("only JSON based credentials are supported")
    }
    credentialsFile, err := os.CreateTemp(os.TempDir(), "pgadapter-credentials")
    if err != nil {
        return 0, func() {}, err
    }

Pada sistem tempatan saya, google_application_credentials disediakan supaya ia boleh mendapatkan kelayakan. Walau bagaimanapun, ini tidak berfungsi apabila berjalan di awan.

Bagaimana untuk menjadikannya berjalan di awan?

Maklumat tambahan: Ikuti contoh yang disediakan di sini.


Jawapan betul


Nampaknya anda cuba memulakan PGAdapter dalam bekas terbenam di Cloud Run dan kemudian salin bukti kelayakan akaun perkhidmatan dari persekitaran anda ke bekas terbenam PGAdapter. Masalahnya ialah Cloud Run tidak menyediakan akses kepada fail akaun perkhidmatan asas. Sebaliknya, anda harus membenarkan pustaka Google Cloud mendapatkan bukti kelayakan lalai persekitaran.

Bahagian sukar dalam contoh anda ialah anda memulakan PGAdapter dalam bekas terbenam, yang bermaksud tiada bukti kelayakan lalai dalam persekitaran itu. Cara yang disyorkan untuk menjalankan PGAdapter pada Cloud Run adalah dengan memasukkannya ke dalam bekas utama. Ini akan membolehkan PGAdapter memperoleh hanya kelayakan lalai yang disediakan oleh Cloud Run. Ini bermakna anda tidak sepatutnya menentukan parameter -c /path/to/credentials.json semasa memulakan PGAdapter.

Terdapat (sekurang-kurangnya) dua cara untuk memasukkan Penyesuai PGA dalam bekas utama:

  1. Mulakan fail Java .jar 文件构建添加到您的 Docker 映像中,并在容器中启动 PGAdapter。请参阅[此示例]了解如何直接从 .jar ke dalam PGAdapter. Ini juga memerlukan anda menambah Java JRE pada imej Docker.
  2. Biarkan Docker anda membina memanjangkan imej Docker asas PGAdapter. Ini secara automatik akan merangkumi semua kebergantungan yang diperlukan oleh PGAdapter. Anda mesti mengatasi ENTRYPOINT imej asas.

Lihat Contoh Larian Awan PGAdapter Go untuk contoh yang luas (boleh dijalankan) bagi pilihan terakhir.

Atas ialah kandungan terperinci Bukti kelayakan lalai tidak ditemui dalam Cloud Run. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam