গুগল ক্লাউডের সাথে একীভূত করুন

Cloud Storage for Firebase Google Cloud সাথে শক্তভাবে একত্রিত। Cloud Storage জন্য Firebase SDKগুলি সরাসরি Google Cloud Storage বালতিতে ফাইলগুলিকে সঞ্চয় করে এবং আপনার অ্যাপ বাড়ার সাথে সাথে আপনি অন্যান্য Google Cloud পরিষেবাগুলিকে একীভূত করতে পারেন, যেমন App Engine বা ক্লাউড ফাংশনগুলির মতো পরিচালিত গণনা, বা ক্লাউড ভিশন বা Google অনুবাদের মতো মেশিন লার্নিং API .

একটি ফায়ারবেস প্রজেক্ট আসলে শুধুমাত্র একটি Google Cloud প্রজেক্ট যার জন্য অতিরিক্ত ফায়ারবেস-নির্দিষ্ট কনফিগারেশন এবং পরিষেবা সক্ষম করা আছে। এর মানে হল যে প্রতিটি Cloud Storage বালতি যা আপনি Cloud Storage for Firebase সাথে ব্যবহার করেন তা Google Cloud অ্যাক্সেসযোগ্য (এর কনসোল এবং এর API সহ)।

বিদ্যমান Cloud Storage বালতিগুলি আমদানি সহ Google Cloud সাথে একীভূত করার জন্য ব্লেজ মূল্যের প্ল্যানে একটি ফায়ারবেস প্রকল্পের প্রয়োজন।

পরিষেবা অ্যাকাউন্টের জন্য বিবেচনা

Firebase ব্যবহারকারীর শংসাপত্রগুলি ভাগ না করে পরিষেবাগুলি পরিচালনা এবং পরিচালনা করতে Google Cloud পরিষেবা অ্যাকাউন্টগুলি ব্যবহার করে৷ আপনি যখন Cloud Storage ব্যবহার করে এমন একটি ফায়ারবেস প্রকল্প তৈরি করেন, তখন আপনি লক্ষ্য করতে পারেন যে আপনার প্রকল্পে একটি সংশ্লিষ্ট পরিষেবা অ্যাকাউন্ট ইতিমধ্যেই উপলব্ধ রয়েছে: service- PROJECT_NUMBER @gcp-sa-firebasestorage.iam.gserviceaccount.com । আরও তথ্যের জন্য, Firebase পরিষেবা অ্যাকাউন্টের ওভারভিউ দেখুন।

Google Cloud Storage

আপনি Cloud Storage জন্য Firebase SDK-এর মাধ্যমে আপলোড করা ফাইলগুলি অ্যাক্সেস করতে Google Cloud Storage API ব্যবহার করতে পারেন, বিশেষ করে আরও জটিল ক্রিয়াকলাপ সম্পাদন করতে, যেমন একটি ফাইল অনুলিপি করা বা সরানো, বা একটি রেফারেন্সে উপলব্ধ সমস্ত ফাইল তালিকাভুক্ত করা৷

এটা মনে রাখা গুরুত্বপূর্ণ যে এই অনুরোধগুলি Firebase Authentication এবং Cloud Storage Security Rules পরিবর্তে Google Cloud Storage অ্যাক্সেস নিয়ন্ত্রণ বিকল্পগুলি ব্যবহার করে৷

এপিআই

Cloud Storage জন্য Firebase SDK ছাড়াও, আপনি কী করতে চান তার উপর নির্ভর করে আপনার Cloud Storage বালতিতে সংরক্ষিত ডেটা অ্যাক্সেস করার আরও অনেক উপায় রয়েছে। আপনি যদি কোনো সার্ভারে ডেটা অ্যাক্সেস করেন, আমরা সার্ভার সাইড লাইব্রেরি, সেইসাথে একটি JSON এবং S3 সামঞ্জস্যপূর্ণ XML RESTful API অফার করি, অথবা যদি আপনার স্ক্রিপ্ট পরিবর্তন বা অন্যান্য প্রশাসনিক কাজ সম্পাদন করার প্রয়োজন হয়, আমরা একটি কমান্ড লাইন টুল পেয়েছি যা কাজে আসবে।

