标签: bucket

更改s3fs已挂载存储桶的用户所有权

如何修改用户:s3fs挂载桶的组所有权?

我有一个git安装,我本来希望将其存储在我的Amazon S3帐户中,然后通过我的Web主机使用Sparkleshare,在多台计算机上同步这些数据.

- 我已经设置了sparkleshare来成功同步三台机器.奇迹般有效.

  • 这是同步到/ home/git/dropbox的文件夹没有问题.
  • 我想同步文件夹给我一个已安装的S3存储桶
  • 我可以将存储桶安装在该dropbox文件夹旁边,但是没有爱将所有权更改为git:git

问题:使用root:root用户创建装载时,只有该用户可以访问存储桶.

我尝试使用以GIT用户身份登录的S3FS创建挂载,但没有运气,它仍然以root:root用户身份安装并分配权限.

我是否要卸载S3FS并使用GIT用户重新安装?

任何帮助将不胜感激!

干草堆

amazon-s3 bucket s3fs

7
推荐指数
2
解决办法
1万
查看次数

"aws s3 ls"和"aws s3api list-objects"的不同行为

我看到了aws s3 lsaws s3api list-buckets的不同行为

这是第一个:

$ aws s3 ls s3://demo.for.customers

Bucket: demo.for.customers
Prefix: 

      LastWriteTime     Length Name
      -------------     ------ ----
                           PRE 5CE4D191-FD14-4C85-8146-9FB8C29B7A7B/
                           PRE FFBC4675-F864-40E9-8AB8-BDF7A0437010/
Run Code Online (Sandbox Code Playgroud)

所以,我能够列出demo.for.customers中的对象

现在,当我使用s3api运行相同的东西时,我被拒绝访问:

$ aws s3api list-objects --bucket demo.for.customers
A client error (AccessDenied) occurred: Access Denied
Run Code Online (Sandbox Code Playgroud)

问题:为什么我通过s3api拒绝列出对象的访问权限.

我提出这个问题的原因是,如果我使用AWS S3 Ruby SDK,我会遇到同样的问题.

但是,当我使用aws s3 ls时,事情很好.

因此AWS S3 Ruby SDKaws s3api表现出相同的行为.所以,我在这里只粘贴了aws s3api CLI问题.

顺便说一句,这是已应用于运行以上所有命令的用户的IAM策略:

