小编And*_*aul的帖子

s3fs将Amazon S3存储桶挂载为本地目录的稳定性如何

s3fs在Amazon中挂载Amazon S3存储桶作为本地目录的稳定性如何?对于高需求的生产环境,它是推荐/稳定的吗?

有没有更好/类似的解决方案?

更新:使用EBS并通过NFS将其挂载到所有其他AMI会更好吗?

linux amazon-s3 s3fs

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

MalformedXML:您提供的 XML 格式不正确或未根据我们发布的架构进行验证

我在使用 AWS S3 时遇到这个奇怪的问题。我正在开发可以将图像存储到 AWS 存储桶的应用程序。使用 Multer 作为中间件和 S3FS 库连接并上传到 AWS。

但是当我尝试上传内容时,会弹出以下错误。

“MalformedXML:您提供的 XML 格式不正确或未根据我们的发布模式进行验证”

索引.js

var express = require('express');
var router = express();
var multer = require('multer');
var fs = require('fs');
var S3FS = require('s3fs');
var upload = multer({
  dest: 'uploads'
})
var S3fsImpl = new S3FS('bucket-name', {
  region: 'us-east-1',
  accessKeyId: 'XXXXXXXXXXXX',
  secretAccessKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
});

/* GET home page. */
router.get('/', function (req, res, next) {
  res.render('profile', {
    title: 'Express'
  });
});

router.post('/testupload', upload.single('file'), function (req, res) {
  var …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-s3 amazon-web-services node.js

21
推荐指数
4
解决办法
5万
查看次数

带有s3fs和fuse的Amazon S3,传输端点未连接

Redhat with Fuse 2.4.8
S3FS 1.59版

从AWS在线管理控制台,我可以浏览S3存储桶上的文件.
当我登录(ssh)到我的/ s3文件夹时,我无法访问它.
还有命令:"/ usr/bin/s3fs -o allow_other bucket/s3"
return:s3fs:无法访问MOUNTPOINT/s3:传输端点未连接

可能是什么原因?我该如何解决?该文件夹是否需要卸载然后重新安装?

谢谢 !

mount amazon-s3 amazon-web-services s3fs

20
推荐指数
2
解决办法
4万
查看次数

如何在python中使用pyarrow从S3读取分区镶木地板文件

我正在寻找使用python从s3读取多个分区目录数据的方法.

data_folder/serial_number = 1/cur_date = 20-12-2012/abcdsd0324324.snappy.parquet data_folder/serial_number = 2/cur_date = 27-12-2012/asdsdfsd0324324.snappy.parquet

pyarrow的ParquetDataset模块具有从分区读取的能力.所以我尝试了以下代码:

>>> import pandas as pd
>>> import pyarrow.parquet as pq
>>> import s3fs
>>> a = "s3://my_bucker/path/to/data_folder/"
>>> dataset = pq.ParquetDataset(a)
Run Code Online (Sandbox Code Playgroud)

它引发了以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/my_username/anaconda3/lib/python3.6/site-packages/pyarrow/parquet.py", line 502, in __init__
    self.metadata_path) = _make_manifest(path_or_paths, self.fs)
  File "/home/my_username/anaconda3/lib/python3.6/site-packages/pyarrow/parquet.py", line 601, in _make_manifest
    .format(path))
OSError: Passed non-file path: s3://my_bucker/path/to/data_folder/
Run Code Online (Sandbox Code Playgroud)

根据pyarrow的文档,我尝试使用s3fs作为文件系统,即:

>>> dataset = pq.ParquetDataset(a,filesystem=s3fs)
Run Code Online (Sandbox Code Playgroud)

这会引发以下错误:

Traceback (most recent call last):
  File "<stdin>", …
Run Code Online (Sandbox Code Playgroud)

python parquet arrow-python fastparquet

18
推荐指数
4
解决办法
2万
查看次数

