4.00
OS X
europe-west1
ã«ãããã€ãããé¢æ°
// function code
const functions = require('firebase-functions');
exports.helloIvanA = functions
.region('europe-west1')
.https.onRequest((request, response) => {
response.send('Hello from Ivan!');
});
// firebase.json
{
"hosting": {
"public": "public",
"rewrites": [
{
"source": "**",
"function": "helloIvanA"
}
]
}
}
https://blablabla.firebaseapp.com
ã¯helloIvanA
ããããŒã¿ãååŸããŸã
https://blablabla.firebaseapp.com
ã¯https://us-central1-yushkarala.cloudfunctions.net/helloIvanA/
$ã«ãªãã€ã¬ã¯ããããŸã
ãããŠäžããError: Forbidden
Your client does not have permission to get URL /helloIvanA/ from this server.
ãŸããã¬ãã®äŸhttps://github.com/istarkov/firebase-hosting-error
ããã«ã¡ã¯ãããã¯äºæ³ãããåäœã§ããhttpsïŒ //firebase.google.com/docs/functions/locations#http_and_client_callable_functionsãã芧ãã ãããéãããã¯ã¹ã¯ããã¹ãã£ã³ã°ãªãã€ã¬ã¯ããšããŠæ©èœãããã¹ãŠã®é¢æ°ããus-central1ãã«ããå¿ èŠãããããšã瀺ããŠããŸããããã¯ããããã¹ãã£ã³ã°ã®èµ·æºã§ãããšããäºå®ã®ããã§ãã
ããããšãããã®äºæ³ãããåäœãè¿ãå°æ¥ããŸãã¯å°ãªããšãå°æ¥å€æŽãããå¯èœæ§ã¯ãããŸããïŒ
ããã«ã¡ã¯ãããã¯å°æ¥å€æŽãããŸãããè¿ãå°æ¥ã«ã¯å€æŽãããŸããã ããã¯ãFirebaseHostingãä»ã®å°åã§ãã€éå§ããããã«ãã£ãŠç°ãªããŸãã
ããã«ã¡ã¯ã
ç§ã®åé¡ã¯ãããšéåžžã«äŒŒãŠããŸãããå€éšãããã¯ãŒã¯ã䜿çšãããããç§ã®æ©èœã¯EUã«ããã¯ãã§ãããã®ããã«ãé
延ã¯ã¯ããã«åªããŠããŸãïŒ2ã4ç§å¯Ÿ4ã600ããªç§ïŒå®è¡æé
ç§ã®åé¡ã次ã®ããã«èª¬æããŸããïŒ
https://github.com/firebase/firebase-js-sdk/issues/1101
ããã§ãçŸæç¹ã§ä»ã®å°åãžã®æžãæãã䜿çšãã解決çã¯ãŸã ãããŸãããïŒ
ïŒEUæ©èœã«å°éããããã«çŽæ¥ãªã³ã¯ã䜿çšããåé¿çããããŸãããéçºåŽããã¯çæ³çã§ã¯ãããŸããããã¹ãããã«ã¯ããã¹ãŠãåãããã€ããå¿
èŠããããŸãïŒ
ãããå®è£
ãããã®ãèŠããã§ãã ç§ã®èšªåè
ã¯ãšãŒãããããæ¥ãŠããã us-central1
ããã®TTFBã¯europe-west1
ããå°ãªããšã3å倧ããã§ãã
ããã«ã¡ã¯ãããã¯å°æ¥å€æŽãããŸãããè¿ãå°æ¥ã«ã¯å€æŽãããŸããã ããã¯ãFirebaseHostingãä»ã®å°åã§ãã€éå§ããããã«ãã£ãŠç°ãªããŸãã
ããã«ã¡ã¯@laurenzlong ã
ããã¯ããã¹ãã£ã³ã°ãus-central1
ã®ä»ã®å Žæã§å©çšå¯èœã«ãªãå Žåã次ã®å¶éãåé¿ããããšãã§ãããšããããšã§ããïŒ
ããã¥ã¡ã³ããã
Important: If you are using HTTP functions to serve dynamic content for hosting, you must use us-central1.
ç§ã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯ãã®æ©èœãå¿ èŠã§ãã ã ãããæ©ãã»ã©è¯ã:)ïŒ
ã©ããããããšãããããŸããã
ãããä¿®æ£ããããŸã§ã倪åã®èŠåãæžã蟌ãå¿
èŠããããŸãã äœãèµ·ãããæ°ä»ããŸã§ãç§ã¯ããŸãã«ãå€ãã®æéãè²»ãããŠããŸããã
å°ãªããšãregion
ãªãã·ã§ã³ãæžãæãã«è¿œå ããŠããšãŒãããã«ãªãã€ã¬ã¯ãã§ããããã«ããŸãã
Firebaseã®ã¯ã©ãŠãæ©èœãcloud run
èšå®ã®ããã«$ region
ãªãã·ã§ã³ããµããŒãããããšãé¡ã£ãŠããŸãã tokyo
ãªãŒãžã§ã³ã䜿çšããŠããŸãã us-central1
ããã¯ããªãé ãã§ãã
ããã¯ããã¹ãã£ã³ã°ã
us-central1
ã®ä»ã®å Žæã§å©çšå¯èœã«ãªãå Žåã次ã®å¶éãåé¿ããããšãã§ãããšããããšã§ããïŒ
ããã¥ã¡ã³ãããImportant: If you are using HTTP functions to serve dynamic content for hosting, you must use us-central1.
ããã«ã¡ã¯@laurenzlong ã
äœãïŒè¯ãïŒã¯ãããŸããïŒ ããã«ã€ããŠã®ãã¥ãŒã¹ïŒ
@wangchouãèšã£ãããã«ãã¯ã©ãŠãã©ã³ã代æ¿æ段ã«ãªãããšã«åæããŸãããããã¯ãµãŒãã¹/ãã¯ãããžãŒã®ã¹ã¿ãã¯ãè¿œå ããŸãã
ããã«ãèªã¿ããã ããã°å¹žãã§ãã ããããšãïŒ
ããã«ã€ããŠã¯ãŸã 調æ»äžã§ãããçŸåšããªãªãžã³ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯us-central
ã«éäžããŠããŸããã€ãŸããä»ã®ãªãŒãžã§ã³ã§é¢æ°ãããã·ãèš±å¯ãããšãã»ãšãã©ã®å Žåãäœåãªã¬ã€ãã³ã·ãçºçããŸãã äŸãã°ïŒ
tokyo -> CDN edge -> origin (us-central) -> function (tokyo)
ããã¯ãåŸåŸ©æéãå®éã«ã¯2åã®ãããªããšãããããšãæå³ããŸãã
å ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®å Žæãæ¡åŒµããããšã調æ»ããŠããŸããããããŸã§ã¯ããã®æ©èœãè¿œå ããããšã¯ãå©çããã害ãåãŒãå¯èœæ§ãé«ããããæ éã«è¡ã£ãŠããŸãã
@ mbleigh-ãã¹ãã£ã³ã°ã®èµ·ç¹ãç±³åœå€ã«ããå Žåã®èŠç©ãããæããŠãã ããã
Firebaseç°å¢å šäœã¯çŽ æŽãããã§ãããããã«åãæ¿ããåã«ããèããããããŸãã ããããšã
ãã®åé¡ã解決ãããŠããªãã®ã«ããªããã®åé¡ã解決ãããã®ãã+ 1ãäžããŠæ¬åœã«ããããŸããã
次ã«ãFirebaseã¯ãã°ãããã§ããããšãŒãããã®ãŠãŒã¶ãŒã«ãšã£ãŠã¯ããã倧ããªæ³šæç¹ã§ãã
ç³ãèš³ãããŸããããã¿ã€ã ã©ã€ã³ã¯å€æŽãããå¯èœæ§ãå°ãé«ããããã³ã¡ã³ãã§ããŸããã ãããæ©èœãšããŠãµããŒãããããã®ç¶ç¶çãªå£°ã«æè¬ããŸããããã¯ã補åãèšç»ããã³æ§ç¯ãããšãã«ééããªãèæ ®ã«å ¥ãããã®ã§ãã
ããã«é¢é£ããå¯èœæ§ã®ããåé¡ããããŸããããããå®å šã«ã¯ç解ããŠããªããããããããŸããã ããç¥ã£ãŠããŠæéã®ãã人ãããã«ã€ããŠã³ã¡ã³ããããå Žåã¯ããã®è³ªåãåç §ããŠãã ããã
https://stackoverflow.com/questions/57367131/403-from-deployed-firebase-function
ãããããã°çŽ æŽãããããšã§ãããšãŒããã西éšã«ãã§ã«ååšããé¢æ°ã«ãã¹ãã£ã³ã°ãªã©ã€ããè¿œå ããããšãã§ããŸã1ã
確ãã«çŽ æŽãããã§ãããã ä»ã®ãšããã @ hgghyxoãè¿°ã¹ãããã«ãªãã€ã¬ã¯ãã䜿çšããŸãã
é¢æ°åapi
ãªãŒãžã§ã³europe-west1
firebase.json
"redirects": {
{
"source": "/api/endpoint",
"destination": "https://europe-west1-project-id.cloudfunctions.net/api/endpoint",
"type": 301
},
...
}
@mcoevertã¯2019幎8æ19æ¥åå10æ36åGMT + 2ã«ã³ã¡ã³ãããŸããïŒ
確ãã«çŽ æŽãããã§ãããã ä»ã®ãšããã @ hgghyxoãè¿°ã¹ãããã«ãªãã€ã¬ã¯ãã䜿çšããŸãã
ãã ãããªãã€ã¬ã¯ãã¯CORSã®åé¡ã解決ããŸããã
ãšãŒãããå°åã®ãµããŒããèŠããã§ãã
europe-west1
ãªãŒãžã§ã³ïŒçŸåšãCloud Runã§å©çšã§ããå¯äžã®ãšãŒããããªãŒãžã§ã³ïŒã§ãã¹ããããŠããCloudRunãµãŒãã¹ã䜿çšããŠæžãæããè¡ãããšãã§ããããã«ãªããŸããã ãŸã£ããåãã§ã¯ãããŸããããããªãè¿ãã§ãã
ããã«ã¡ã¯ãããã¯äºæ³ãããåäœã§ããhttpsïŒ //firebase.google.com/docs/functions/locations#http_and_client_callable_functionsãã芧ãã ãããéãããã¯ã¹ã¯ããã¹ãã£ã³ã°ãªãã€ã¬ã¯ããšããŠæ©èœãããã¹ãŠã®é¢æ°ããus-central1ãã«ããå¿ èŠãããããšã瀺ããŠããŸããããã¯ããããã¹ãã£ã³ã°ã®èµ·æºã§ãããšããäºå®ã®ããã§ãã
ç³ãèš³ãããŸããããå°ããªéãããã¯ã¹ã¯ç°¡åã«èŠèœãšãããŸãã ç§ãã¡ã¯ããã®åé¡ãç§ãã¡ã®æçµçãªæ§æã®åé¡ã§ãããšèããŠããã®åé¡ã«å€ãã®æéãè²»ãããŠããŸããã
ãªããããééãããŠããã®ã-ããã¯ãšãŒãããã®ç§ãã¡ã«ãšã£ãŠåé¡ã§ãã ãããç§ãã¡ã®å°åã§ã®ã¿æ©èœããŠããçç±ã¯ãããŸããïŒ
ãã®åé¡ã¯ãFirebaseCLIã§çŽæ¥å¯ŸåŠã§ããªãFirebaseHostingã®æ©èœãªã¯ãšã¹ãã§ãããã解決ãããŸããã æ©èœã®ãªã¯ãšã¹ãã¯ç€Ÿå ã§è¿œè·¡ãããŸãããã®ãã©ãŒã ããè¿œå ã®ãªãŒãžã§ã³ã®ãµããŒãããªã¯ãšã¹ãããããšããå§ãããŸãã
ãã£ãŒãããã¯ã®ãããã§ãå€ãã®æ¹ããã®æ©èœãæãã§ããããšã確信ããŠããŸãã
ãã®åé¡ã¯ãFirebaseCLIã§çŽæ¥å¯ŸåŠã§ããªãFirebaseHostingã®æ©èœãªã¯ãšã¹ãã§ãããã解決ãããŸããã æ©èœã®ãªã¯ãšã¹ãã¯ç€Ÿå ã§è¿œè·¡ãããŸãããã®ãã©ãŒã ããè¿œå ã®ãªãŒãžã§ã³ã®ãµããŒãããªã¯ãšã¹ãããããšããå§ãããŸãã
ãã£ãŒãããã¯ã®ãããã§ãå€ãã®æ¹ããã®æ©èœãæãã§ããããšã確信ããŠããŸãã
æ©èœãªã¯ãšã¹ãã¯å éšã§ã®ã¿è¿œè·¡ãããŸããïŒ ããã¯å€ãã®éè€ãããªã¯ãšã¹ãããããããŸãããïŒ ç±³åœä»¥å€ã®å°åãå«ããããã«ããããã®æ©èœã®ãµããŒãã瀺ããããšæããŸãã
ã¯ã-æ©èœãªã¯ãšã¹ããéä¿¡ãããšãå éšè¿œè·¡ã®ããã«ä»ã®ãªã¯ãšã¹ããšéè€æé€ãããŸãïŒãããŠããªã¯ãšã¹ãã«å¯ŸãããµããŒããå¢ããããšã¯ééããããŸããïŒïŒã
VPCãå¿ èŠãªãå Žåã¯ãCloudFunctionã®ä»£ããã«CloudRunã䜿çšã§ããŸãã Cloud RunïŒå®å šã«ç®¡çãããŠããïŒã¯çŸåšãVPCãããã¯ãŒã¯ã«æ¥ç¶ã§ããŸããã VPC +ã«ã¹ã¿ã ãã¡ã€ã³+ Cloud Functionã䜿çšããããã«ãã¹ãããåé¿çã¯ãCloudFunctionã®ãããã·ã§ããã«ã¹ã¿ã ãã¡ã€ã³ã§CloudRunã䜿çšããããšã§ãã å°ããªãŒããŒããããè¿œå ãããŸãããCloudRunãšCloudFunctionãåããªãŒãžã§ã³ã«ããå Žåãçè«çã«ã¯ãããã»ã©é 延ã¯çºçããªãã¯ãã§ãã ããã¯èšã£ãŠããç§ã¯1ãæ以äžç£èŠããŠããŸããããCloud RunããŒã¿çã¯100ïŒ å®å®ããŠããŸããã
ããã¯ãCloud Runã«ãããã€ããŠã httpsïŒ//github.com/reactgraphqlacademy/cloud-run-proxyãè©ŠããŠã¿ããå Žåã«äœ¿çšãããããã·ã®ãªããžããªã§ãã
Cloud FunctionãšåããªãŒãžã§ã³ã§ãããã·ã䜿çšããŠCloudflareã¯ãŒã«ãŒããã¹ãããåãæéã«ããã£ãŠç£èŠããŸããã 100ïŒ ä¿¡é Œæ§ã¯ãããŸããããCloudRunãããäœéã§ããã
Cloudflareã¯ãŒã«ãŒhttps://gist.github.com/alexlbr/814446f03cf12e22f07ccaa580eb1154ããã¹ãããå Žåã¯ããã®ã³ãŒãã䜿çšã§ããŸãã @wangchouç§ãééã£ãŠããªããã°ãæ±äº¬ã§Cloudflareã¯ãŒã«ãŒãå®è¡ã§ããŸãããã®å°åã§ã¯ãCloud RunããŸã ãµããŒããããŠããªãããããŠãŒã¶ãŒãããå Žæã®ç«¯ã«è¿ã¥ãããšãã§ããŸãã
以äžã¯ãåãæéäžã«ãããã·ãªãã§ã¯ã©ãŠãæ©èœãçŽæ¥ç£èŠããŸãã
ç£èŠã«ã¯https://uptimerobot.comã䜿çšããŸããã
ã¯ã©ãŠãã©ã³ã¯ç§ã«ã¯éåžžã«ææã«èŠããŸããç§ã¯å®å šãªãªãªãŒã¹ãåŸ ã€ããšãã§ããŸãã
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ ãªãéãŸã£ãŠããã®ã§ããïŒ
äžå¯èœïŒ
@abdellahaski @ l2aelbaããã§åé¡ç¹ã確å®ã«èããŸãã @mbleighã以åã«èšã£ãããã«ãæ©èœèŠæ±ãšããŠãããæåºããããšïŒä»¥äžãåç §ïŒã¯ããããç§ãã¡ã®å éšã§çœåŒåãåŸãã®ãå©ããããã®æè¯ã®æ¹æ³ã§ãã ããããšãïŒ
ãã®åé¡ã¯ãFirebaseCLIã§çŽæ¥å¯ŸåŠã§ããªãFirebaseHostingã®æ©èœãªã¯ãšã¹ãã§ãããã解決ãããŸããã æ©èœã®ãªã¯ãšã¹ãã¯ç€Ÿå ã§è¿œè·¡ãããŸãããã®ãã©ãŒã ããè¿œå ã®ãªãŒãžã§ã³ã®ãµããŒãããªã¯ãšã¹ãããããšããå§ãããŸãã
ãã£ãŒãããã¯ã®ãããã§ãå€ãã®æ¹ããã®æ©èœãæãã§ããããšã確信ããŠããŸãã
asia-east2ã®ãµããŒããèŠããã§ãã
ããã¥ã¡ã³ããæªããããFirebaseããããããããšããŠããŸãã
絶察çãªæå°å€ã¯ãusã«é¢æ°ããªãå Žåã«èŠåãçºè¡ããããšã§ã-ãªãã€ã¬ã¯ãã®é¢æ°ãšäžå€®ã§äžèŽããŸãïŒ
FirebaseããŒã ã¯ããŠãŒã¶ãŒãç±³åœå€ã«ãããããžã§ã¯ãã誰ãã«éçºãããããšããããšããå§ãããŸãã ãã®çš®ã®èŠåã衚瀺ãããªãã®ã¯ããããã§ãã
圌ããå°ããããã«ããããšã«ãã£ãŠãäºããå©ããŸããã-æ©èœãªã¯ãšã¹ããæçš¿ããŠãã ããïŒ
https://firebase.google.com/support/troubleshooter/report/features
ãããããªããã³ããŒ/貌ãä»ãããããã®ãã©ããã§ã-ãã ãããæãéããŠãã ãã:)
ç±³åœä»¥å€ã®å°åã®é¢æ°ãžã®ãã¹ãã£ã³ã°ã®æžãæã
https://github.com/firebase/firebase-tools/issues/842US-Central1以å€ã®å°åã®é¢æ°ãžã®æžãæããäœæã§ããå¿ èŠããããŸãã
ç§ãã¡ã®ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã¯ç±³åœã«ããŸããããã®æ©èœã®æ¬ åŠã¯ç§ãã¡ã«ãšã£ãŠå€§ããªåé¡ã§ãããç§ãã¡ã®æè¡ã¹ã¿ãã¯ãFirebaseå šäœã«æ§ããããšãã§ããŸããã
è¿ãå°æ¥ããã®æ©èœãåªå ããããšãæ€èšããŠãã ããã
ããããšãã
ããã«ãã®æ©èœãæåŸ ããŠããŸãïŒ
ã¯ã©ãŠãæ©èœã®ä»£ããã«ã¯ã©ãŠãã©ã³ã䜿çšããããšãç 究ãã人ã¯ããŸããïŒ
ã¯ã©ãŠãã©ã³ã¯ä»ã®å°åã§ãæ©èœãæäŸããŸã
2幎çµã£ãŠããããã¯ãŸã åé¡ã§ãããšããã§ããªããããééãããŠããã®ã§ããïŒ
ããã«ã¡ã¯ãããã¯äºæ³ãããåäœã§ããhttpsïŒ //firebase.google.com/docs/functions/locations#http_and_client_callable_functionsãã芧ãã ãããéãããã¯ã¹ã¯ããã¹ãã£ã³ã°ãªãã€ã¬ã¯ããšããŠæ©èœãããã¹ãŠã®é¢æ°ããus-central1ãã«ããå¿ èŠãããããšã瀺ããŠããŸããããã¯ããããã¹ãã£ã³ã°ã®èµ·æºã§ãããšããäºå®ã®ããã§ãã
ããŒãžã³ã°@laurenzlong
Cloud Functionsã¯ã次ã®å°åã§å©çšã§ããŸãã
- us-central1ïŒã¢ã€ãªã¯ïŒ
- us-east1ïŒãµãŠã¹ã«ãã©ã€ãïŒ
- us-east4ïŒããŒãžãã¢å·åéšïŒ
- europe-west1ïŒãã«ã®ãŒïŒ
- europe-west2ïŒãã³ãã³ïŒ
- europe-west3ïŒãã©ã³ã¯ãã«ãïŒ
- asia-east2ïŒéŠæž¯ïŒ
- asia-northeast1ïŒæ±äº¬ïŒ
eur3ïŒeurope-westïŒãéžæããã®ã¯ããããus-central1ãšäžç·ã«ãªã¹ãã®äžçªäžã«ãããä»ã®å Žæããåé¢ãããŠããããã§ãã ããã2ã€ã¯ããã©ã«ãã ãšæããŸããã
ç§ã¯äœããã¹ãã§ãããããã«äœãä¿®æ£ã¯ãããŸããïŒ
ãªãïŒïŒïŒïŒïŒ
ããã«ã¡ã¯çãããããã«é¢ãããã¹ãŠã®ãã£ãŒãããã¯ã«æè¬ããŸãã us-central1
以å€ã®FirebaseHostingãµããŒãæ©èœããã²ã芧ãã ããã æ®å¿µãªããããããããŸãæ©èœããåã«è¡ããªããã°ãªããªãã€ã³ãã©ã¹ãã©ã¯ãã£ã®äœæ¥ãããªããããããåã«ãã¹ã€ãããå
¥ããŠãä»ã®å°åããªã³ã©ã€ã³ã«ããããšã¯ã§ããŸããã
ããã«ã€ããŠã¯æ©èœã®ãªã¯ãšã¹ããšããŠé »ç¹ã«è³ã«ããŸããç¹å®ã®ã¿ã€ã ã©ã€ã³ã«ã€ããŠã³ã¡ã³ãããããšã¯ã§ããŸããããããŒããããã«èšèŒãããŠããŸãã ãã®ãªããžããªã¯ãFirebase Hosting補åå šäœã®æ©èœãªã¯ãšã¹ããæçš¿ããã®ã«é©åãªå Žæã§ã¯ãããŸããããã®æ©èœã«é¢å¿ãããå Žåã¯ãæ©èœãªã¯ãšã¹ããéä¿¡ããŠãã ãããããã«ãããåŒãç¶ã瀟å ã§é¢å¿ã远跡ããäœæ¥ã«åªå é äœãä»ããããšãã§ããŸãããããæå¹ã«ããããã«èµ·ããå¿ èŠããããŸãã
çããããããšãïŒ
ããã«ã¡ã¯ã
ã©ãã§ãã¹ããããã¯èª°ãæ°ã«ããªããšæããŸãããšã©ãŒã衚瀺ãããªãããã«ãç°¡åãªä¿®æ£ãå¿ èŠã§ãã
ãã®ä¿®æ£ã¯ã³ãŒãã§è¡ãããšãã§ãããã¹ãã£ã³ã°ãè¡ãå Žæã§ã¯äœãããŸããã
ãããŠãããã¯æ©èœã®èŠæ±ã§ã¯ãªãããã°ã®åé€ã¯æ©èœã«ã¯ãªããŸããã ãã®ãã°ãåé€ããã ãã§ã
ããããšã..
æãåèã«ãªãã³ã¡ã³ã
ãããå®è£ ãããã®ãèŠããã§ãã ç§ã®èšªåè ã¯ãšãŒãããããæ¥ãŠããã
us-central1
ããã®TTFBã¯europe-west1
ããå°ãªããšã3å倧ããã§ãã