Estou executando um aplicativo no Autodesk Platform Services (antigo Forge). Para alguns arquivos, demora mais de 60 minutos para obter os resultados, então a URL de upload expirou e o upload foi realizado, resultando em um resultado de falha no upload. Alterei o minutesExpiration em S3UploadURL para 60, mas preciso de mais tempo. Preciso alimentar a URL de saída para o workItem, então acho que não conseguirei obtê-la mais tarde para evitar que ele expire.
Veja abaixo o trecho de código onde obtenho a URL temporária com a opção expirationMinutes definida como 60, crio o workItem e insiro a outputURL. Aguardo alguém que possa me ajudar a estender esse limite de 60 minutos ou que conheça uma solução alternativa.
//POST Get temporary Upload URL
var objectsApiInstance3 = new ObjectsApi();
Dictionary<string, object> opts = new Dictionary<string, object>();
opts.Add("minutesExpiration", 60);
var uploadCsvResponse = objectsApiInstance3.getS3UploadURLAsync(urnOutputBucket, urnOutputObjectKey, opts);
dynamic uploadCsv = JsonConvert.DeserializeObject<Dictionary<string, object>>(uploadCsvResponse.Result.ToString());
string uploadUrl = "";
string outputUploadKey = "";
foreach (var e in uploadCsv)
{
if (e.Key == "urls")
{
uploadUrl = e.Value[0];
}
if (e.Key == "uploadKey")
{
outputUploadKey = e.Value;
}
}
//POST Create workItem
var service = new ForgeService(new HttpClient(new ForgeHandler(Microsoft.Extensions.Options.Options.Create(new ForgeConfiguration()
{ ClientId = clientID, ClientSecret = clientSecret }))
{ InnerHandler = new HttpClientHandler() }));
var workItemsApiInstance = new WorkItemsApi(service);
var workItem = new WorkItem()
{
ActivityId = clientID + "." + activity + "+" + alias,
Arguments = new Dictionary<string, IArgument>()
{
{
"rvtFile",
new XrefTreeArgument()
{
PathInZip = fileNames[n],
Url = downloadUrl
}
}, {
"exportChangesSettings",
new XrefTreeArgument()
{
Url = urlDownloadExportChangesSettings
}
}, {
"Result",
new XrefTreeArgument()
{
LocalName = outputFileName,
Verb = Verb.Put,
Url = uploadUrl
}
}
}
};
var workItemResult = await workItemsApiInstance.CreateWorkItemAsync(workItem);
var workItemStatus = await api.GetWorkitemStatusAsync(workItemResult.Content.Id);
Parece que você usa o OSS . Se sim, uma maneira melhor de fazer isso está descrita aqui: https://aps.autodesk.com/blog/new-feature-support-direct-s3-migration-inputoutput-files-design-automation