我找不到如何通过 cloudflare 的 API 将使用指标获取到我的 R2 存储桶。 我想获取桶的大小以及A类和B类操作的数量。
谢谢!
您可以使用它们的
https://api.cloudflare.com/client/v4/graphql
端点来执行这两个查询。无论如何,这就是他们的前端所做的。我正在使用 graphql-request
包在 Nodejs 中编写此内容,但我确实看到如果您也愿意,也可以使用 cURL 来完成此操作。
我主要关注他们的文档这里
这是一个执行这两个请求的 JavaScript 文件。如果你想过滤到某个存储桶,你可以将bucketName属性添加到过滤器中。但是,请记住,出于计费目的的操作请求是帐户范围内的,而不是每个存储桶的。
import 'dotenv/config'
import { request, gql } from 'graphql-request'
const date = new Date()
date.setDate(1) // set to first of the month
const res = await request('https://api.cloudflare.com/client/v4/graphql', gql`
{
viewer {
accounts(filter: { accountTag: $accountTag }) {
r2OperationsAdaptiveGroups(
filter: { datetime_geq: $datetime }
limit: 9999
) {
dimensions {
actionType
}
sum {
requests
}
}
}
}
}
`, {
accountTag: process.env.CLOUDFLARE_ACCOUNT,
datetime: date.toISOString(),
}, {
'X-AUTH-EMAIL': process.env.CLOUDFLARE_EMAIL,
'X-AUTH-KEY': process.env.CLOUDFLARE_API_TOKEN,
})
const classA = ["ListBuckets", "PutBucket", "ListObjects", "PutObject", "CopyObject", "CompleteMultipartUpload", "CreateMultipartUpload", "ListMultipartUploads", "UploadPart", "UploadPartCopy", "ListParts", "PutBucketEncryption", "PutBucketCors", "PutBucketLifecycleConfiguration"]
const classB = ["HeadBucket", "HeadObject", "GetObject", "UsageSummary", "GetBucketEncryption", "GetBucketLocation", "GetBucketCors", "GetBucketLifecycleConfiguration"]
let [classATotal, classBTotal] = [0, 0]
res.viewer.accounts[0].r2OperationsAdaptiveGroups.forEach(item => {
if (classA.includes(item.dimensions.actionType)) {
classATotal += item.sum.requests
} else if (classB.includes(item.dimensions.actionType)) {
classBTotal += item.sum.requests
}
})
console.log("class A operations:", classATotal)
console.log("class B operations:", classBTotal)
const storage = await request('https://api.cloudflare.com/client/v4/graphql', gql`
{
viewer {
accounts(filter: { accountTag: $accountTag }) {
r2StorageAdaptiveGroups(
limit: 9999
filter: { datetime_geq: $datetime }
) {
max {
payloadSize
}
}
}
}
}
`, {
accountTag: process.env.CLOUDFLARE_ACCOUNT,
datetime: date.toISOString(),
}, {
'X-AUTH-EMAIL': process.env.CLOUDFLARE_EMAIL,
'X-AUTH-KEY': process.env.CLOUDFLARE_API_TOKEN,
})
console.log("bytes", storage.viewer.accounts[0].r2StorageAdaptiveGroups[0].max.payloadSize)
这假设您有一个 .env 文件,其中填写了这三个值
CLOUDFLARE_ACCOUNT=
CLOUDFLARE_API_TOKEN=
CLOUDFLARE_EMAIL=
使用他们的docs作为指导生成令牌。
如何获取您的帐户ID。