AWS:将S3 Bucket安装到EC2实例.(后来的FTP隧道)

我想做什么?

步骤1:将S3 Bucket安装到EC2实例.

步骤2:在EC2实例上安装FTP服务器,并将ftp请求隧道传送到存储桶中的文件.

到目前为止我做了什么?

  • 创建桶
  • 使用开放输入端口创建安全组(FTP:20,21 - SSH:22 - 更多)
  • 连接到ec2

以下代码:

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/s3fs/s3fs-1.74.tar.gz
tar -xvzf s3fs-1.74.tar.gz
yum update all
yum install gcc libstdc++-devel gcc-c++ fuse fuse-devel curl-devel libxml2-devel openssl-devel mailcap
cd s3fs-1.74
./configure  --prefix=/usr
make
make install
vi /etc/passwd-s3fs # set access:secret keys
chmod 640 /etc/passwd-s3fs
mkdir /s3bucket
cd /s3bucket
Run Code Online (Sandbox Code Playgroud)

和cd anwers: Transport endpoint is not connected

不知道怎么了.也许我使用的是错误的用户?但是目前除了root之外我只有一个用户(出于测试原因).

下一步将是ftp隧道,但是现在我想让它工作.

ftp amazon-s3 amazon-ec2 amazon-web-services s3fs

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

s3fs 自定义端点 url

如何将自定义端点 url 传递给s3fs.S3FileSystem

我试过了:

kwargs = {'endpoint_url':"https://s3.wasabisys.com",
          'region_name':'us-east-1'}
self.client = s3fs.S3FileSystem(key=AWS_ACCESS_KEY_ID, 
                                secret=AWS_SECRET_ACCESS_KEY,
                                use_ssl=True,
                                **kwargs)
Run Code Online (Sandbox Code Playgroud)

但是我收到错误:

  File "s3fs/core.py", line 215, in connect
    **self.kwargs)
TypeError: __init__() got an unexpected keyword argument 'endpoint_url'
Run Code Online (Sandbox Code Playgroud)

我还尝试过将 kwargs 作为参数传递config_kwargss3_additional_kwargs出现类似的错误。

我可以验证boto3是否正在使用以下内容:

client = boto3.client("s3",
        aws_access_key_id=AWS_ACCESS_KEY_ID,
        aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
        endpoint_url="https://s3.wasabisys.com",
        use_ssl=True,
        region_name="us-east-1", 
        api_version=None,verify=None, config=None)
Run Code Online (Sandbox Code Playgroud)

python boto3

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

s3fs 卸载:目录不为空

我正在使用s3fsosxfuse在我的 Mac 上挂载一个 S3 目录:

s3fs my-bucket-name $PWD/s3
Run Code Online (Sandbox Code Playgroud)

当需要卸载它时,我会这样做:

% s3fs umount $PWD/s3
s3fs: MOUNTPOINT directory /Users/kwilliams/blah/s3 is not empty.
if you are sure this is safe, can use the 'nonempty' mount option.
Run Code Online (Sandbox Code Playgroud)

知道这是安全的-我并非故意在创建任何新文件s3的目录,如果创建了任何新的,我需要知道这件事,所以我可以清理它们或弄清楚发生了什么事。

我也不希望它在尝试卸载时对底层 S3 存储桶执行任何操作(创建、删除)。我不确定该nonempty选项会做什么。

当我这样做时ls,该目录肯定显示为非空,因为它向我显示了存储桶的内容。

最后 - 消息说我可以use the 'nonempty' mount option- 是说我应该在挂载时使用该选项,还是在卸载时可以使用它? s3fs --help并不表示s3fs umount可以采取任何选择。

amazon-s3 umount s3fs

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

s3fs 突然停止在 Google Colab 中工作,出现错误“AttributeError: module 'aiobotocore' has no attribute 'AioSession'”

昨天,Google Colab 中的以下单元格序列将起作用。

在此处输入图片说明

