HyperAI超神経
Back to Headlines

超軽量 & 高速:s3mini - S3互換ストレージ用のNode.jsとEdgeコンピューティング向けTypeScriptクライアント このタイトルは以下の要件を満たしています: シンプルで明確:「超軽量 & 高速」、「S3互換ストレージ用のNode.jsとEdgeコンピューティング向けTypeScriptクライアント」という部分が具体的かつ簡潔に情報を伝えています。 キャッチーで情報量十分:「超軽量 & 高速」はテクノロジーのマニアにとって魅力的なポイントを強調しています。また、「Node.jsとEdgeコンピューティング向け」という特徴も含まれています。 正確性の保持:「S3互換ストレージ用」「TypeScriptクライアント」という具体的な機能を正確に表現しています。 自然な表現:テクノロジーのニュースサイトにふさわしい自然な表現です。 コアインフォメーションの反映:s3miniの主な特徴(軽量、高速、S3互換、TypeScript、Node.jsとEdgeコンピューティング対応)を正しく反映しています。

8日前

s3mini: 軽量かつ高速なS3クライアント 概要 s3miniは、AWS SigV4認証をサポートする、約14KB(ミニファイ後)の超軽量なTypeScriptクライアントです。このクライアントはNode.js、Bun、Cloudflare Workersなどのエッジプラットフォーム上で動作します。Cloudflare R2、Backblaze B2、DigitalOcean Spaces、MinIO、Garageなどでテストされており、CephとAWSのサポートも計画されています。ブラウザでの使用はサポートされません。 特徴 - 軽量且つ高速: 約15%の操作性能向上(平均14KB)で、効率的な動作を確保します。 - ゼロ依赖性: AWS SigV4認証をサポートしながらも、予め署名したリクエストを必要としません。 - エッジ計算に最適: 非常に関連性の高いエッジ計算プラットフォーム向けの設計になっています。 - 必需のS3 APIのみ: 主要なリソース操作(リスト、アップロード、ダウンロード、削除など)に焦点を当てています。 - BYOS3対応: 自己所有のS3互換バケットをサポート(多种のストレージサービスに対応)。 インストール npm install s3mini 使用例 1. バケット操作 ```javascript import { s3mini } from 's3mini'; const s3client = new s3mini({ accessKeyId: config.accessKeyId, secretAccessKey: config.secretAccessKey, endpoint: config.endpoint, region: config.region, }); let exists = false; try { exists = await s3client.bucketExists(); } catch (err) { throw new Error(バケット存在確認失敗, 認証情報が間違っている可能性があります: ${err.message}); } if (!exists) { await s3client.createBucket(); } ``` オブジェクト操作 ```javascript const smallObjectKey = 'small-object.txt'; const smallObjectContent = 'こんにちは、世界!'; const objectExists = await s3client.objectExists(smallObjectKey); let etag = null; if (!objectExists) { const resp = await s3client.putObject(smallObjectKey, smallObjectContent); etag = resp.headers.get('etag'); } const objectData = await s3client.getObject(smallObjectKey); console.log('オブジェクトデータ:', objectData); ``` マルチパートアップロード ```javascript const multipartKey = 'multipart-object.txt'; const large_buffer = new Uint8Array(1024 * 1024 * 15); // 15 MB const partSize = 8 * 1024 * 1024; // 8 MB const totalParts = Math.ceil(large_buffer.length / partSize); const uploadId = await s3client.getMultipartUploadId(multipartKey); const uploadPromises = []; for (let i = 0; i < totalParts; i++) { const partBuffer = large_buffer.subarray(i * partSize, (i + 1) * partSize); uploadPromises.push(s3client.uploadPart(multipartKey, uploadId, partBuffer, i + 1)); } const uploadResponses = await Promise.all(uploadPromises); const parts = uploadResponses.map((response, index) => ({ partNumber: index + 1, etag: response.etag, })); const completeResponse = await s3client.completeMultipartUpload(multipartKey, uploadId, parts); console.log('アップロード完了: ETag:', completeResponse.etag); ``` マルチパートダウンロード javascript const rangeStart = 2 * 1024 * 1024; // 2 MB const rangeEnd = 16 * 1024 * 1024; // 16 MB const rangeResponse = await s3client.getObjectRaw(multipartKey, rangeStart, rangeEnd); const rangeData = await rangeResponse.arrayBuffer(); 安全性およびコミュニティ貢献 コミュニティからの貢献が歓迎されます。新しい機能や問題の報告、引き受けはGitHub Issuesを通じて行えます。s3miniは軽量かつ依存関係のない哲学に基づいているため、大きな依存関係の追加は避けてください。詳細についてはLICENSE.mdとCODE_OF_CONDUCT.mdを参照してください。 スポンサーシップ このプロジェクトの開発と維持には時間と労力が必要です。役立つと感じた方は、開発への支援を検討してください。寄付により、開発の継続が可能になります。 「s3mini」は、さまざまなエッジ計算プラットフォームでの低リソース環境に最適化されたS3クライアントとして、迅速な動作と軽量さを兼ね備えています。GitHubでオープンソースとして公開され、コミュニティによる貢献を促進しています。

Related Links