相关疑难解决方法(0)

如何将AWS S3中的所有对象默认公开?

我正在使用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)

amazon-s3 amazon-web-services

137
推荐指数
4
解决办法
8万
查看次数

从AWS代码构建中创建公共s3工件

如何将工件作为aws code build公共部分上传到s3 默认情况下?我正在尝试构建自动化.目前建设成功; 但是,创建的工件不是公共的,因此我无法共享链接(作为邮件的一部分).默认情况下,服务器端加密设置为Using AWS KMS master key: aws/s3 (default).当尝试encryption keyadvanced 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.

提前致谢!

amazon-s3 amazon-web-services aws-codebuild

5
推荐指数
1
解决办法
896
查看次数