(我正在使用colab-env从 Google Drive 导入环境变量。)

今天早上,当我运行相同的代码时,出现以下错误。

在此处输入图片说明

这似乎是 s3fs 和 aiobotocore 的新问题。我对 Google Colab 和库版本依赖性问题有一些经验,我以前通过按特定顺序升级库来解决这些问题:

!pip install --upgrade library_name
Run Code Online (Sandbox Code Playgroud)

但是今天早上我有点被这个问题困扰。它影响了我所有的 Google Colab 笔记本,所以我认为它可能会影响使用存储在 Amazon AWS S3 中的数据和 Google Colab 的其他人。

安装的 s3fs 版本是 2021.07.0,似乎是最新的。

在此处输入图片说明

python botocore google-colaboratory python-s3fs

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

使用诗歌解决 boto3 和 s3fs 上的依赖关系失败

我可以使用以下命令安装 boto3、s3fs 和 pandas:

pip install boto3 pandas s3fs
Run Code Online (Sandbox Code Playgroud)

但诗歌却失败了:

poetry add boto3 pandas s3fs
Run Code Online (Sandbox Code Playgroud)

这是错误:

Because no versions of s3fs match >2023.3.0,<2024.0.0
 and s3fs (2023.3.0) depends on aiobotocore (>=2.4.2,<2.5.0), s3fs (>=2023.3.0,<2024.0.0) requires aiobotocore (>=2.4.2,<2.5.0).
And because no versions of aiobotocore match >2.4.2,<2.5.0
 and aiobotocore (2.4.2) depends on botocore (>=1.27.59,<1.27.60), s3fs (>=2023.3.0,<2024.0.0) requires botocore (>=1.27.59,<1.27.60).
And because boto3 (1.26.91) depends on botocore (>=1.29.91,<1.30.0)
 and no versions of boto3 match >1.26.91,<2.0.0, s3fs (>=2023.3.0,<2024.0.0) is incompatible with boto3 (>=1.26.91,<2.0.0).
So, because engexploit-k8s-pod-operator-images …
Run Code Online (Sandbox Code Playgroud)

boto3 python-poetry python-s3fs

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

用于集成测试的 AWS S3 Java Embedded Mock

在互联网上搜索嵌入式 Java AWS S3 模拟的良好解决方案后,S3NinjaS3Proxy似乎是最受欢迎的解决方案。

但是,似乎没有一种简单的方法可以以编程方式启动它们。放弃 S3Ninja 后,我尝试使用 S3Proxy 来完成,但效果不佳。

Maven 依赖项

<dependency>
    <groupId>org.gaul</groupId>
    <artifactId>s3proxy</artifactId>
    <version>${s3proxy.version}</version>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

代码

String endpoint = "http://127.0.0.1:8085";
URI uri = URI.create(endpoint);
Properties properties = new Properties();
properties.setProperty("s3proxy.authorization", "none");
properties.setProperty("s3proxy.endpoint", endpoint);
properties.setProperty("jclouds.provider", "filesystem");
properties.setProperty("jclouds.filesystem.basedir", "/tmp/s3proxy");

ContextBuilder builder = ContextBuilder
        .newBuilder("filesystem")
        .credentials("x", "x")
        .modules(ImmutableList.<Module>of(new SLF4JLoggingModule()))
        .overrides(properties);
BlobStoreContext context = builder.build(BlobStoreContext.class);
BlobStore blobStore = context.getBlobStore();

S3Proxy s3Proxy = S3Proxy.builder().awsAuthentication("x", "x").endpoint(uri).keyStore("", "").blobStore(blobStore).build();
s3Proxy.start();

BasicAWSCredentials awsCredentials = new BasicAWSCredentials("x", "x");

AmazonS3Client client = new AmazonS3Client(awsCredentials, …
Run Code Online (Sandbox Code Playgroud)

java integration-testing amazon-s3 amazon-web-services s3proxy

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