我正在使用PHP库将文件上传到我的存储桶.我已将ACL设置为public-read-write,它工作正常,但该文件仍然是私有的.
我发现,如果我将受赠人更改为Everyone,则会将该文件公开.我想知道的是如何将我桶中所有对象的默认Grantee设置为"Everyone".或者是否有其他解决方案默认公开文件?
我正在使用的代码如下:
public static function putObject($input, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $requestHeaders = array()) {
if ($input === false) return false;
$rest = new S3Request('PUT', $bucket, $uri);
if (is_string($input)) $input = array(
'data' => $input, 'size' => strlen($input),
'md5sum' => base64_encode(md5($input, true))
);
// Data
if (isset($input['fp']))
$rest->fp =& $input['fp'];
elseif (isset($input['file']))
$rest->fp = @fopen($input['file'], 'rb');
elseif (isset($input['data']))
$rest->data = $input['data'];
// …Run Code Online (Sandbox Code Playgroud) 如何将工件作为aws code build公共部分上传到s3 默认情况下?我正在尝试构建自动化.目前建设成功; 但是,创建的工件不是公共的,因此我无法共享链接(作为邮件的一部分).默认情况下,服务器端加密设置为Using AWS KMS master key: aws/s3 (default).当尝试encryption key从advanced settingsaws代码构建配置的部分删除时,它给出了一个错误.我打算运行一个aws lambda函数,该函数将在构建结束时发送带有工件链接的邮件,作为aws代码管道的一部分.
编辑: 我尝试添加以下作为权限,但它没有帮助:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/*"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
如这里提到的
从S3开始,如果我手动选择none加密,链接就可以下载了.但是,我需要一种编程方式来实现这一点,因为我正在尝试将整个过程自动化,这是构建自动化的一部分.到目前为止,我也无法实现这一目标boto3.
提前致谢!