GCPのSecret Managerに保管されている値をFlutterアプリから取得するにはどうしたらいいのでしょうか。

実現したいこと

GCPのSecret Managerに保管されている値をFlutterアプリから取得したいです。

詳細

こちらを見ながら、公式ドキュメントSecret Managerに値を登録し、コマンドを叩くと値を取得することはできます。

//値を設定 firebase functions:secrets:set {SECRET_NAME} //値を取得 firebase functions:secrets:access {SECRET_NAME}

次に、Flutterアプリからcloud functionsを実行し、先ほどSecret Managerに登録した値を取得したいのですが、エラーが出てしまい取得できません。色々試したのですがわからなかったのためこちらで質問させていただきます。

試したFunction(とりあえず色々試しました)

javascript

1exports.test1 = functions.https.onCall(2 { secrets: ["SECRET_NAME"] },3 (req, res) => {4 return [process.env.SECRET_NAME]5 }6);7 8exports.test2 = functions.https.onCall(9 { secrets: ["SECRET_NAME"] },10 (req, res) => {11 res.send(process.env.SECRET_NAME)12 }13);14 15exports.test3 = functions.https.onCall(16 { secrets: ["SECRET_NAME"] },17 () => {18 return [process.env.SECRET_NAME]19 }20);21 exports.test4 = functions.https.onCall((req, res) => {22 return [process.env.SECRET_NAME]23 });

Flutter側

dart

12void test1() async {3 try {4 var callable = FirebaseFunctions.instanceFor(region: 'us-central1')5 .httpsCallable("test1");6 var result = await callable();7 print(result.data);8 } on FirebaseFunctionsException catch (error) {9 print(error.code);10 print(error.details);11 print(error.message);12 print(error.stackTrace);13 }14}15 16void test2() async {17 try {18 var callable = FirebaseFunctions.instance.httpsCallable("test2");19 var result = await callable();20 print(result.data);21 } on FirebaseFunctionsException catch (error) {22 print(error.code);23 print(error.details);24 print(error.message);25 print(error.stackTrace);26 }27}28 29void test3() async {30 try {31 var callable = FirebaseFunctions.instance.httpsCallable("test3");32 var result = await callable();33 print(result.data);34 } on FirebaseFunctionsException catch (error) {35 print(error.code);36 print(error.details);37 print(error.message);38 print(error.stackTrace);39 }40}41 42void test4() async {43 try {44 var callable = FirebaseFunctions.instance.httpsCallable("test4");45 var result = await callable();46 print(result.data);47 } on FirebaseFunctionsException catch (error) {48 print(error.code);49 print(error.details);50 print(error.message);51 print(error.stackTrace);52 }53}

発生している問題・エラーメッセージ

INTERNAL

(「test4」のみエラーは出ていないのですが、中身がnullです)

試したこと

Flutter側のfunctions呼び出し側をfunction名からトリガーURIにしたりしてみましたが、変わらずエラーでした。

dart

1 var callable = FirebaseFunctions.instanceFor(region: 'us-central1')2 .httpsCallableFromUri("uri"); // cloud functionsにデプロイした関数のトリガーURI

リージョンを指定したり、Secret Managerに設定した値の権限を色々いじったり、しましたが変わらなかったです。

補足情報(FW/ツールのバージョンなど)

[✓] Flutter (Channel stable, 3.10.2, on macOS 13.3.1 locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
[✓] Android Studio (version 2021.3)

コメントを投稿

0 コメント