Google Cloud সার্ভার SDKs

Google Cloud Cloud Storage সহ বেশ কয়েকটি ক্লাউড পণ্যের জন্য উচ্চ-মানের সার্ভার SDK অফার করে। এই লাইব্রেরিগুলো Node.js , Java , go , Python , PHP , এবং Ruby তে পাওয়া যায়।

ইনস্টলেশন নির্দেশাবলী, প্রমাণীকরণ এবং সমস্যা সমাধান সহ আরও তথ্যের জন্য, উপরে লিঙ্ক করা প্ল্যাটফর্ম-নির্দিষ্ট ডকুমেন্টেশন দেখুন।

Google Cloud Storage SDK-এর ব্যবহারের উদাহরণ নীচে দেখানো হয়েছে:

Node.js

    // Require gcloud
    var gcloud = require('google-cloud');

    // Enable Cloud Storage
    var gcs = gcloud.storage({
      projectId: 'grape-spaceship-123',
      keyFilename: '/path/to/keyfile.json'
    });

    // Reference an existing bucket.
    var bucket = gcs.bucket('my-existing-bucket');

    // Upload a local file to a new file to be created in your bucket.
    bucket.upload('/photos/zoo/zebra.jpg', function(err, file) {
      if (!err) {
        // "zebra.jpg" is now in your bucket.
      }
    });

    // Download a file from your bucket.
    bucket.file('giraffe.jpg').download({
      destination: '/photos/zoo/giraffe.jpg'
    }, function(err) {});
    

