2009-06-09 107 views
2

我有直接HTML发布到存储桶A的S3存储桶。如果我保留所有代码完全相同,但替换并签署存储桶B的策略,则Amazon返回InvalidPolicyDocument错误。在接受发布的对象之前是否需要启用或设置某个存储桶?S3发布InvalidPolicyDocument存储桶相关?

在此先感谢! Ben

ps。我更改了策略和上传网址中的存储桶名称。

pps。根据要求,我在提琴手中追查了这两项要求。下面是请求和响应:

良好REQUEST:

REQUEST:

------------ae0KM7cH2cH2cH2Ij5Ef1cH2Ef1ae0 
Content-Disposition: form-data; name="Filename" 

Blue hills.jpg 
------------ae0KM7cH2cH2cH2Ij5Ef1cH2Ef1ae0 
Content-Disposition: form-data; name="key" 

uploads/${filename} 
------------ae0KM7cH2cH2cH2Ij5Ef1cH2Ef1ae0 
Content-Disposition: form-data; name="signature" 

STJNaC3bFVXD9VSUPhId41yw5+w= 
------------ae0KM7cH2cH2cH2Ij5Ef1cH2Ef1ae0 
Content-Disposition: form-data; name="AWSAccessKeyId" 

0WDZ435HNTSCJ306SXR2 
------------ae0KM7cH2cH2cH2Ij5Ef1cH2Ef1ae0 
Content-Disposition: form-data; name="acl" 

private 
------------ae0KM7cH2cH2cH2Ij5Ef1cH2Ef1ae0 
Content-Disposition: form-data; name="success_action_status" 

201 
------------ae0KM7cH2cH2cH2Ij5Ef1cH2Ef1ae0 
Content-Disposition: form-data; name="policy" 

eydjb25kaXRpb25zJzogW3snYnVja2V0JzogJzB3ZHo0MzVobnRzY2ozMDZzeHIyLXRlc3QtYnVja2V0J30sIFsnc3RhcnRzLXdpdGgnLCAnJGtleScsICd1cGxvYWRzLyddLCBbJ3N0YXJ0cy13aXRoJywgJyRGaWxlbmFtZScsICcnXSwgeydhY2wnOiAncHJpdmF0ZSd9LCB7J3N1Y2Nlc3NfYWN0aW9uX3N0YXR1cyc6ICcyMDEnfV0sICdleHBpcmF0aW9uJzogJzIwMDktMDYtMTBUMTg6MTc6NTlaJ30= 
------------ae0KM7cH2cH2cH2Ij5Ef1cH2Ef1ae0 
Content-Disposition: form-data; name="file"; filename="Blue hills.jpg" 
Content-Type: application/octet-stream 

RESPONSE:

<?xml version="1.0" encoding="UTF-8"?> 
<PostResponse><Location>http://0wdz435hntscj306sxr2-test-bucket.s3.amazonaws.com/uploads%2FBlue+hills.jpg</Location><Bucket>0wdz435hntscj306sxr2-test-bucket</Bucket><Key>uploads/Blue hills.jpg</Key><ETag>"6fb2a38dc107eacb41cf1656e899cf70"</ETag></PostResponse> 

THE BAD REQUEST:

REQUEST:

------------Ij5cH2cH2gL6gL6gL6Ij5Ij5GI3cH2 
Content-Disposition: form-data; name="Filename" 

Water lilies.jpg 
------------Ij5cH2cH2gL6gL6gL6Ij5Ij5GI3cH2 
Content-Disposition: form-data; name="policy" 

eydjb25kaXRpb25zJzogW3snYnVja2V0JzogdScwd2R6NDM1aG50c2NqMzA2c3hyMi1tNGxiZXRhJ30sIFsnc3RhcnRzLXdpdGgnLCAnJGtleScsICd1cGxvYWRzLyddLCBbJ3N0YXJ0cy13aXRoJywgJyRGaWxlbmFtZScsICcnXSwgeydhY2wnOiAncHJpdmF0ZSd9LCB7J3N1Y2Nlc3NfYWN0aW9uX3N0YXR1cyc6ICcyMDEnfSwgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ31dLCAnZXhwaXJhdGlvbic6ICcyMDA5LTA2LTEwVDE4OjA5OjE0Wid9 
------------Ij5cH2cH2gL6gL6gL6Ij5Ij5GI3cH2 
Content-Disposition: form-data; name="key" 

uploads/${filename} 
------------Ij5cH2cH2gL6gL6gL6Ij5Ij5GI3cH2 
Content-Disposition: form-data; name="signature" 

u+pOKfpLrFaRhiP3lfTPbCyWl3I= 
------------Ij5cH2cH2gL6gL6gL6Ij5Ij5GI3cH2 
Content-Disposition: form-data; name="AWSAccessKeyId" 

0WDZ435HNTSCJ306SXR2 
------------Ij5cH2cH2gL6gL6gL6Ij5Ij5GI3cH2 
Content-Disposition: form-data; name="acl" 

private 
------------Ij5cH2cH2gL6gL6gL6Ij5Ij5GI3cH2 
Content-Disposition: form-data; name="success_action_status" 

201 
------------Ij5cH2cH2gL6gL6gL6Ij5Ij5GI3cH2 
Content-Disposition: form-data; name="Content-Type" 

application/octet-stream 
------------Ij5cH2cH2gL6gL6gL6Ij5Ij5GI3cH2 
Content-Disposition: form-data; name="file"; filename="Water lilies.jpg" 
Content-Type: application/octet-stream 

回应:

100 
<?xml version="1.0" encoding="UTF-8"?> 
<Error><Code>InvalidPolicyDocument</Code><Message>Invalid Policy: Invalid JSON.</Message><RequestId>2D883FC8947547AC</RequestId><HostId>G1r2SCbd87UmmlOU0hSY3/VTGGXBEmXdLXoxaGt4GJjpELBVHXtjn6PSAPhufLAC</HostId></Error> 
0 
+0

你可以跟踪这两个请求使用招和后的结果? – 2009-06-10 13:19:04

+0

看到我的新回复。 – 2009-06-12 16:18:51

回答

3

请务必同时在操作URL和政策文件中改变桶的名称。

UPDATE

下面是Base64编码解码两项政策的版本:

GOOD

{ 
    'conditions': [ 
    { 
     'bucket': '0wdz435hntscj306sxr2-test-bucket' 
    }, 
    ['starts-with', '$key', 'uploads/'], 
    ['starts-with', '$Filename', ''], 
    { 
     'acl': 'private' 
    }, 
    { 
     'success_action_status': '201' 
    } 
    ], 
    'expiration': '2009-06-10T18:17:59Z' 
} 

BAD

{ 
    'conditions': [ 
    { 
     'bucket': u'0wdz435hntscj306sxr2-m4lbeta' 
    }, 
    ['starts-with', '$key', 'uploads/'], 
    ['starts-with', '$Filename', ''], 
    { 
     'acl': 'private' 
    }, 
    { 
     'success_action_status': '201' 
    }, 
    { 
     'Content-Type': 'application/octet-stream' 
    } 
    ], 
    'expiration': '2009-06-10T18:09:14Z' 
} 

不知怎的,一个额外的“U”被困在桶里线为利空政策