コンテンツにスキップ

R2 APIに対する認証トークンを使用した認証

Last reviewed: 27 days ago

以下の例は、S3 APIとAPIトークンを使用してR2に対して認証する方法を示しています。

以下の環境変数を設定してから、いずれかの例を実行してください:

Terminal window
export R2_ACCOUNT_ID=your_account_id
export R2_ACCESS_KEY_ID=your_access_key_id
export R2_SECRET_ACCESS_KEY=your_secret_access_key
export R2_BUCKET_NAME=your_bucket_name

S3 API用のaws-sdkパッケージをインストールします:

Terminal window
npm install aws-sdk
const AWS = require('aws-sdk');
const crypto = require('crypto');
const ACCOUNT_ID = process.env.R2_ACCOUNT_ID;
const ACCESS_KEY_ID = process.env.R2_ACCESS_KEY_ID;
const SECRET_ACCESS_KEY = process.env.R2_SECRET_ACCESS_KEY;
const BUCKET_NAME = process.env.R2_BUCKET_NAME;
// 秘密アクセスキーをハッシュ化
const hashedSecretKey = crypto.createHash('sha256').update(SECRET_ACCESS_KEY).digest('hex');
// Cloudflare R2用のS3クライアントを設定
const s3Client = new AWS.S3({
endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`,
accessKeyId: ACCESS_KEY_ID,
secretAccessKey: hashedSecretKey,
signatureVersion: 'v4',
region: 'auto' // Cloudflare R2はリージョンを使用しませんが、SDKには必要です
});
// オブジェクトキーを指定
const objectKey = '2024/08/02/ingested_0001.parquet';
// オブジェクトを取得する関数
async function fetchObject() {
try {
const params = {
Bucket: BUCKET_NAME,
Key: objectKey
};
const data = await s3Client.getObject(params).promise();
console.log('オブジェクトの取得に成功しました');
// 必要に応じてデータを処理
// 例えば、内容をBufferとして取得するには:
// const content = data.Body;
// またはファイルを保存するには('fs'モジュールが必要):
// const fs = require('fs').promises;
// await fs.writeFile('ingested_0001.parquet', data.Body);
} catch (error) {
console.error('オブジェクトの取得に失敗しました:', error);
}
}
fetchObject();