PHP中的亚马逊AWS putBucketLogging参数

时间:2013-04-23 21:59:51

标签: php amazon-s3

我正在编写连接到亚马逊S3存储的脚本。该脚本应该创建2个桶:

  1. Bucket代表数据

  2. Bucket for for logs

  3. 我成功创建了两个存储桶,但无法设置日志记录。下面显示了我用于启用存储桶记录的代码

     $result = $client->putBucketLogging(array(
            'Bucket' => $bucket,
            'LoggingEnabled' => array(
                'TargetBucket' => $bucket . '-LOG',
                'TargetGrants'=>array(
                  'Grantee'=>array(
                      'DisplayName'=>'user.name',
                      'Type'=>'CanonicalUser'
                  ),  
                ),
                 'TargetPrefix' => 'LOG-',
            ),
        ));
    

    在amazon AWS API for PHP版本2中写道,Bucket,LoggingEnabled和Type是必需的。但是文档没有说明如何准确地实现那些参数。

    你能帮我解决 putBucketLogging 方法的配置数组结构吗?

2 个答案:

答案 0 :(得分:2)

您还可以使用服务的API文档作为参考,有时会包含有关如何专门构造请求的某些数据类型的更多详细信息。 S3 API docs for PUT Bucket Logging有关于如何指定受让人的更多详细信息。

此外,您不应在存储桶名称中使用大写字母(请参阅Rules for Bucket Naming)。

答案 1 :(得分:0)

在手册中搜索方法 putBucketLogging 的php数组是

    $result = $client->putBucketLogging(array(
        'Bucket' => $bucket,
        'LoggingEnabled' => array(
            'TargetBucket' => $bucket . '-log',
            'TargetGrants' => array(
                'Grant' => array(
                    'Grantee' => array(
                        'Type' => 'AmazonCustomerByEmail',
                        'EmailAddress' => 'email@email.com',
                    ),
                    'Permission' => 'FULL_CONTROL',
                ),
            ),
            'TargetPrefix' => 'log-',
        ),
    ));

然而启用日志记录失败,但异常告诉我必须在日志存储桶上设置权限...