জাভা

    // Enable Cloud Storage
    Storage storage = StorageOptions.builder()
      .authCredentials(AuthCredentials.createForJson(new FileInputStream("/path/to/my/key.json"))
      .build()
      .service();

    // Upload a local file to a new file to be created in your bucket.
    InputStream uploadContent = ...
    BlobId blobId = BlobId.of("my-existing-bucket", "zebra.jpg");
    BlobInfo blobInfo = BlobInfo.builder(blobId).contentType("text/plain").build();
    Blob zebraBlob = storage.create(blobInfo, content);

    // Download a file from your bucket.
    Blob giraffeBlob = storage.get("my-existing-bucket", "giraffe.jpg", null);
    InputStream downloadContent = giraffeBlob.getInputStream();
    

যাও

    // Enable Cloud Storage
    client, err := storage.NewClient(ctx, option.WithServiceAccountFile("path/to/keyfile.json"))
    if err != nil {
        log.Fatal(err)
    }

    // Download a file from your bucket.
    rc, err := client.Bucket("my-existing-bucket").Object("giraffe.jpg").NewReader(ctx)
    if err != nil {
        log.Fatal(err)
    }
    defer rc.Close()
    body, err := ioutil.ReadAll(rc)
    if err != nil {
        log.Fatal(err)
    }
    

পাইথন

    # Import gcloud
    from google.cloud import storage

    # Enable Cloud Storage
    client = storage.Client()

    # Reference an existing bucket.
    bucket = client.get_bucket('my-existing-bucket')

    # Upload a local file to a new file to be created in your bucket.
    zebraBlob = bucket.get_blob('zebra.jpg')
    zebraBlob.upload_from_filename(filename='/photos/zoo/zebra.jpg')

    # Download a file from your bucket.
    giraffeBlob = bucket.get_blob('giraffe.jpg')
    giraffeBlob.download_as_string()
    

পিএইচপি

    // Require gcloud
    require 'vendor/autoload.php';
    use Google\Cloud\Storage\StorageClient;

    // Enable Cloud Storage
    $storage = new StorageClient([
        'projectId' => 'grape-spaceship-123'
    ]);

    // Reference an existing bucket.
    $bucket = $storage->bucket('my-existing-bucket');

    // Upload a file to the bucket.
    $bucket->upload(
        fopen('/photos/zoo/zebra.jpg', 'r')
    );

    // Download a file from your bucket.
    $object = $bucket->object('giraffe.jpg');
    $object->downloadToFile('/photos/zoo/giraffe.jpg');
    

রুবি

    # Require gcloud
    require "google/cloud"

    # Enable Cloud Storage
    gcloud = Google::Cloud.new "grape-spaceship-123", "/path/to/keyfile.json"
    storage = gcloud.storage

    # Reference an existing bucket.
    bucket = storage.bucket "my-existing-bucket"

    # Upload a file to the bucket.
    bucket.create_file "/photos/zoo/zebra.jpg", "zebra.jpg"

    # Download a file from your bucket.
    file = bucket.file "giraffe.jpg"
    file.download "/photos/zoo/#{file.name}"
    

REST API

আপনি যদি ক্লায়েন্ট লাইব্রেরি ছাড়াই কোনো ভাষা ব্যবহার করেন, এমন কিছু করতে চান যা ক্লায়েন্ট লাইব্রেরিগুলি করে না, বা শুধুমাত্র একটি প্রিয় HTTP ক্লায়েন্ট থাকে যা আপনি ব্যবহার করতে পছন্দ করেন, Google Cloud Storage JSON এবং XML উভয়ের জন্য API অফার করে .

এই স্টোরেজ ডেটা অ্যাক্সেস APIগুলি ছাড়াও, Firebase প্রকল্পগুলিতে ব্যবহারের জন্য ক্লাউড স্টোরেজ বালতিগুলি পরিচালনা করতে, আপনি Firebase API-এর জন্য ক্লাউড স্টোরেজ ব্যবহার করতে পারেন।

gsutil

gsutil হল একটি কমান্ড লাইন টুল যা আপনাকে Cloud Storage সরাসরি অ্যাক্সেস দেয়। আপনি বালতি এবং অবজেক্ট ম্যানেজমেন্টের বিস্তৃত কাজ করতে gsutil ব্যবহার করতে পারেন, যার মধ্যে রয়েছে:

  • বস্তু আপলোড করা, ডাউনলোড করা এবং মুছে ফেলা।
  • বালতি এবং বস্তুর তালিকা করা।
  • বস্তু সরানো, অনুলিপি করা এবং নাম পরিবর্তন করা।
  • বস্তু এবং বালতি ACL সম্পাদনা করা হচ্ছে।

gsutil অন্যান্য উন্নত ক্রিয়াকলাপগুলির জন্য অনুমতি দেয়, যেমন একটি ডিরেক্টরি থেকে অন্য ডিরেক্টরিতে ফাইল সরানো, বা একটি নির্দিষ্ট অবস্থানের নীচের সমস্ত ফাইল মুছে ফেলা।

সমস্ত ফাইল এক রেফারেন্স থেকে অন্য রেফারেন্সে সরানো যতটা সহজ:

gsutil mv gs://bucket/old/reference gs://bucket/new/reference

একটি রেফারেন্সের নীচে সমস্ত ফাইল মুছে ফেলা ব্যাচ একইভাবে স্বজ্ঞাত:

# Delete all files under a path
gsutil rm -r gs://bucket/reference/to/delete

# Delete all the files in a bucket but not the bucket gsutil rm -r gs://bucket/**

# Delete all the files AND the bucket # Removing the default bucket will break the Firebase SDKs for Cloud Storage and is strongly discouraged gsutil rm -r gs://bucket

অনুরোধ হার

Google Cloud Storage হল একটি অত্যন্ত মাপযোগ্য পরিষেবা যা খুব উচ্চ অনুরোধের হার অর্জন করতে স্বয়ংক্রিয়-স্কেলিং প্রযুক্তি ব্যবহার করে।

Google Cloud Storage হল একটি মাল্টি-টেন্যান্ট পরিষেবা, যার অর্থ ব্যবহারকারীরা অন্তর্নিহিত সংস্থানগুলির একই সেট ভাগ করে। এই ভাগ করা সম্পদগুলির সর্বোত্তম ব্যবহার করার জন্য, বালতিগুলির একটি প্রাথমিক IO ক্ষমতা রয়েছে।

আপনি যখন আপনার অ্যাপে Cloud Storage for Firebase একীভূত করার পরিকল্পনা করছেন, তখন ভাল পারফরম্যান্সের জন্য আপনার অ্যাপের প্রয়োজনীয় ন্যূনতম অনুরোধের হার এবং দক্ষতার সাথে অনুরোধ করার বিষয়ে চিন্তা করুন। অনুরোধের হার সম্পর্কে নির্দেশিকা পর্যালোচনা করুন, এবং বিশেষ করে অনুরোধের হার বাড়ান

অবজেক্ট সংস্করণ

আপনি কি কখনও দুর্ঘটনাক্রমে কিছু মুছে ফেলেছেন এবং ব্যাকআপ নেননি? Google Cloud Storage অবজেক্ট সংস্করণ সমর্থন করে, যা আপনার ডেটা ব্যাক আপ করার এবং সেই ব্যাকআপগুলি থেকে পুনরুদ্ধার করার একটি স্বয়ংক্রিয় উপায় প্রদান করে৷ আপনি gsutil versioning set কমান্ড ব্যবহার করে অবজেক্ট সংস্করণ সক্ষম করতে পারেন:

gsutil versioning set on gs://<your-cloud-storage-bucket>

Cloud Storage সর্বদা সাম্প্রতিকতম সংস্করণটি তুলে নেয়, তাই আপনি যদি একটি বস্তু পুনরুদ্ধার করতে চান তবে আপনাকে পছন্দসই বস্তুটিকে সাম্প্রতিকতম হিসাবে সেট করতে উপরের অন্য API বা সরঞ্জামগুলির একটি ব্যবহার করতে হবে।

অবজেক্ট লাইফসাইকেল ম্যানেজমেন্ট

পুরানো ফাইলগুলি স্বয়ংক্রিয়ভাবে সংরক্ষণাগার বা মুছে ফেলার ক্ষমতা থাকা অনেক অ্যাপ্লিকেশনের জন্য একটি দরকারী বৈশিষ্ট্য। সৌভাগ্যবশত, Google Cloud Storage লাইফসাইকেল ম্যানেজমেন্ট প্রদান করে, যা আপনাকে নির্দিষ্ট সময়ের পর বস্তু মুছে ফেলতে বা আর্কাইভ করতে দেয়।

একটি ফটো শেয়ারিং অ্যাপ্লিকেশন বিবেচনা করুন যেটি আপনি চান যে সমস্ত ফটো একদিনের মধ্যে মুছে ফেলা হোক। আপনি নিম্নলিখিত হিসাবে একটি অবজেক্ট লাইফসাইকেল নীতি সেট আপ করতে পারেন:

// lifecycle.json
{
  "lifecycle": {
    "rule":
    [
      {
        "action": {"type": "Delete"},
        "condition": {"age": 1}
      }
    ]
  }
}

এবং gsutil lifecycle set কমান্ড ব্যবহার করে এটি স্থাপন করুন:

gsutil lifecycle set lifecycle.json gs://<your-cloud-storage-bucket>

মনে রাখবেন যে এটি বালতিতে থাকা সমস্ত ফাইলের ক্ষেত্রে প্রযোজ্য, তাই যদি আপনি গুরুত্বপূর্ণ ব্যবহারকারীর ব্যাকআপগুলি সংরক্ষণ করেন যা আপনি দীর্ঘ সময়ের জন্য সঞ্চয় করতে চান পাশের ফটোগুলি যা আপনি প্রতিদিন মুছতে চান, আপনি দুটি পৃথক বালতি ব্যবহার করতে বা ম্যানুয়ালি মুছে ফেলার কাজ করতে চাইতে পারেন gsutil বা আপনার নিজের সার্ভারের সাথে।

Google ক্লাউড ফাংশন (বিটা)

Google ক্লাউড ফাংশন হল একটি হালকা ওজনের, ইভেন্ট-ভিত্তিক, অ্যাসিঙ্ক্রোনাস কম্পিউট সমাধান যা আপনাকে ছোট, একক-উদ্দেশ্য ফাংশন তৈরি করতে দেয় যা সার্ভার বা রানটাইম পরিবেশ পরিচালনার প্রয়োজন ছাড়াই ইভেন্টগুলিতে প্রতিক্রিয়া জানায়। এই ফাংশনগুলি ভিডিও ট্রান্সকোডিং, মেশিন লার্নিং ব্যবহার করে ছবি শ্রেণীবদ্ধ করার জন্য বা Firebase Realtime Database সাথে মেটাডেটা সিঙ্ক করার জন্য ব্যবহার করা যেতে পারে। App Engine থেকেও কম ওভারহেড সহ, ক্লাউড ফাংশন হল Cloud Storage পরিবর্তনগুলিতে প্রতিক্রিয়া জানানোর দ্রুততম উপায়৷

গুগল ক্লাউড ভিশন API

Google ক্লাউড ভিশন API ব্যবহার করা সহজ API-এ শক্তিশালী মেশিন লার্নিং মডেলগুলিকে এনক্যাপসুলেট করে একটি ছবির বিষয়বস্তু বুঝতে বিকাশকারীদের সক্ষম করে৷ এটি দ্রুত চিত্রগুলিকে হাজার হাজার বিভাগে শ্রেণীবদ্ধ করে, চিত্রগুলির মধ্যে পৃথক বস্তু এবং মুখগুলি সনাক্ত করে, চিত্রগুলির মধ্যে থাকা মুদ্রিত শব্দগুলি খুঁজে পায় এবং পড়ে, আপত্তিকর বিষয়বস্তু সনাক্ত করে এবং এমনকি চিত্রের অনুভূতি বিশ্লেষণও প্রদান করে৷

গুগল ক্লাউড স্পিচ API

ভিশন API-এর মতো, Google ক্লাউড স্পিচ API ডেভেলপারদের Cloud Storage সঞ্চিত একটি অডিও ফাইল থেকে পাঠ্য বের করতে সক্ষম করে। API আপনার বিশ্বব্যাপী ব্যবহারকারী বেস সমর্থন করতে 80 টিরও বেশি ভাষা এবং রূপগুলিকে স্বীকৃতি দেয়৷ Google ক্লাউড ন্যাচারাল ল্যাঙ্গুয়েজ API-এর সাথে একত্রিত হলে, বিকাশকারীরা উভয়ই কাঁচা পাঠ্যটি বের করতে পারে এবং সেই পাঠ্যটির অর্থ অনুমান করতে পারে। এবং যদি একটি বিশ্বব্যাপী দর্শকের প্রয়োজন হয়, 90+ ভাষায় পাঠ্য অনুবাদ করতে Google অনুবাদ API এর সাথে এটিকে সংযুক্ত করুন৷

Google App Engine

Google App Engine হল একটি "পরিষেবা হিসাবে প্ল্যাটফর্ম" যা স্বয়ংক্রিয়ভাবে ব্যাকএন্ড লজিক স্কেল করে যা এটি প্রাপ্ত ট্র্যাফিকের পরিমাণের প্রতিক্রিয়ায়। শুধু আপনার ব্যাকএন্ড কোড আপলোড করুন এবং Google আপনার অ্যাপের উপলব্ধতা পরিচালনা করবে; আপনার বিধান বা বজায় রাখার জন্য কোন সার্ভার নেই। App Engine হল আপনার ফায়ারবেস অ্যাপ্লিকেশনে অতিরিক্ত প্রসেসিং পাওয়ার বা বিশ্বস্ত এক্সিকিউশন যোগ করার একটি দ্রুত এবং সহজ উপায়।

যদি আপনার কাছে একটি ডিফল্ট Cloud Storage বাকেট থাকে যার নাম বিন্যাস PROJECT_ID .appspot.com , তারপর এটি স্বয়ংক্রিয়ভাবে আপনার প্রকল্পের একটি App Engine অ্যাপের সাথে শেয়ার করা হবে৷ এর মানে হল যে আপনি যদি একটি App Engine অ্যাপ তৈরি করেন, আপনি সেই বালতি এবং App Engine মধ্যে ডেটা ভাগ করতে অন্তর্নির্মিত App Engine API ব্যবহার করতে পারেন। এটি অডিও এনকোডিং, ভিডিও ট্রান্সকোডিং এবং ইমেজ ট্রান্সফর্মেশনের পাশাপাশি অন্যান্য গণনা নিবিড় পটভূমি প্রক্রিয়াকরণের জন্য দরকারী।

App Engine জন্য জাভা, পাইথন এবং গো স্ট্যান্ডার্ড পরিবেশে App Engine ইমেজ API ( Java | Python | Go ) অন্তর্ভুক্ত রয়েছে, যা একটি চিত্রের আকার পরিবর্তন করতে, ঘোরাতে, ফ্লিপ করতে এবং ক্রপ করতে পারে, সেইসাথে একটি চিত্র পরিবেশনকারী URL ফেরত দিতে পারে যা অনুমতি দেয় ক্লায়েন্ট সাইড ট্রান্সফর্মেশন, ক্লাউডিনারি এবং ইমজিক্সের মতো।

ফায়ারবেসে একটি বিদ্যমান Google Cloud প্রজেক্ট আমদানি করার সময়, আপনি যদি ফায়ারবেসে বিদ্যমান কোনো App Engine অবজেক্টকে উপলব্ধ করতে চান, তাহলে আপনাকে আপনার অবজেক্টে ডিফল্ট অ্যাক্সেস কন্ট্রোল সেট করতে হবে যাতে ফায়ারবেসকে gsutil ব্যবহার করে নিম্নলিখিত কমান্ডটি চালিয়ে সেগুলি অ্যাক্সেস করতে দেয় :

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://BUCKET_NAME

Firebase Security Rules এবং App Engine ফাইলের জন্য বিবেচনা

যদি আপনার একটি ডিফল্ট Cloud Storage বালতি থাকে যার একটি নামের বিন্যাস *.appspot.com , তারপর আপনার প্রজেক্টে একটি App Engine অ্যাপ রয়েছে যা সেই বালতিটি শেয়ার করে।

আপনি যদি সর্বজনীন (অপ্রমাণিত) অ্যাক্সেসের জন্য আপনার Firebase Security Rules কনফিগার করেন তবে আপনি নতুন আপলোড করা App Engine ফাইলগুলিকেও সর্বজনীনভাবে অ্যাক্সেসযোগ্য করে তুলবেন।

Cloud Storage এবং App Engine জন্য পরিচিত সমস্যা

দুটি পরিচিত কেস আছে যেখানে আপনি আপনার App Engine অ্যাপ আমদানি করতে পারবেন না:

  1. প্রকল্পটিতে একটি প্রাক্তন App Engine Datastore মাস্টার/স্লেভ অ্যাপ রয়েছে।
  2. প্রকল্পটির একটি ডোমেন প্রিফিক্সড প্রজেক্ট আইডি রয়েছে, উদাহরণস্বরূপ: domain.com:project-1234

এই দুটি ক্ষেত্রেই, প্রকল্পটি Cloud Storage for Firebase সমর্থন করবে না এবং Cloud Storage ব্যবহার করার জন্য আপনাকে একটি নতুন ফায়ারবেস প্রকল্প তৈরি করতে হবে। সহায়তার সাথে যোগাযোগ করুন যাতে আমরা আপনাকে সাহায্য করতে পারি।