在swift里要访问一个object需要先通过认证系统认证,比如通过keystone获得一个token再用这个token才能去访问资源。如果要构建公有云就得允许匿名访问资源。在swift里通过设置container ACLs是可以实现这点的
比如要把tenantID为74d6e267b9c14d93b0c04760944f3b66的工程里的test容器里的资源设置为允许匿名可读,那么先通过原先的方法获取到一个token和publicURL,然后再PUT一个X-Container-Read: .r:*,.rlistings就可以了
curl –X PUT -i \
-H "X-Auth-Token: fc81aaa6-98a1-9ab0-94ba-aba9a89aa9ae" \
-H "X-Container-Read: .r:*,.rlistings" \
https://publicURL/v1/74d6e267b9c14d93b0c04760944f3b66/test
现在就可以直接这样下载test器的东西
curl -X GET -i https://publicURL/v1/74d6e267b9c14d93b0c04760944f3b66/test/somethine
也可以设置可写权限等,同时使用swift-client来设置也是可以的
参考: