Bonjour,
[Platform]
Status=OK
Version=4.0.P23
BuiltOn=2019-12-19 15:12 (revision 0e21e346c607c09a207f9a4d2adfae7b3802becc)
Encoding=UTF-8
EndpointIP=172.17.0.4
EndpointURL=http://3b7b7a6dd67d:8080
TimeZone=Europe/Paris
SystemDate=2020-01-28 15:12:40
Voici la méthode telle qu’elle est décrite dans la doc
public Boolean uploadFileCloud(String credentials, String file, String content) {
CloudStorageTool cst = null;
Boolean success = true;
try {
//if (null == this.getGrant()) AppLog.info(getClass(), "uploadFileCloud", "getGrant() == null" , getGrant());
//if (null == getGrant().getJSONObjectParameter(credentials)) AppLog.info(getClass(), "uploadFileCloud", "getGrant().getJSONObjectParameter(credentials) == null" , getGrant());
cst = new CloudStorageTool(getGrant().getJSONObjectParameter(credentials));
String encoding = Globals.getPlatformEncoding();
cst.put(new JSONObject()
.put("name", file)
.put("mime", HTTPTool.MIME_TYPE_HTML)
.put("encoding", encoding)
.put("content", content)
);
JSONObject fileJson = cst.get(file, true);
AppLog.info(getClass(), "display", new String((byte[])fileJson.get("content"), encoding), getGrant());
} catch (Exception e) {
AppLog.error(getClass(), "uploadFileCloud", null, e, getGrant());
success = false;
} finally {
if (cst != null) cst.close();
}
return success;
}
à l’appel de cette méthode :
Boolean uploadSuccess = uploadFileCloud(s3Credentials, file, content);
file = nom du fichier en format String
content = contenu du fichier sous format String
s3Credentials = “SITES_S3_STORAGE” system parameter contenant:
{
"provider": "aws-s3",
"accessKeyId": "############",
"secretAccessKey": "############",
"bucket": "#######"
}
Un message d’erreur se génère lors de l’appel de cette méthode :
org.jclouds.aws.AWSResponseException: request POST https://dev-rfs-int.s3.amazonaws.com/renault/all/rfs/Downloads/RaftADFile28012020.txt?uploads HTTP/1.1 failed with code 400, error: AWSError{requestId='E659C88CF2150D7B', requestToken='ZD5NPtoJC8vf0fR2mNTyHRbHt1Ln24cOrNL1eF89hl5oYhcIY1+vXws/YlK/UWpEb3kzmOWRypE=', code='AuthorizationHeaderMalformed', message='The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-west-1'', context='{Region=eu-west-1, HostId=ZD5NPtoJC8vf0fR2mNTyHRbHt1Ln24cOrNL1eF89hl5oYhcIY1+vXws/YlK/UWpEb3kzmOWRypE=}'}
at org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:76)
at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:138)
at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:107)
at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:91)
at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:74)
at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:45)
at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:156)
at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:123)
at com.sun.proxy.$Proxy59.initiateMultipartUpload(Unknown Source)
at org.jclouds.s3.blobstore.S3BlobStore.initiateMultipartUpload(S3BlobStore.java:370)
at org.jclouds.blobstore.internal.BaseBlobStore.putMultipartBlob(BaseBlobStore.java:356)
at org.jclouds.blobstore.internal.BaseBlobStore.putMultipartBlob(BaseBlobStore.java:349)
at org.jclouds.aws.s3.blobstore.AWSS3BlobStore.putBlob(AWSS3BlobStore.java:79)
at com.simplicite.util.tools.CloudStorageTool.put(CloudStorageTool.java:193)
at com.simplicite.objects.RenaultSites.SitesGenerateRaftAD.uploadFileCloud(SitesGenerateRaftAD.java:366)
at com.simplicite.objects.RenaultSites.SitesGenerateRaftAD.generateRaftAD(SitesGenerateRaftAD.java:301)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at com.simplicite.util.engine.ObjectManager.invokeActionSync(ObjectManager.java:3487)
at com.simplicite.util.ObjectDirect.invokeAction(ObjectDirect.java:672)
at com.simplicite.util.ObjectDB.invokeAction(ObjectDB.java:1697)
at com.simplicite.util.CronJob.run(CronJob.java:356)
Faut il définir la région ? Si oui, dans le code ou dans un paramètre système?..
Merci de votre réponse