lucky(~/src/launchpad.net/juju-core) % juju bootstrap -e ap-southeast-1 --debug 2>&1 | tail -n10
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><BucketName>juju-7</BucketName><RequestId>774E15C7B41653FA</RequestId><HostId>QvSdYFV1x1mGmfL9N9/5KIbTOhghGIDVEvADL7xBAOm0Wgd6n6jcGfo33QkVBJEc</HostId></Error>
2012/11/26 12:02:42 err: s3.Error{StatusCode:404, Code:"NoSuchBucket", Message:"The specified bucket does not exist", BucketName:"juju-7", RequestId:"774E15C7B41653FA", HostId:"QvSdYFV1x1mGmfL9N9/5KIbTOhghGIDVEvADL7xBAOm0Wgd6n6jcGfo33QkVBJEc"}
2012/11/26 12:02:42 Signature payload: "GET\n\n\nMon, 26 Nov 2012 01:02:42 UTC\n/juju-dist/"
2012/11/26 12:02:42 Signature: "GstQW6p916YvleHodCYCNLPuglE="
2012/11/26 12:02:42 Running S3 request: &s3.request{method:"GET", bucket:"juju-dist", path:"/juju-dist/", params:url.Values{"delimiter":[]string{""}, "prefix":[]string{"tools/juju-1."}, "marker":[]string{""}}, headers:http.Header{"Authorization":[]string{"AWS AKIAJ4SOKUWG25EDMAOA:GstQW6p916YvleHodCYCNLPuglE="}, "Host":[]string{"s3-ap-southeast-1.amazonaws.com"}, "Date":[]string{"Mon, 26 Nov 2012 01:02:42 UTC"}}, baseurl:"https://s3-ap-southeast-1.amazonaws.com", payload:io.Reader(nil)}
fail
2012/11/26 12:02:44 JUJU juju bootstrap command failed: cannot find tools: Get : 301 response missing Location header
error: cannot find tools: Get : 301 response missing Location header
Oh, bloody, bloody, bloody hell.
Digging in the guts of the http client package, this is correct, we're getting a 301 without a Location: header
&{301 Moved Permanently 301 HTTP/1.1 1 1 map[X-Amz- Request- Id:[FC63A65759D 5A387] Date:[Mon, 26 Nov 2012 01:11:22 GMT] Content- Type:[applicati on/xml] X-Amz-Id- 2:[PJh7238aOpII 3UcHWPDwXiKCVN3 zEkOF+iRJG+ xyQ7Gd7mI6Di4q3 xFeIN8QhTB7] Server:[AmazonS3]] 0xc20015ff90 -1 [chunked] true map[] 0xc2003340d0}
Off to the AWS support forums for me.