最近搭建Web服务器,在服务器上安装了WordPress,然后给与他IAM Role去访问AWS S3服务,但是每次编辑界面上传图片的时候都会出现问题。
在WordPress上安装WP Offload Media Lite for Amazon S3
这款插件,然后有效化一下
在EC2上进入到相应文件夹,编辑wp-config.php
文件
cd /var/www/html
vim wp-config.php
然后添加下列代码,输入你当时创建IAM Role下载的那个csv
文件里的id和key
define( 'AS3CF_SETTINGS', serialize( array(
'provider' => 'aws',
'access-key-id' => '你的access-key-id',
'secret-access-key' => '你的secret-access-key',
) ) );
接着就可以访问S3服务了,我们关联一下存储桶,我这里叫my-bucket-wpadmin
我们试着在投稿的Hello world页面进行编辑
上传图片,发现以下问题,说你图片未指定alt属性,但是在右边的Alt栏里面怎么输入也没有用,图片还是出现不来,顶多alt属性变成你写的字符,但是我们插入HTML图片就没问题(那当然,因为这个时候引用的是其他主机的图片)
关于alt属性,大家可以查看这篇文章:怎么给图片添加ALT属性?
这个时候点击置换旁边的三个点,然后选择使用HTML进行编辑
这个时候我们看到图片被转换成html语言了,确实如他所说的,alt属性是空的,但是这跟alt属性没有关系,我们复制一下alt属性之前的URL到浏览器上
浏览器显示
This XML file does not appear to have any style information associated with it. The document tree is shown below.
原来是我们存到S3上的图片不让访问,或者说我们没有权限从外网访问
我们点击图片的权限,发现所有人(公有访问权限)是没有勾选的,而且右上角的编辑按钮也是灰色的不能编辑
因为我们现在应用的是强制存储桶拥有者
这样的设置,这种情况下ACL是disable的,我们配置的时候只能更改策略
我们可以去将存储桶的ACL打开,首先点击存储桶的权限,往下拖到对象所有权这里,点击编辑
选择启用ACL,然后点击我了解,就可以打开ACL了
然后再回到图片的权限出查看,发现所有人(公有访问权限)的读取权限已被打开,然后图片也能够上传成功
(当然,如果这个时候所有人的读取权限还没被打开,手动打开一下试试)