{
  "Statement": [
    {
      "Action": [ …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 bucket amazon-web-services amazon-iam

7
推荐指数
1
解决办法
6330
查看次数

错误:存储桶名称必须与正则表达式“^[a-zA-Z0-9.\-_]{1,255}$”匹配

当我尝试将图像上传到存储桶时,它会引发错误"Invalid bucket name "thum.images ": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$""

我认为存储桶名称没有任何问题。

这是我上传图片的代码:

def upload_thumbnail_image(image_key, thumbnail_image):
    thumbnail_image_bucket = os.environ['thumbnail_bucket']
    thumbnail_image = #image path
    image_key = EFE3-27C8-EEB3-4987/3612d0bc-bdfd-49de-82ee-3e66cbb06807.jpg
    try:
        new_object = client.upload_file(thumbnail_image, thumbnail_image_bucket, image_key)
        return new_object
    except Exception as Exc:
        set_log(Exc.args[0],True)
Run Code Online (Sandbox Code Playgroud)

python regex amazon-s3 bucket amazon-web-services

7
推荐指数
1
解决办法
2万
查看次数

当联接密钥是bucketBy密钥的超集时,如何说服火花不要进行交换?

在测试生产用例时,我创建并保存了(使用Hive Metastore)这样的表:

table1:
fields: key1, key2, value1
sortedBy key1,key2
bucketBy: key1, 100 buckets

table2:
fields: key1, key2, value2
sortedBy: key1,key2
bucketBy: key1, 100 buckets
Run Code Online (Sandbox Code Playgroud)

我正在运行这样的查询(以伪代码)

table1.join(table2, [“key1”, “key2”])
 .groupBy(“value2”)
 .countUnique(“key1”)
Run Code Online (Sandbox Code Playgroud)

常识说,这种连接应该简单地通过没有任何交换的排序合并连接来完成。但是spark进行了交流然后加入。

即使对于这个特定的用例,我也可以按两个键进行存储,由于其他一些用例,我需要按key1进行存储。当我使用这样的单个键进行(更简单的)连接时:

table1.join(table2, [“key1”])
Run Code Online (Sandbox Code Playgroud)

它按预期方式工作(即不进行任何排序的合并合并)。

现在,如果要过滤,我对这些表进行了优化联接,如下所示:

table1.join(table2, [“key1”])
 .filter(table1.col(“key2”) == table2.col(“key2”))
Run Code Online (Sandbox Code Playgroud)

它恢复为交换,然后加入。

当联接密钥是bucketBy密钥的超集时,如何说服火花不要进行交换?

注意:

我知道的一个技巧是,如果我将不等式检查改写为等式检查,则火花不会洗牌。

(x == y)也可以表示为((x> = y)&(x <= y))。如果我在上一个示例中应用了两个这样的过滤器:

.filter(table1.col(“ key2”)> = table2.col(“ key2”))

.filter(table1.col(“ key2”)<= table2.col(“ key2”))

它将继续使用sort-merge join,而不会进行交换,但这不是解决方案,这是一个hack。

join bucket apache-spark hive-metastore

7
推荐指数
1
解决办法
243
查看次数

我如何将字符串散列到特定数量的桶中

我正在尝试提出一种算法,将字符串散列到特定数量的桶中,但还没有想到如何做到这一点?

我有一个这样的字符串列表:

a.jpg
b.htm
c.gif
d.jpg
e.swf

我想运行一个函数来根据字符串获取 1 到 4 之间的数字。

egajpg 将是 3
b.htm 将是 2
c.gif 将是 1
等等

它需要保持一致,因此如果我在 a.jpg 上运行该函数,它总是返回 3。

该算法用于在服务器之间分配资源......

egajpg 将从 server3.mydomain.com 访问b.htm 将从 server2.mydomain.com 等
访问

有谁知道我将如何去做这件事?

任何建议将不胜感激!

干杯

蒂姆

c# hash bucket

6
推荐指数
1
解决办法
4660
查看次数

gcsfuse 在 GKE 和/或 python3 boto 中安装存储桶以进行流写入?

我正在寻找一种方法将一些 .mp4 视频文件(因为它们是由某些 python 应用程序生成的)“写入流”到谷歌云存储桶。python 应用程序已容器化并部署在 GKE 中,目前可以作为 Web 服务正常执行。但问题是,所有视频文件都是本地生成的,并存储在tmp/processedpod 内的路径 ( ) 中。

但是,我希望将视频文件写入 Google 名为 的存储桶中的文件my_bucket

我已阅读有关如何在 Kubernetes pod 中安装存储桶的gcsfuse指南(https://github.com/maciekrb/gcs-fuse-sample ),还阅读了有关boto的信息(https://cloud.google.com/storage/docs ) /boto-plugin#streaming-transfers)用于将流传输到存储桶。

为了安装my_bucket在 中tmp/processed,我已将以下行添加到我的应用程序的部署文件 (YAML) 中:

        lifecycle:
          postStart:
            exec:
              command:
              - gcsfuse
              - -o
              - nonempty
              - my_bucket
              - tmp/processed
          preStop:
            exec:
              command:
              - fusermount
              - -u
              - tmp/processed/
        securityContext:
          capabilities:
            add:
            - SYS_ADMIN
Run Code Online (Sandbox Code Playgroud)

我还没有使用过 boto,想也许只安装就足够了!但是,我的应用程序在尝试生成视频文件时出现输入/输出错误。

现在我的问题是,我是否需要同时使用gcsfuseboto,还是只需将存储桶安装在我的 …

bucket boto kubernetes google-kubernetes-engine gcsfuse

6
推荐指数
1
解决办法
3894
查看次数

Spark中的分区和分桶有什么区别?

我尝试优化两个 spark 数据帧之间的连接查询,我们称它们为 df1、df2(在公共列“SaleId”上连接)。df1 非常小(5M),所以我在火花集群的节点之间广播它。df2 非常大(200M 行),因此我尝试通过“SaleId”对其进行存储分区/重新分区。

在 Spark 中,按列对数据进行分区和按列对数据进行分桶有什么区别?

例如:

划分:

df2 = df2.repartition(10, "SaleId")
Run Code Online (Sandbox Code Playgroud)

桶:

df2.write.format('parquet').bucketBy(10, 'SaleId').mode("overwrite").saveAsTable('bucketed_table'))
Run Code Online (Sandbox Code Playgroud)

在每一项技术之后,我都将 df2 与 df1 结合使用。

我无法弄清楚使用哪种技术是正确的。谢谢

python bucket data-partitioning apache-spark

6
推荐指数
1
解决办法
6352
查看次数

FirebaseError:存储桶名称未指定或无效

我正在按照在线教程使用 Firebase on React 构建社交媒体应用程序。

我发现非常令人困惑的是,当我创建新用户时,我可以访问存储桶,并从我在 Firebase 存储中上传的图片(使用存储桶端点)设置默认注册图像。

但是,当我尝试使用相同的存储桶端点和不同的图像文件发送 POST 请求来更新图像时,出现以下错误:

FirebaseError: Bucket name not specified or invalid. Specify a valid bucket name via the storageBucket option when initializing the app, or specify the bucket name explicitly when calling the getBucket() method.
Run Code Online (Sandbox Code Playgroud)
 at new FirebaseError (/Users/yousef/codeclan_work/run_dat/functions/node_modules/firebase-admin/lib/utils/error.js:42:28)
 at Storage.bucket (/Users/yousef/codeclan_work/run_dat/functions/node_modules/firebase-admin/lib/storage/storage.js:109:15)
 at Busboy.<anonymous> (/Users/yousef/codeclan_work/run_dat/functions/handlers/users.js:111:25)
 at Busboy.emit (events.js:209:13)
 at Busboy.emit (/Users/yousef/codeclan_work/run_dat/functions/node_modules/busboy/lib/main.js:37:33)
 at /Users/yousef/codeclan_work/run_dat/functions/node_modules/busboy/lib/types/multipart.js:52:13
 at processTicksAndRejections (internal/process/task_queues.js:75:11) {
Run Code Online (Sandbox Code Playgroud)
>    errorInfo: {
>      code: 'storage/invalid-argument',
>      message: 'Bucket name not specified or invalid. …
Run Code Online (Sandbox Code Playgroud)

bucket firebase reactjs firebase-storage

6
推荐指数
2
解决办法
6623
查看次数

如何从 GCP Bucket 提供静态文件,并从任何未找到的路径重定向到状态为 200 而不是 404 的 index.html

我正在与 GCP 合作提供单页面应用程序静态文件。

对于所有效果,未找到路径,应重定向到index.html,并且主脚本路由将显示正确的页面。我们的设置是:

GCP 存储桶 -> 负载均衡器 -> DNS

在 GCP Bucket 配置中,我们将该index.html文件设置为“默认文件”,如果设置为“未找到”。它就像一个魅力,所有路由都按计划重定向到index.html。

然而返回的状态是 404 而不是 200。这扰乱了我们的指标和性能指标。

问题是:如何为状​​态为 200 而不是 404 的未找到路径提供文件?

例如/students/1应该提供服务index.html,主脚本应该显示状态为 200 的正确页面。但现在正在提供状态 404 的服务。

bucket google-cloud-platform

6
推荐指数
0
解决办法
623
查看次数

无法使用 gcsfuse 在 GCP 存储桶中写入文件

我使用以下命令在虚拟机上安装了存储桶:

gcsfuse my-bucket /path/to/mount
Run Code Online (Sandbox Code Playgroud)

之后,我可以使用 Pandas 从 Python 中的存储桶中读取文件,但无法写入文件或创建新文件夹。我尝试使用 Python 并使用 sudo 从终端尝试,但出现相同的错误。

我还尝试过使用存储桶中的 key_file:

sudo mount -t gcsfuse -o implicit_dirs,allow_other,uid=1000,gid=1000,key_file=Notebooks/xxxxxxxxxxxxxx10b3464a1aa9.json <BUCKET> <PATH>
Run Code Online (Sandbox Code Playgroud)

当我运行代码时它没有出现错误,但我仍然无法在存储桶中写入。

我也尝试过

gcloud auth login
Run Code Online (Sandbox Code Playgroud)

但仍然有同样的问题。

python fuse bucket google-cloud-platform

6
推荐指数
1
解决办法
1021
查看次数