因此,我试图最终了解基于云的企业应用程序如何工作,以及他们的架构通常是什么样子.假设我使用像亚马逊这样的云提供商.我假设(请纠正我,如果我错了),我将支付1+个虚拟机,根据我的应用程序需要容纳一堆软件.
我对jclouds或Terracotta这样的框架如何融入图片感到困惑.jclouds将自己宣传为" 一个可以帮助您开始使用云的开源库 ",并列出了许多巨大的功能,如果没有有意义的示例,对我来说并不重要.Terracotta自称是一个高规模的集群框架.为什么我需要使用像jclouds这样的东西?我将使用哪些具体的具体方案?
再说一遍,如果我使用亚马逊作为我的云提供商,他们不会已经高度扩展吗?为什么我需要云中的兵马俑?
我们目前正在 Amazon EC2 上使用 Postgres 9,并且对其性能非常满意。现在,我们正在考虑向 Postgres 添加约 2TB 的数据,这超出了我们的 EC2 小型实例可以容纳的数据。
我找到了S3QL,并考虑将其与将 Postgres 数据目录移动到 S3 存储结合使用。有人有这样做的经验吗?我主要关心性能(频繁读取,不太频繁写入)。欢迎任何建议,谢谢。
我有一个我需要在EC2实例(Ubuntu 12.04.2)上安装的Amazon S3存储桶(我们称之为static.example.com).我已经安装了s3fs.我能够安装音量,但我无法写入音量.我试过了:
sudo s3fs static.example.com -o use_cache=/tmp,allow_other,uid=33,gid=33 /mnt/static.example.com
Run Code Online (Sandbox Code Playgroud)
然后我就可以cd /mnt和ls -la看:
drwxr-xr-x 5 root root 4096 Mar 28 18:03 .
drwxr-xr-x 25 root root 4096 Feb 19 19:22 ..
lrwxrwxrwx 1 root root 7 Feb 21 19:19 httpd -> /httpd/
drwx------ 2 root root 16384 Oct 9 2012 lost+found
drwxr-xr-x 1 www-data www-data 0 Jan 1 1970 static.example.com
Run Code Online (Sandbox Code Playgroud)
这一切看起来都不错,但是当我cd static.example.com和mkdir test我得到:
mkdir: cannot create directory `test': Permission denied
Run Code Online (Sandbox Code Playgroud)
我可以实际创建目录或触摸文件的唯一方法是强制它sudo.但是,这不是一个可行的选择,因为我想从Apache将文件写入存储桶.我的Apache服务器以用户身份运行:group …
我正在使用EC2实例,我希望将我的PHP网站与我的Amazon S3存储桶连接起来,我已经在这里看到了PHP的API:http://aws.amazon.com/sdkforphp/,但目前尚不清楚.
这是我需要在控制器中编辑的代码行:
thisFu['original_img']='/uploads/fufu/'.$_POST['cat'].'/original_'.uniqid('fu_').'.jpg';
Run Code Online (Sandbox Code Playgroud)
我需要连接到Amazon S3并能够像这样更改代码:
$thisFu['original_img']='my_s3_bucket/uploads/fufu/'.$_POST['cat'].'/original_'.uniqid('fu_').'.jpg';
Run Code Online (Sandbox Code Playgroud)
我已经为此目的配置了一个IAM用户,但我不知道完成这项工作所需的所有步骤.
我如何连接Amazon S3并与之交互以上传和检索公共图像?
UPDATE
我决定按照建议尝试使用s3fs,所以我按照这里描述安装它(我的操作系统是Ubuntu 14.04)
我从控制台运行:
sudo apt-get install build-essential git libfuse-dev libcurl4-openssl-dev libxml2-dev mime-support automake libtool
sudo apt-get install pkg-config libssl-dev
git clone https://github.com/s3fs-fuse/s3fs-fuse
cd s3fs-fuse/
./autogen.sh
./configure --prefix=/usr --with-openssl
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
一切都安装得正确,但下一步是什么?我应该在哪里声明凭据,如何在我的项目中使用此集成?
第二次更新
我.passwd-s3fs使用IAM凭据创建了一个名为单一代码行的文件accessKeyId:secretAccessKey.
我将它放入我的home/ubuntu目录并给它600权限chmod 600 ~/.passwd-s3fs
接下来从控制台我运行 /usr/bin/s3fs My_S3bucket /uploads/fufu
现在里面/uploads/fufu有我所有的桶文件夹.但是当我尝试这个命令时:
s3fs -o nonempty allow_other My_S3bucket /uploads/fufu
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
s3fs: unable to access …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 s3fs 库从 s3 存储桶下载 csv 文件。我注意到使用 Pandas 编写新的 csv 以某种方式改变了数据。所以我想直接下载原始状态的文件。
该文档具有下载功能,但我不明白如何使用它:
download(self, rpath, lpath[, recursive]): Alias of FilesystemSpec.get.
这是我尝试过的:
import pandas as pd
import datetime
import os
import s3fs
import numpy as np
#Creds for s3
fs = s3fs.S3FileSystem(key=mykey, secret=mysecretkey)
bucket = "s3://mys3bucket/mys3bucket"
files = fs.ls(bucket)[-3:]
#download files:
for file in files:
with fs.open(file) as f:
fs.download(f,"test.csv")
AttributeError: 'S3File' object has no attribute 'rstrip'
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的Debian计算机和一台OS X笔记本电脑上进行以下工作.
我想要的是某种使用Amazon S3作为后端的版本控制文件系统.
我想的是使用s3fs(使用FUSE)来安装存储桶,然后创建一个使用GIT的文件系统,每次我写文件时都会进行新的提交(我想要一个完整的版本历史记录,最长可达x天).然后,安装的文件夹应显示最新版本的文件.其中一个我不知道如何解决的问题(由于缺乏经验,我认为)是我想将文件与本地文件夹同步.当然,我可以下载所有文件,但这不是带宽友好的.
另一个问题是当前版本的s3fs似乎不适用于MacFUSE.
此外,可能不会发生的事情,但如果两台计算机同时写入文件,我想防止文件损坏.如果我理解正确,git会实现某种文件锁定本身,而不依赖于操作系统的文件锁定.
什么可以成为使这项工作的大纲?我想用这些方式存储的文件只是.tex文件和矢量图像.
我知道存在解决方案(如dropbox)但我不喜欢它是封闭源代码.
下面的代码引发导入异常
import s3fs
fs = s3fs.S3FileSystem(anon=False)
Run Code Online (Sandbox Code Playgroud)
例外
Traceback (most recent call last):
File "issue.py", line 1, in <module>
import s3fs
File "/home/ubuntu/.local/lib/python3.6/site-packages/s3fs/__init__.py", line 1, in <module>
from .core import S3FileSystem, S3File
File "/home/ubuntu/.local/lib/python3.6/site-packages/s3fs/core.py", line 14, in <module>
import aiobotocore
File "/home/ubuntu/.local/lib/python3.6/site-packages/aiobotocore/__init__.py", line 1, in <module>
from .session import get_session, AioSession
File "/home/ubuntu/.local/lib/python3.6/site-packages/aiobotocore/session.py", line 6, in <module>
from .client import AioClientCreator, AioBaseClient
File "/home/ubuntu/.local/lib/python3.6/site-packages/aiobotocore/client.py", line 12, in <module>
from .utils import AioS3RegionRedirector
File "/home/ubuntu/.local/lib/python3.6/site-packages/aiobotocore/utils.py", line 10, in <module>
from botocore.exceptions import …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 s3fs-fuse 将 S3 存储桶安装到 Kubernetes pod。我的 S3 存储桶受 IAM 角色保护,但我没有访问密钥和秘密密钥来访问 S3 存储桶。我知道如何使用访问和密钥从 Kubernetes pod 访问 S3bucket,但是我们如何使用 IAM 角色访问 S3 存储桶?
有人对此有建议吗?
我有一个Spring MVC 4.0.1 Web应用程序,需要将文件上传到Rackspace Cloud Files.我正在使用Apache jClouds来执行此操作.尝试使用以下代码创建BlobStore时:
BlobStoreContext context = ContextBuilder.newBuilder("cloudfiles-us").credentials("username","password").buildView(BlobStoreContext.class);
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
com.google.inject.CreationException: Guice creation errors:
1) No implementation for com.google.common.base.Supplier<java.lang.String> annotated with @org.jclouds.openstack.swift.TemporaryUrlKey() was bound.
while locating com.google.common.base.Supplier<java.lang.String> annotated with @org.jclouds.openstack.swift.TemporaryUrlKey()
for parameter 4 at org.jclouds.openstack.swift.blobstore.SwiftBlobSigner.<init>(SwiftBlobSigner.java:88)
at org.jclouds.cloudfiles.CloudFilesApiMetadata$CloudFilesTemporaryUrlExtensionModule.bindRequestSigner(CloudFilesApiMetadata.java:101)
2) No implementation for org.jclouds.openstack.swift.CommonSwiftClient was bound.
while locating org.jclouds.openstack.swift.CommonSwiftClient
for parameter 4 at org.jclouds.cloudfiles.blobstore.CloudFilesBlobStore.<init>(CloudFilesBlobStore.java:63)
at org.jclouds.cloudfiles.blobstore.config.CloudFilesBlobStoreContextModule.configure(CloudFilesBlobStoreContextModule.java:64)
3) No implementation for org.jclouds.openstack.swift.CommonSwiftClient was bound.
while locating org.jclouds.openstack.swift.CommonSwiftClient
for parameter 0 at org.jclouds.openstack.swift.blobstore.strategy.internal.SequentialMultipartUploadStrategy.<init>(SequentialMultipartUploadStrategy.java:51)
while locating com.google.inject.Provider<org.jclouds.openstack.swift.blobstore.strategy.internal.MultipartUploadStrategy>
for parameter 14 at org.jclouds.cloudfiles.blobstore.CloudFilesBlobStore.<init>(CloudFilesBlobStore.java:63)
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用存储在谷歌云存储中的数据来教授我的网络。我正在使用 google colab pro 资源进行教学,当我这样做时,我每天收到大约 50 美元的“北美和欧盟之间的出口”账单。我位于俄罗斯,数据存储在德国,所以我完全不知道为什么这个数据出口到 NA。我怎样才能阻止这种行为,为什么会发生,因为我不想为我并不真正需要的东西买单。
storage 和 colab 之间的链接如下所示:
#downloading gcsfuse
!echo "deb http://packages.cloud.google.com/apt gcsfuse-bionic main" > /etc/apt/sources.list.d/gcsfuse.list
!curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
!apt -qq update
!apt -qq install gcsfuse
#Mounting Raw folder
!mkdir raw
!gcsfuse -o nonempty raw-images-dng-storage /content/raw
#Mounting tiff folder
!mkdir tiff
!gcsfuse -o nonempty expert-c-images-tiff /content/tiff
Run Code Online (Sandbox Code Playgroud) google-cloud-storage google-cloud-platform gcsfuse google-colaboratory
amazon-s3 ×6
s3fs ×4
java ×2
jclouds ×2
python-s3fs ×2
amazon-iam ×1
apache ×1
boto3 ×1
cloud ×1
cloudfiles ×1
fuse ×1
gcsfuse ×1
git ×1
guava ×1
guice ×1
kubernetes ×1
postgresql ×1
python ×1
python-3.x ×1
s3ql ×1
terracotta ×1
ubuntu-12.04 ×1
ubuntu-18.04 ×1