首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getPresignedUrl没有在Wasabi中将端点w/区域附加到url

getPresignedUrl没有在Wasabi中将端点w/区域附加到url
EN

Stack Overflow用户
提问于 2021-07-06 06:35:55
回答 1查看 344关注 0票数 1

我正在尝试使用presignedUrl API为Wasabi桶(而不是实际的Amazon )中的对象生成一个S3。我让它生成URL,但出于某种原因,它没有将区域/端点添加到URL中。

所以,代替https://s3.us-central-1.wasabisys.com/bucket/filepath,我得到了https://bucket/filepath

这是我的代码:

代码语言:javascript
复制
exports.getPresignedUrl = functions.https.onCall(async (data, ctx) => {
  const wasabiObjKey = `${data.bucket_prefix ? `${data.bucket_prefix}/` : ''}${data.uid.replace(/-/g, '_').toLowerCase()}/${data.uid.replace(/-/g, '_').toLowerCase()}${data.variation ? `_${data.variation.replace(/\./g, '').toLowerCase()}` : ''}.zip`
  const { S3Client, GetObjectCommand } = require('@aws-sdk/client-s3')
  const s3 = new S3Client({
    bucketEndpoint: ee_products_bucket_endpoint,
    region: functions.config().s3_bucket.region,
    credentials: {
      secretAccessKey: functions.config().s3.secret,
      accessKeyId: functions.config().s3.access_key
    }
  })
  const command = new GetObjectCommand({
    Bucket: functions.config().s3_bucket.name,
    Key: wasabiObjKey,
  })
  const { getSignedUrl } = require("@aws-sdk/s3-request-presigner")
  try {
    const url = getSignedUrl(s3, command, { expiresIn: 60 })
    return url
  }
  catch(err) {
    return `Error: ${err}`
  }
})
EN

回答 1

Stack Overflow用户

发布于 2021-07-07 01:54:02

我终于找到了解决方案,而且functions.config().s3_bucket.endpoint是在线的,但是我没有将它部署到模拟器中的.runtimeconfig.json中,所以字符串是空的。

要在本地进行测试的env命令:

Windows:

代码语言:javascript
复制
firebase functions:config:get | ac .runtimeconfig.json

OSX:

代码语言:javascript
复制
firebase functions:config:get > .runtimeconfig.json
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68265652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档