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

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

একটি ফায়ারবেস প্রজেক্ট আসলে শুধুমাত্র একটি 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-এর ব্যবহারের উদাহরণ নীচে দেখানো হয়েছে:

    // 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 ব্যবহার করার জন্য আপনাকে একটি নতুন ফায়ারবেস প্রকল্প তৈরি করতে হবে। সহায়তার সাথে যোগাযোগ করুন যাতে আমরা আপনাকে সাহায্য করতে পারি।

,

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

একটি ফায়ারবেস প্রজেক্ট আসলে শুধুমাত্র একটি 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-এর ব্যবহারের উদাহরণ নীচে দেখানো হয়েছে:

    // 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 ব্যবহার করার জন্য আপনাকে একটি নতুন ফায়ারবেস প্রকল্প তৈরি করতে হবে। সহায়তার সাথে যোগাযোগ করুন যাতে আমরা আপনাকে সাহায্য করতে পারি।

,

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

একটি ফায়ারবেস প্রজেক্ট আসলে শুধুমাত্র একটি 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-এর ব্যবহারের উদাহরণ নীচে দেখানো হয়েছে:

    // 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 ব্যবহার করার জন্য আপনাকে একটি নতুন ফায়ারবেস প্রকল্প তৈরি করতে হবে। সহায়তার সাথে যোগাযোগ করুন যাতে আমরা আপনাকে সাহায্য করতে পারি।

,

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

একটি ফায়ারবেস প্রজেক্ট আসলে শুধুমাত্র একটি 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 সহ বেশ কয়েকটি ক্লাউড পণ্যের জন্য উচ্চ-মানের সার্ভার এসডিকে সরবরাহ করে। এই গ্রন্থাগারগুলি নোড.জেএস , জাভা , গো , পাইথন , পিএইচপি এবং রুবিতে পাওয়া যায়।

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

Google Cloud Storage এসডিকে জন্য উদাহরণ ব্যবহার নীচে দেখানো হয়েছে:

    // 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

আপনি যদি ক্লায়েন্ট লাইব্রেরি ছাড়াই কোনও ভাষা ব্যবহার করছেন তবে ক্লায়েন্ট লাইব্রেরিগুলি না করে এমন কিছু করতে চান, বা কেবলমাত্র একটি প্রিয় এইচটিটিপি ক্লায়েন্ট রয়েছে যা আপনি ব্যবহার করতে পছন্দ করেন, Google Cloud Storage জেএসএন এবং এক্সএমএল উভয়ের জন্য এপিআই সরবরাহ করে।

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

gsutil

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

  • আপলোড, ডাউনলোড করা এবং মুছে ফেলা অবজেক্টগুলি।
  • বালতি এবং বস্তু তালিকাভুক্ত করা।
  • মুভিং, অনুলিপি এবং নামকরণ অবজেক্টস।
  • সম্পাদনা অবজেক্ট এবং বালতি ACLS।

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 একটি বহু-ভাড়াটে পরিষেবা, যার অর্থ ব্যবহারকারীরা অন্তর্নিহিত সংস্থানগুলির একই সেট ভাগ করে নেন। এই ভাগ করা সংস্থানগুলির সর্বোত্তম ব্যবহার করার জন্য, বালতিগুলির প্রাথমিক আইও ক্ষমতা রয়েছে।

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

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

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

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

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

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

বাসি ফাইলগুলি স্বয়ংক্রিয়ভাবে সংরক্ষণাগার বা মুছে ফেলার ক্ষমতা থাকা অনেক অ্যাপ্লিকেশনগুলির জন্য একটি দরকারী বৈশিষ্ট্য। ভাগ্যক্রমে, 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 বা আপনার নিজের সার্ভারের সাথে ম্যানুয়ালি মুছে ফেলা সম্পাদন করতে চাইতে পারেন।

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

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

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

গুগল ক্লাউড ভিশন এপিআই বিকাশকারীদের এপিআই ব্যবহার করা সহজে শক্তিশালী মেশিন লার্নিং মডেলগুলিকে আবদ্ধ করে কোনও চিত্রের বিষয়বস্তু বুঝতে সক্ষম করে। এটি দ্রুত হাজার হাজার বিভাগে চিত্রগুলিকে শ্রেণিবদ্ধ করে, চিত্রগুলির মধ্যে পৃথক বস্তু এবং মুখগুলি সনাক্ত করে, চিত্রগুলির মধ্যে থাকা মুদ্রিত শব্দগুলি সন্ধান করে এবং পঠন করে, আপত্তিকর বিষয়বস্তু সনাক্ত করে এবং এমনকি চিত্রের সংবেদন বিশ্লেষণ সরবরাহ করে।

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

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

Google App Engine

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

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

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

ফায়ারবেসে বিদ্যমান 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 প্রজেক্ট -1234।

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