यह सिर्फ़ Cloud Firestore Enterprise वर्शन के लिए काम का है. |
कनेक्शन से जुड़ी ज़रूरी शर्तें
MongoDB के साथ काम करने वाले क्लाइंट के लिए, Cloud Firestore का इस्तेमाल करने के लिए ये ज़रूरी हैं:
- ड्राइवरों को
load balanced
मोड में कनेक्ट करना होगा. इससे ड्राइवर, उस सर्वर टोपोलॉजी को समझने की कोशिश नहीं करते जिससे वे कनेक्ट हो रहे हैं. - ड्राइवरों को एसएसएल चालू करके कनेक्ट करना होगा.
- ड्राइवर को फिर से लिखने की सुविधा बंद करनी होगी. फ़िलहाल, MongoDB के साथ काम करने वाला Cloud Firestore, फिर से लिखने की सुविधा के साथ काम नहीं करता.
कनेक्शन स्ट्रिंग वापस पाना
डेटाबेस कनेक्शन स्ट्रिंग, डेटाबेस के यूआईडी, डेटाबेस की जगह, और पुष्टि करने के तरीके पर निर्भर करती है. यहां दिए गए निर्देशों में बताया गया है कि कनेक्शन स्ट्रिंग कैसे बनाई जाती है.
कनेक्शन स्ट्रिंग, पुष्टि करने के तरीके पर निर्भर करती है. हालांकि, बुनियादी कनेक्शन स्ट्रिंग इस फ़ॉर्मैट का इस्तेमाल करती है:
mongodb://UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&tls=true&retryWrites=false
इनमें से किसी एक तरीके से, बेस कनेक्शन स्ट्रिंग हासिल की जा सकती है:
Firebase कंसोल
-
Firebase कंसोल में, Firestore डेटाबेस पेज पर जाएं.
- उस डेटाबेस पर क्लिक करें जिसकी पुष्टि करनी है.
- एक्सप्लोरर पैनल में, ज़्यादा देखें पर क्लिक करें.
- MongoDB टूल का इस्तेमाल करके कनेक्ट करें को चुनें.
- कनेक्शन स्ट्रिंग कॉपी करें.
gcloud
यूआईडी और जगह की जानकारी वापस पाने के लिए, gcloud firestore database describe
का इस्तेमाल करें:
gcloud firestore databases describe \ --database=DATABASE_ID \ --format='yaml(locationId, uid)'
DATABASE_ID को डेटाबेस आईडी से बदलें.
आउटपुट में डेटाबेस की जगह और यूआईडी शामिल होता है. इस जानकारी का इस्तेमाल करके, बुनियादी कनेक्शन स्ट्रिंग बनाएं.
अपने डेटाबेस से कनेक्ट करने और पुष्टि करने के लिए, बेस कनेक्शन स्ट्रिंग और इनमें से किसी एक तरीके का इस्तेमाल करें:
उपयोगकर्ता नाम और पासवर्ड (SCRAM) का इस्तेमाल करके कनेक्ट करना
अपने डेटाबेस के लिए उपयोगकर्ता क्रेडेंशियल बनाने और उसे कनेक्ट करने के लिए, यह तरीका अपनाएं.
शुरू करने से पहले
उपयोगकर्ता बनाने के लिए ज़रूरी अनुमतियां पाने के लिए, अपने एडमिन से कहें कि वह आपको आपके डेटाबेस पर userCredsAdmin (roles/datastore.userCredsAdmin
) IAM भूमिका असाइन करे. भूमिकाएं असाइन करने के बारे में ज़्यादा जानने के लिए, प्रोजेक्ट, फ़ोल्डर, और संगठनों का ऐक्सेस मैनेज करना लेख पढ़ें.
आपको कस्टम भूमिका या पहले से तय अन्य भूमिकाओं के ज़रिए भी ज़रूरी अनुमतियां मिल सकती हैं.
उपयोगकर्ता बनाना और उसे डेटाबेस से कनेक्ट करना
MongoDB के साथ काम करने वाले Cloud Firestore डेटाबेस के लिए उपयोगकर्ता बनाने के लिए, इनमें से किसी एक तरीके का इस्तेमाल करें:
Google Cloud कंसोल
-
Google Cloud Console में, डेटाबेस पेज पर जाएं.
- डेटाबेस की सूची में से कोई डेटाबेस चुनें.
- नेविगेशन मेन्यू में, Auth पर क्लिक करें.
- उपयोगकर्ता जोड़ें पर क्लिक करें.
- कोई उपयोगकर्ता नाम डालें.
- नए उपयोगकर्ता के लिए कोई भूमिका चुनें.
-
जोड़ें पर क्लिक करें.
पुष्टि करने वाले डायलॉग बॉक्स में, नए उपयोगकर्ता का पासवर्ड दिखेगा.
gcloud CLI
-
SCRAM की मदद से पुष्टि करने के लिए, आपको सबसे पहले उपयोगकर्ता क्रेडेंशियल बनाना होगा.
gcloud alpha firestore user-creds
निर्देश का इस्तेमाल करें: इनकी जगह ये डालें:gcloud alpha firestore user-creds create USERNAME --database=DATABASE_ID
- USERNAME: वह उपयोगकर्ता नाम जिसे बनाना है.
- DATABASE_ID: डेटाबेस आईडी.
इस कमांड के आउटपुट में उपयोगकर्ता का पासवर्ड शामिल होता है.
आउटपुट इस तरह का दिखेगा:
name: projects/PROJECT_NAME/databases/DATABASE_ID/userCreds/USERNAME resourceIdentity: principal: principal://firestore.googleapis.com/projects/PROJECT_NUMBER/name/databases/DATABASE_ID/userCreds/USERNAME securePassword: PASSWORD
-
डिफ़ॉल्ट रूप से, इस नए उपयोगकर्ता क्रेडेंशियल के पास कोई अनुमति नहीं होती. डेटाबेस को पढ़ने और उसमें बदलाव करने का ऐक्सेस पाने के लिए, इस डेटाबेस के लिए
roles/datastore.user
भूमिका जोड़ें: इनकी जगह ये डालें:gcloud projects add-iam-policy-binding PROJECT_NAME \ --member='principal://firestore.googleapis.com/projects/PROJECT_NUMBER/name/databases/DATABASE_ID/userCreds/USERNAME' \ --role=roles/datastore.user \ --condition='expression=resource.name == "projects/PROJECT_NAME/databases/DATABASE_ID",title="CONDITION_TITLE"'
- PROJECT_NAME: आपके प्रोजेक्ट का नाम.
- PROJECT_NUMBER: प्रोजेक्ट नंबर.
- DATABASE_ID: डेटाबेस आईडी.
- USERNAME: वह उपयोगकर्ता नाम जो आपने पहले बनाया था.
- CONDITION_TITLE: इस शर्त के लिए कोई टाइटल. इस शर्त के तहत, सिर्फ़ इस डेटाबेस को ऐक्सेस करने की अनुमति दी जाती है.
SCRAM का इस्तेमाल करके अपने डेटाबेस से कनेक्ट करने के लिए, इस कनेक्शन स्ट्रिंग का इस्तेमाल करें:
mongodb://USERNAME:PASSWORD@UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&authMechanism=SCRAM-SHA-256&tls=true&retryWrites=false
इनकी जगह ये डालें:
- USERNAME: उपयोगकर्ता नाम.
- PASSWORD: यह वह पासवर्ड है जिसे आपने इस उपयोगकर्ता के लिए जनरेट किया है.
- UID: डेटाबेस का यूआईडी.
- LOCATION: डेटाबेस की जगह.
- DATABASE_ID: डेटाबेस आईडी.
Google Auth Library से कनेक्ट करना
यहां दिए गए कोड के उदाहरण में, ओआईडीसी कॉलबैक हैंडलर रजिस्टर किया गया है. इसमें Google Cloud स्टैंडर्ड OAuth लाइब्रेरी का इस्तेमाल किया गया है.
इस लाइब्रेरी की मदद से, कई तरह की पुष्टि करने की सुविधा का इस्तेमाल किया जा सकता है. जैसे, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल और वर्कलोड आइडेंटिटी फ़ेडरेशन.
इसके लिए, auth लाइब्रेरी को डिपेंडेंसी के तौर पर जोड़ना ज़रूरी है:
// Maven
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
<version>1.19.0</version>
</dependency>
// Gradle
implementation 'com.google.auth:google-auth-library-oauth2-http:1.19.0'
यहां दिए गए कोड सैंपल में, कनेक्ट करने का तरीका बताया गया है:
val db = MongoClients.create( clientSettings( "DATABASE_UID", "LOCATION" ).build() ).getDatabase("DATABASE_ID") /** * Creates a connection to a Firestore with MongoDB Compatibility database. * @param databaseUid The uid of the database to connect to as a string. For example: f116f93a-519c-208a-9a72-3ef6c9a1f081 * @param locationId The location of the database to connect to, for example: nam5, us-central1, us-east4 etc... * @param environment Determines whether to try and fetch an authentication credential from the * Compute Engine VM metadata service or whether to call gcloud. */ private static MongoClientSettings.Builder clientSettings( String databaseUid: String String locationId:String ): MongoClientSettings.Builder { MongoCredential credential = MongoCredential.createOidcCredential(null) .withMechanismProperty( MongoCredential.OIDC_CALLBACK_KEY, new MongoCredential.OidcCallback() { @Override MongoCredential.OidcCallbackResult onRequest( MongoCredential.OidcCallbackContext context) { // Customize this credential builder for additional credential types. GoogleCredentials credentials = GoogleCredentials.getApplicationDefault(); return new MongoCredential.OidcCallbackResult( credentials.getAccessToken().getTokenValue(), Duration.between(Instant.now(), credentials.getAccessToken().getExpirationTime().toInstant())); } }, ); return MongoClientSettings.builder() .hosts(listOf(ServerAddress( "$databaseUid.$locationId.firestore.goog", 443))) .credential(credential) .applyToClusterSettings(builder -> builder.mode(ClusterConnectionMode.LOAD_BALANCED)) ).applyToSslSettings(ssl -> ssl.enabled(true)).retryWrites(false); }
इनकी जगह ये डालें:
- DATABASE_UID: आपके प्रोजेक्ट का नाम.
- LOCATION: आपके डेटाबेस की जगह.
- DATABASE_ID डेटाबेस आईडी.
Compute Engine वीएम से कनेक्ट करना
Compute Engine सेवा खाते का इस्तेमाल करके, अपने डेटाबेस से कनेक्ट किया जा सकता है और उसकी पुष्टि की जा सकती है. इसके लिए, Google Cloud प्रोजेक्ट के लिए IAM नीति बनाएं. इस प्रोजेक्ट में आपका डेटाबेस मौजूद है.
शुरू करने से पहले
अपनी वीएम के लिए, उपयोगकर्ता के मैनेज किए गए सेवा खाते को कॉन्फ़िगर करें:
- VM बनाते समय सेवा खाता कॉन्फ़िगर करने के लिए, उपयोगकर्ता के मैनेज किए गए सेवा खाते का इस्तेमाल करने वाली VM बनाना लेख पढ़ें.
- किसी मौजूदा वीएम पर सेवा खाता कॉन्फ़िगर करने के लिए, अटैच किए गए सेवा खाते में बदलाव करना लेख पढ़ें.
अपने सेवा खाते का ईमेल पता नोट करें.
क्रेडेंशियल कॉन्फ़िगर करना
सेवा खाते को roles/datastore.user
के लिए पढ़ने और लिखने की roles/datastore.user
भूमिका देने के लिए, यह कमांड चलाएं:Cloud Firestore
gcloud projects add-iam-policy-binding PROJECT_NAME --member="SERVICE_ACCOUNT_EMAIL" --role=roles/datastore.user
इनकी जगह ये डालें:
- PROJECT_NAME: आपके प्रोजेक्ट का नाम.
- SERVICE_ACCOUNT_EMAIL: यह उस सेवा खाते का ईमेल पता है जिसे आपने बनाया है.
कनेक्शन स्ट्रिंग बनाना
कनेक्शन स्ट्रिंग बनाने के लिए, इस फ़ॉर्मैट का इस्तेमाल करें:
mongodb://DATABASE_UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&tls=true&retryWrites=false&authMechanism=MONGODB-OIDC&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:FIRESTORE
इनकी जगह ये डालें:
- DATABASE_UID: आपके प्रोजेक्ट का नाम.
- LOCATION: आपके डेटाबेस की जगह.
- DATABASE_ID डेटाबेस आईडी.
यूआईडी और जगह की जानकारी वापस पाने के बारे में ज़्यादा जानने के लिए, कनेक्शन स्ट्रिंग वापस पाना लेख पढ़ें.
कुछ समय के लिए दिए गए ऐक्सेस टोकन से कनेक्ट करना
डाइग्नोस्टिक टूल चलाने के लिए, कुछ समय के लिए Google Cloud ऐक्सेस टोकन का इस्तेमाल किया जा सकता है. जैसे, mongosh
. कम समय के लिए उपलब्ध ऐक्सेस टोकन की मदद से पुष्टि करने के लिए, gcloud auth print-access-token
का इस्तेमाल किया जा सकता है. यह टोकन एक घंटे के लिए मान्य है.
उदाहरण के लिए, mongosh
का इस्तेमाल करके अपने डेटाबेस से कनेक्ट करने के लिए, यह कमांड इस्तेमाल करें:
mongosh --tls \ --username access_token --password $(gcloud auth print-access-token) \ 'mongodb://UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&authMechanism=PLAIN&authSource=$external&retryWrites=false'
इनकी जगह ये डालें:
- DATABASE_UID: डेटाबेस का यूआईडी
- LOCATION: डेटाबेस की जगह
- DATABASE_ID: डेटाबेस आईडी