ich eine Methode geschrieben haben, die URLs unterzeichnet einen S3-Bucket zu lesen, die durch Cloudfront zugegriffen wird:S3/Cloudfront: wie den Inhalt eines Ordners in einen Eimer zur Liste
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;
}
Nun arbeitet meine Methode in Ordnung, wenn Der Endpunkt ist auf ''
festgelegt. Wenn ich den Ordnernamen in den Endpunkt setze (wie 00Q17000008LRcAEAW/*
), erhalte ich eine Reihe von Fehlern in der XML-Antwort.
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,]
Ich kann nicht den ganzen Eimer auflisten, weil es zu groß für die 1000-Tasten-Grenze ist. Wie kann ich den Ordner auflisten?
Einfache Anführungszeichen sind nicht für Zeichenfolgen in Java. –
Ich würde dringend Jets3t anstelle der Handschrift all dies empfehlen. – chrylis
Ja, es ist nicht auf meiner Plattform verfügbar. –