Sto lavorando a un progetto ospitato su Amazon Web Services. La configurazione del server consiste di due istanze EC2, un Elastic Load Balancer e un extra Elastic Block Store su cui risiede l'applicazione web. Il progetto è supposto per utilizzare S3 per l'archiviazione dei file che gli utenti caricano. Per il bene di questa domanda, io chiamerò il secchio S3 static.example.com
Come posso montare un bucket S3 su un'istanza EC2 e scriverlo con PHP?
Ho provato con s3fs
(https://code.google.com/p/s3fs/wiki/FuseOverAmazon), RioFS
(https://github.com/skoobe/riofs) e s3ql
(https://code.google.com/p/s3ql/). s3fs
monterà il filesystem ma non mi permetterà di scrivere sul bucket (ho fatto questa domanda su SO: come posso montare un volume S3 con le autorizzazioni appropriate usando FUSE). RioFS
monterà il filesystem e mi consentirà di scrivere sul bucket dalla shell, ma i file che vengono salvati con PHP non appaiono nel bucket (ho aperto un problema con il progetto su GitHub). s3ql
monterà il bucket, ma nessuno dei file che sono già nel bucket apparirà nel filesystem.
Questi sono i comandi di montaggio che ho usato:
s3fs static.example.com -ouse_cache=/tmp,allow_other /mnt/static.example.com
riofs -o allow_other http://s3.amazonaws.com static.example.com /mnt/static.example.com
s3ql mount.s3ql s3://static.example.com /mnt/static.example.com
Ho anche provato ad utilizzare questa classe S3: https://github.com/tpyo/amazon-s3-php-class/ e questo FuelPHP pacchetto specifico S3: https://github.com/tomschlick/fuel-s3. Sono stato in grado di ottenere il pacchetto FuelPHP per elencare i bucket e i file disponibili, ma il salvataggio dei file nel bucket non è riuscito (ma non ha funzionato).
Avete mai montato un bucket S3 su un file system Linux locale e utilizzato PHP per scrivere correttamente un file nel bucket? Che tipo di strumenti hai usato? Se hai utilizzato uno degli strumenti sopra menzionati, quale versione hai usato?
EDIT Sono stato informato che il problema ho aperto con RioFS
su GitHub è stato risolto. Sebbene abbia deciso di utilizzare S3 REST API anziché tentare di montare un bucket come volume, sembra che RioFS
possa essere un'opzione valida in questi giorni.
Perché il downvote? Devo essere più/meno specifico? –
Perché non stai usando [[S3 API] (http://aws.amazon.com/documentation/s3/) invece di provare ad usarlo come un filesystem? –
Non è il downvoter, ma mi chiedo se lui/lei stia cercando un pezzo di codice con cui hai problemi. Anche se qui abbiamo una politica contro le domande discorsive, la domanda mi sembra abbastanza specifica, quindi +1. – halfer