বাংলা
বাংলা
Appearance
বাংলা
বাংলা
Appearance
AWS SDK ব্যবহার করে IPFS Ninja-তে ফাইল আপলোড, ডাউনলোড এবং পরিচালনা করুন — Amazon S3-এর জন্য যে কোড ব্যবহার করেন সেই একই কোড দিয়ে।
https://s3.ipfs.ninjaS3 API আপনার IPFS Ninja API কী প্রমাণীকরণের জন্য ব্যবহার করে। আপনার API কী access key এবং secret key উভয় হিসেবে কাজ করে।
আপনার কী এইরকম দেখায়:
bws_628bba35e9e0079d9ff9c392b1b55a7b
├──────────┘└──────────────────────────┘
prefix (12 chars) rest of key| AWS প্যারামিটার | মান | উদাহরণ |
|---|---|---|
accessKeyId | আপনার API কী-এর প্রথম ১২টি অক্ষর | bws_628bba35 |
secretAccessKey | সম্পূর্ণ API কী (সব ৩৬টি অক্ষর) | bws_628bba35e9e0079d9ff9c392b1b55a7b |
region | সর্বদা us-east-1 | us-east-1 |
WARNING
সম্পূর্ণ API কী শুধুমাত্র তৈরি করার সময় একবার দেখানো হয়। যদি হারিয়ে ফেলেন, কীটি মুছে ফেলুন এবং API Keys পেজ থেকে নতুন একটি তৈরি করুন।
import { S3Client, PutObjectCommand, GetObjectCommand } from "@aws-sdk/client-s3";
const s3 = new S3Client({
endpoint: "https://s3.ipfs.ninja",
credentials: {
accessKeyId: "bws_628bba35",
secretAccessKey: "bws_628bba35e9e0079d9ff9c392b1b55a7b"
},
region: "us-east-1",
forcePathStyle: true
});
// Upload a file
const put = await s3.send(new PutObjectCommand({
Bucket: "my-project",
Key: "hello.json",
Body: JSON.stringify({ hello: "IPFS" }),
ContentType: "application/json"
}));
console.log("CID:", put.Metadata?.cid);
// CID: QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1XyS3 bucket গুলি আপনার IPFS Ninja ফোল্ডারে ম্যাপ হয়। আপনি যখন একটি bucket-এ ফাইল আপলোড করেন, এটি সংশ্লিষ্ট ফোল্ডারে সংরক্ষিত হয়। যখন আপনি একটি bucket-এ অবজেক্ট তালিকা করেন, আপনি সেই ফোল্ডারের ফাইলগুলি দেখতে পান।
| S3 অপারেশন | IPFS Ninja সমতুল্য |
|---|---|
CreateBucket | নতুন ফোল্ডার তৈরি |
ListBuckets | আপনার ফোল্ডারের তালিকা |
DeleteBucket | ফোল্ডার এবং এর সব ফাইল মুছুন |
PutObject bucket-এ | ফোল্ডারে ফাইল আপলোড |
ListObjectsV2 bucket-এ | ফোল্ডারের ফাইলের তালিকা |
import { ListBucketsCommand, CreateBucketCommand, PutObjectCommand } from "@aws-sdk/client-s3";
// Create a bucket (= create a folder)
await s3.send(new CreateBucketCommand({ Bucket: "nft-metadata" }));
// Upload a file into the folder
await s3.send(new PutObjectCommand({
Bucket: "nft-metadata", // ← folder name
Key: "token-42.json", // ← filename within the folder
Body: JSON.stringify({ name: "My NFT #42" })
}));
// List buckets (= list your folders)
const { Buckets } = await s3.send(new ListBucketsCommand({}));
console.log(Buckets);
// [{ Name: "nft-metadata", CreationDate: "2026-04-13T..." }]TIP
S3 API-এর মাধ্যমে তৈরি ফোল্ডারগুলি আপনার Dashboard-এ দৃশ্যমান একই ফোল্ডার। আপনি S3 API, REST API বা ওয়েব ইন্টারফেস — যেকোনো জায়গা থেকে ফাইল সংগঠিত করতে পারেন — সবগুলি একই ফোল্ডার সিস্টেম শেয়ার করে।
INFO
Amazon S3-এর বিপরীতে, IPFS Ninja ফোল্ডারগুলি ডিফল্টভাবে সমতল। নেস্টেড কাঠামো তৈরি করতে, REST API-এর ফোল্ডার endpoint গুলি parentFolderId সহ ব্যবহার করুন। S3 API থেকে, ফোল্ডারের মধ্যে সংগঠিত করতে কী প্রিফিক্স ব্যবহার করুন (যেমন images/photo.png)।
IPFS-এ একটি ফাইল আপলোড করুন। ফাইলটি পিন করা হয়, নিরাপত্তা স্ক্যান করা হয় এবং CID ETag এবং x-amz-meta-cid হেডারে ফেরত দেওয়া হয়।
import { PutObjectCommand } from "@aws-sdk/client-s3";
import fs from "fs";
const result = await s3.send(new PutObjectCommand({
Bucket: "my-project",
Key: "photo.png",
Body: fs.readFileSync("photo.png"),
ContentType: "image/png"
}));
console.log("CID:", result.ETag);# curl equivalent
curl -X PUT "https://s3.ipfs.ninja/my-project/photo.png" \
--data-binary @photo.png \
-H "Content-Type: image/png" \
--aws-sigv4 "aws:amz:us-east-1:s3" \
--user "bws_628bba35:bws_628bba35e9e0079d9ff9c392b1b55a7b"কী (ফাইলনাম) বা CID দিয়ে একটি ফাইল ডাউনলোড করুন।
import { GetObjectCommand } from "@aws-sdk/client-s3";
const result = await s3.send(new GetObjectCommand({
Bucket: "my-project",
Key: "photo.png"
}));
const body = await result.Body.transformToByteArray();
console.log("Size:", body.length);
console.log("CID:", result.Metadata?.cid);কন্টেন্ট ডাউনলোড না করে ফাইলের মেটাডেটা পান।
import { HeadObjectCommand } from "@aws-sdk/client-s3";
const head = await s3.send(new HeadObjectCommand({
Bucket: "my-project",
Key: "photo.png"
}));
console.log("Size:", head.ContentLength);
console.log("Type:", head.ContentType);
console.log("CID:", head.Metadata?.cid);IPFS থেকে একটি ফাইল আনপিন করুন এবং আপনার অ্যাকাউন্ট থেকে মুছে ফেলুন।
import { DeleteObjectCommand } from "@aws-sdk/client-s3";
await s3.send(new DeleteObjectCommand({
Bucket: "my-project",
Key: "photo.png"
}));ঐচ্ছিক প্রিফিক্স ফিল্টারিং এবং পেজিনেশন সহ একটি bucket-এ ফাইলের তালিকা করুন।
import { ListObjectsV2Command } from "@aws-sdk/client-s3";
const list = await s3.send(new ListObjectsV2Command({
Bucket: "my-project",
Prefix: "images/",
MaxKeys: 100
}));
for (const obj of list.Contents ?? []) {
console.log(obj.Key, obj.Size, obj.ETag); // ETag = CID
}multipart upload ব্যবহার করে বড় ফাইল (৫ GB পর্যন্ত) আপলোড করুন। AWS SDK স্বয়ংক্রিয়ভাবে এটি পরিচালনা করে:
import { Upload } from "@aws-sdk/lib-storage";
import fs from "fs";
const upload = new Upload({
client: s3,
params: {
Bucket: "my-project",
Key: "large-dataset.tar.gz",
Body: fs.createReadStream("large-dataset.tar.gz"),
ContentType: "application/gzip"
},
partSize: 10 * 1024 * 1024, // 10 MB per part
});
upload.on("httpUploadProgress", (progress) => {
console.log(`Uploaded ${progress.loaded} of ${progress.total} bytes`);
});
const result = await upload.done();
console.log("CID:", result.ETag);অথবা ম্যানুয়ালি পার্ট নিয়ন্ত্রণ করুন:
import {
CreateMultipartUploadCommand,
UploadPartCommand,
CompleteMultipartUploadCommand
} from "@aws-sdk/client-s3";
// 1. Start
const { UploadId } = await s3.send(new CreateMultipartUploadCommand({
Bucket: "my-project",
Key: "big-file.bin"
}));
// 2. Upload parts
const part1 = await s3.send(new UploadPartCommand({
Bucket: "my-project",
Key: "big-file.bin",
UploadId,
PartNumber: 1,
Body: chunk1
}));
// 3. Complete
const result = await s3.send(new CompleteMultipartUploadCommand({
Bucket: "my-project",
Key: "big-file.bin",
UploadId,
MultipartUpload: {
Parts: [{ PartNumber: 1, ETag: part1.ETag }]
}
}));import boto3
s3 = boto3.client(
"s3",
endpoint_url="https://s3.ipfs.ninja",
aws_access_key_id="bws_628bba35",
aws_secret_access_key="bws_628bba35e9e0079d9ff9c392b1b55a7b",
region_name="us-east-1"
)
# Upload
s3.put_object(
Bucket="my-project",
Key="data.json",
Body=b'{"hello": "IPFS"}',
ContentType="application/json"
)
# List files
response = s3.list_objects_v2(Bucket="my-project")
for obj in response.get("Contents", []):
print(obj["Key"], obj["Size"])
# Download
result = s3.get_object(Bucket="my-project", Key="data.json")
print(result["Body"].read())package main
import (
"context"
"fmt"
"strings"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
func main() {
client := s3.New(s3.Options{
BaseEndpoint: aws.String("https://s3.ipfs.ninja"),
Region: "us-east-1",
Credentials: credentials.NewStaticCredentialsProvider("bws_628bba35", "bws_628bba35e9e0...", ""),
UsePathStyle: true,
})
_, err := client.PutObject(context.TODO(), &s3.PutObjectInput{
Bucket: aws.String("my-project"),
Key: aws.String("hello.txt"),
Body: strings.NewReader("Hello, IPFS!"),
ContentType: aws.String("text/plain"),
})
if err != nil {
panic(err)
}
fmt.Println("Uploaded!")
}| বৈশিষ্ট্য | Amazon S3 | IPFS Ninja S3 |
|---|---|---|
| স্টোরেজ মডেল | পরিবর্তনযোগ্য অবজেক্ট | কন্টেন্ট-অ্যাড্রেসড (অপরিবর্তনীয় CID) |
| ওভাররাইট আচরণ | অবজেক্ট স্থানে প্রতিস্থাপন | নতুন CID তৈরি হয়, পুরানো CID এখনও অ্যাক্সেসযোগ্য |
| ভার্সনিং | সমর্থিত | সমর্থিত নয় (ভার্সনিং-এর জন্য CID ব্যবহার করুন) |
| সার্ভার-সাইড এনক্রিপশন | সমর্থিত | সমর্থিত নয় (কন্টেন্ট IPFS-এ রয়েছে) |
| লাইফসাইকেল পলিসি | সমর্থিত | সমর্থিত নয় |
| Bucket পলিসি / ACL | সমর্থিত | গেটওয়ে অ্যাক্সেস মোড ব্যবহার করুন |
| প্রিসাইনড URL | সমর্থিত | সাইনড আপলোড টোকেন ব্যবহার করুন |
| সর্বোচ্চ অবজেক্ট সাইজ | 5 TB | 5 GB (multipart), 100 MB (একক PUT) |
| রিজিওন | মাল্টি-রিজিওন | শুধুমাত্র us-east-1 |
ETag মান | MD5 হ্যাশ | IPFS CID |
| অতিরিক্ত হেডার | স্ট্যান্ডার্ড S3 | x-amz-meta-cid (IPFS CID) |
আপনার S3 ক্লায়েন্ট কনফিগারেশন প্রতিস্থাপন করুন:
const s3 = new S3Client({
+ endpoint: "https://s3.ipfs.ninja",
credentials: {
- accessKeyId: "AKIA...",
- secretAccessKey: "wJalrX..."
+ accessKeyId: "bws_628bba35",
+ secretAccessKey: "bws_628bba35e9e0..."
},
region: "us-east-1",
+ forcePathStyle: true
});আপনার বিদ্যমান PutObject, GetObject, ListObjectsV2 এবং DeleteObject কল কোনো পরিবর্তন ছাড়াই কাজ করবে।
Endpoint URL প্রতিস্থাপন করুন:
const s3 = new S3Client({
- endpoint: "https://s3.filebase.com",
+ endpoint: "https://s3.ipfs.ninja",
credentials: {
- accessKeyId: "FILEBASE_KEY",
- secretAccessKey: "FILEBASE_SECRET"
+ accessKeyId: "bws_628bba35",
+ secretAccessKey: "bws_628bba35e9e0..."
},
region: "us-east-1",
forcePathStyle: true
});