バケツにフォルダの内容を一覧表示する方法:今S3/CloudFrontは:私はCloudFrontを介してアクセスされるS3バケット読み取るためのURLに署名する方法書いて
private HTTPResponse signURL(String endpoint) {
String keyPairId = 'keyPairId';
String secret = 'SOME_SECRET';
String method = 'GET';
Datetime dt = Datetime.now();
Long l = dt.getTime();
Long expiryLong = (l/1000) + 3600;
String expiry = String.valueOf(expiryLong);
String policy = policy('http://' + cfhost + '/' + endpoint, expiry);
String policyEnc = EncodingUtil.base64Encode(Blob.valueOf(policy));
String rPolicy = cfReplace(policyEnc);
Blob mac = Crypto.generateMac('HMACSHA1',
Blob.valueOf(rPolicy),
Blob.valueOf(secret));
String signature = cfReplace(EncodingUtil.base64Encode(mac));
HttpRequest req = new HttpRequest();
req.setMethod(method);
req.setEndpoint('http://' + cfhost + '/' + endpoint + '?Policy=' +
policyEnc + '&Signature=' + signature + '&Key-Pair-Id=' +
keyPairId);
Http http = new Http();
HTTPResponse res = http.send(req);
return res;
}
を、私の方法があれば正常に動作しますエンドポイントは''
に設定されます。私がエンドポイントに(00Q17000008LRcAEAW/*
のような)フォルダ名を置くと、私はXMLレスポンスに一連のエラーを出します。
XMLNode[ELEMENT,Error,null,null,null,[XMLNode[ELEMENT,Code,null,null,null,[XMLNode[TEXT,null,null,null,null,null,NoSuchKey,]],null,], XMLNode[ELEMENT,Message,null,null,null,[XMLNode[TEXT,null,null,null,null,null,The specified key does not exist.,]],null,], XMLNode[ELEMENT,Key,null,null,null,[XMLNode[TEXT,null,null,null,null,null,00Q17000008LRcAEAW/*,]],null,], XMLNode[ELEMENT,RequestId,null,null,null,[XMLNode[TEXT,null,null,null,null,null,some_req_id,]],null,], XMLNode[ELEMENT,HostId,null,null,null,[XMLNode[TEXT,null,null,null,null,null,some_host_id,]],null,]],null,]
1000キーの上限には大きすぎるため、バケット全体をリストすることはできません。どのようにフォルダを一覧表示できますか?
単一引用符はJavaの文字列ではありません。 –
これを手書きで書くのではなく、jets3tを使うことを強くお勧めします。 – chrylis
私のプラットフォームでは利用できません。 –