PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 25 → WX - Classe Amazon S3
WX - Classe Amazon S3
Iniciado por BOLLER, 11,ene. 2017 00:56 - 2 respuestas
Miembro registrado
3.659 mensajes
Popularité : +175 (223 votes)
Publicado el 11,enero 2017 - 00:56
Prezados,

O Amazon Simple Storage Service (Amazon S3) é um armazenamento de objetos com uma interface de web service simples para armazenar e recuperar qualquer volume de dados de qualquer parte da web. Ele foi projetado para oferecer uma durabilidade de 99,999999999% e escalar mais de 1 trilhão de objetos em todo o mundo.
Os clientes usam o S3 como um repositório em massa, ou "data lake", para análise, backup e recuperação, recuperação de desastres e computação sem servidor. Muitas aplicações nativas da nuvem usam o S3 até mesmo como armazenamento principal.
É simples transferir grandes volumes de dados para dentro ou para fora do S3 com as opções de migração de dados para a nuvem da Amazon. Depois que os dados forem armazenados no Amazon S3, eles poderão ser automaticamente divididos em categorias de armazenamento na nuvem de custo mais baixo e longo prazo, como o S3 Padrão – Acesso ocasional e o Amazon Glacier para arquivamento.


Recursos
O Amazon S3 oferece a plataforma de armazenamento de objetos com o conjunto de recursos mais completo disponível atualmente na nuvem.

Simples
O Amazon S3 é simples de usar e tem um console de gerenciamento e uma aplicação móvel, ambos baseados na web. O S3 também disponibiliza APIs REST e SDKs completos para a integração fácil com tecnologias de terceiros.
Conceitos básicos do Amazon S3 »

Resiliente
O Amazon S3 proporciona infraestrutura durável para armazenar dados importantes e foi projetado para oferecer durabilidade de objetos de 99,999999999%. Seus dados são armazenados com redundância em várias instalações e diversos dispositivos em cada instalação.
Saiba mais »

Escalável
Com o Amazon S3, você pode armazenar a quantidade de dados desejada e acessá-los quando precisar. Não é mais necessário adivinhar as necessidades futuras de armazenamento. Você pode aumentar e diminuir a escala de acordo com a necessidade, aumentando consideravelmente a agilidade empresarial.


Segue aqui a Classe Amazon S3 para ser usada em seus projetos:






Conteúdo da Classe:

S3 is a Class
PRIVATE
Cliente is dynamic AmazonS3Client
nomeBucket is string
END



Procedure Constructor(Senha is string,SenhaSecreta is string ,bucket is string)
nomeBucket = bucket

Cliente = new AmazonS3Client(Senha,SenhaSecreta,AmazoN.RegionEndpoint.USEast1)



Procedure Destructor()



// Automatic Process of Exceptions: run the block of code CASE EXCEPTION:
//

Procedure Upload(CodigoEmpresa is string,ClienteEmp is string,Categoria is string,AspNet is boolean,Arquivo is string,progresBar is string,zipArquivo is boolean,AreaAspNet is string,Ano is string,Mes is string)

Requisicao is TransferUtilityUploadRequest
Transferencia is TransferUtility(Cliente)
ArquivoGuid is string
Key is string
CaminhoArquivo is string = ""


ArquivoGuid = GetGUID(guidRough)

IF AspNet = True THEN
Key = CodigoEmpresa + "/" + ClienteEmp + "/" + Categoria + "/" +AreaAspNet(Val(AreaAspNet)) + "/" + Ano + "/" + Mes + "/" + ArquivoGuid
ELSE
Key = CodigoEmpresa + "/" + Ano + "/" + ArquivoGuid
END
Requisicao:BucketName = nomeBucket
Requisicao:key = Key
IF zipArquivo = True THEN
CaminhoArquivo = CompactaArquivo(fExtractPath(Arquivo,fFileName),Arquivo)
ELSE
CaminhoArquivo = Arquivo
END
Requisicao:FilePath = CaminhoArquivo
Requisicao:ContentType = BuscaTipoArquivo(fExtractPath(CaminhoArquivo,fExtension))
IF progresBar <> "" THEN
Requisicao:UploadProgressEvent = (DotNetDelegate(progresBar, "EventHandler<UploadProgressArgs>"))
END
Transferencia.Upload(Requisicao)

RESULT ArquivoGuid



Procedure PRIVATE BuscaTipoArquivo(sExtensaoArquivo is string = "")
tipoArquivo is string = ""

SWITCH Replace(sExtensaoArquivo,".","")

CASE "doc","dot"
sExtensaoArquivo = "application/msword"
CASE "docx"
sExtensaoArquivo = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
CASE "dll"
sExtensaoArquivo = "application/x-msdownload"
CASE "exe"
sExtensaoArquivo = "application/octet-stream"
CASE "gif"
sExtensaoArquivo = "image/gif"
CASE "gz"
sExtensaoArquivo = "application/x-gzip"
CASE "htm","html"
sExtensaoArquivo = "text/html"
CASE "ico"
sExtensaoArquivo = "image/x-icon"
CASE "jpe","jpeg","jpg"
sExtensaoArquivo = "image/jpeg"
CASE "png"
sExtensaoArquivo = "image/png"
CASE "pdf"
sExtensaoArquivo = "application/pdf"
CASE "pps","ppt"
sExtensaoArquivo = "application/vnd.ms-powerpoint"
CASE "rtf"
sExtensaoArquivo = "application/rtf"
CASE "txt","cs"
sExtensaoArquivo = "text/plain"
CASE "xls","csv"
sExtensaoArquivo = "application/vnd.ms-excel"
CASE "xlsx"
sExtensaoArquivo = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
CASE "xml"
sExtensaoArquivo = "text/xml"
CASE "zip"
sExtensaoArquivo = "application/zip"
OTHER CASE
sExtensaoArquivo = ""
END

RESULT sExtensaoArquivo



// Summary: <specify the procedure action>
// Syntax:
//DownloadArquivo (<CodigoEmpresa> is int, <ClienteEmp> is string, <Categoria> is string, <Ano> is int, <AspNet> is boolean, <ArquivoGuid> is string, <CaminhoDown> is string, <ProgessoBar> is string, <AreaAspNet> is int, <Mes> is int)
//
// Parameters:
// CodigoEmpresa (int): <specify the role of sKeyName>
// ClienteEmp (ANSI string): <specify the role of ClienteEmp>
// Categoria (ANSI string): <specify the role of Categoria>
// Ano (int): <specify the role of Ano>
// AspNet (boolean): <specify the role of AspNet>
// ArquivoGuid (ANSI string): <specify the role of ArquivoGuid>
// CaminhoDown (ANSI string): <specify the role of CaminhoDown>
// ProgessoBar (ANSI string): <specify the role of ProgessoBar>
// AreaAspNet (int): <specify the role of ProgessoBar>
// Mes (int): <specify the role of Mes>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
// Cliente (.NET object): <specify the role of Cliente>
// sBucketName (ANSI string): <specify the role of sBucketNome>

// Arquivo (ANSI string): <specify the role of Arquivo>// Automatic Process of Exceptions: run the block of code CASE EXCEPTION:
//

Procedure DownloadArquivo(CodigoEmpresa is int,ClienteEmp is string,Categoria is string,Ano is int,AspNet is boolean,ArquivoGuid is string,CaminhoDown is string,ProgessoBar is string,AreaAspNet is int,Mes is int)
ResquisaoDown is TransferUtilityDownloadRequest
TransferenciaDown is TransferUtility(Cliente)
Arquivo is string = ""

IF AspNet = True THEN
Arquivo = CodigoEmpresa + "/" + ClienteEmp + "/" + Categoria + "/" +AreaAspNet(AreaAspNet) + "/" + Ano + "/" + Mes + "/" + ArquivoGuid
ELSE
Arquivo = CodigoEmpresa + "/" + ClienteEmp + "/" + Ano + "/" + Categoria + "/" + ArquivoGuid
END

ResquisaoDown.BucketName = nomeBucket
ResquisaoDown.Key = Arquivo
ResquisaoDown.FilePath = CaminhoDown
IF ProgessoBar <> ""
ResquisaoDown:WriteObjectProgressEvent = (DotNetDelegate(ProgessoBar, "EventHandler<WriteObjectProgressArgs>"))
END

TransferenciaDown.Download(ResquisaoDown)



// Summary: <specify the procedure action>
// Syntax:
//[ <Result> = ] CompactaArquivo (<Arquivo> is string, <CaminhoArq> is string)
//
// Parameters:
// Arquivo (ANSI string): <specify the role of Arquivo>
// CaminhoArq (ANSI string): <specify the role of CaminhoArq>
// Return Value:
// ANSI string: // None
//
// For instance:
// Indicate an example.
//
Procedure PRIVATE CompactaArquivo(Arquivo is string, CaminhoArq is string)
resp is int = 0
caminhoZip is string = ""

resp = zipCreate("ArqZip", fExtractPath(CaminhoArq,fDrive+fDirectory) + "\" + Arquivo + ".zip")
IF resp = 0 THEN
resp = zipAddFile("ArqZip", CaminhoArq, zipNone)
caminhoZip = fExtractPath(CaminhoArq,fDrive+fDirectory+fFileName) + ".zip"
END
zipClose("ArqZip")

RESULT caminhoZip



// Summary: <specify the procedure action>
// Syntax:
//[ <Result> = ] AreaAspNet (<Codigo> is int)
//
// Parameters:
// Codigo (int): <specify the role of Codigo>
// Return Value:
// ANSI string: // None
//
// For instance:
// Indicate an example.
//
Procedure AreaAspNet(Codigo is int)
Area is string = ""
SWITCH Codigo

CASE 1
Area = "CONTABIL"
CASE 2
Area = "FISCAL"
CASE 3
Area = "PESSOAL"
CASE 4
Area = "AUDITORIA"
CASE 5
Area = "ADM"
CASE 6
Area = "PLUS"
OTHER CASE
Area = "OUTROS"
END

RESULT Area



// Summary: <specify the procedure action>
// Syntax:
//[ <Result> = ] ListaArquivosPasta (<CodigoEmpresa> is int, <CodigoCliente> is string [, <OutrasPastas> is string])
//
// Parameters:
// CodigoEmpresa (int): <specify the role of CodigoEmpresa>
// CodigoCliente (ANSI string): <specify the role of CodigoCliente>
// OutrasPastas (ANSI string - default value=""): <specify the role of OutraPastas>
// Return Value:
// array: // None
//
// For instance:
// Indicate an example.
//
Procedure ListaArquivosPasta(CodigoEmpresa is int,CodigoCliente is string,OutrasPastas is string = "")
Diretorio is string = ""
ListaArquivos is ListVersionsRequest
Arquivo is S3ObjectVersion
arrArquivos is array of 0 by 2 string
NomeGuid is string =""
CaminhoArquivo is string = ""

IF OutrasPastas <> "" THEN
Diretorio = CodigoEmpresa + "/" + CodigoCliente + "/" + OutrasPastas
ELSE
Diretorio = CodigoEmpresa + "/" + CodigoCliente
END

ListaArquivos:BucketName = nomeBucket
ListaArquivos:Prefix = Diretorio

WHILE ListaArquivos <> Null

FOR EACH Arquivo OF Cliente.ListVersions(ListaArquivos).Versions

CaminhoArquivo = Arquivo:key
NomeGuid =fExtractPath(CaminhoArquivo,fFileName)

ArrayAddLine(arrArquivos,CaminhoArquivo,NomeGuid)

END
IF Cliente.ListVersions(ListaArquivos).IsTruncated = True
ListaArquivos:KeyMarker = Cliente.ListVersions(ListaArquivos).NextKeyMarker;
ListaArquivos:VersionIdMarker = Cliente.ListVersions(ListaArquivos).NextVersionIdMarker;
ELSE
ListaArquivos = Null;
END
END


RESULT arrArquivos



// Summary: <specify the procedure action>
// Syntax:
//DowloandPasta (<Arquivo> is string, <CaminhoDown> is string)
//
// Parameters:
// Arquivo (ANSI string): <specify the role of Arquivo>
// CaminhoDown (ANSI string): <specify the role of CaminhoDown>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure DowloandPasta(Arquivo is string, CaminhoDown is string)

ResquisaoDown is TransferUtilityDownloadRequest
TransferenciaDown is TransferUtility(Cliente)

ResquisaoDown.BucketName = nomeBucket
ResquisaoDown.Key = Arquivo
ResquisaoDown.FilePath = CaminhoDown

TransferenciaDown.Download(ResquisaoDown)



Adicione as duas DLL do SDK da Amazon S3

a) AWSSDK.Core.dll





b) AWSSDK.S3.dll






Seguro
O Amazon S3 oferece suporte à transferência de dados usando SSL e criptografia automática dos dados após o upload. Você também pode configurar políticas de bucket para gerenciar permissões de objetos e controlar o acesso a seus dados usando o AWS Identity and Access Management (IAM).
Saiba mais »


Disponível
O Amazon S3 Standard foi concebido para proporcionar uma disponibilidade de objetos de até 99,99% durante um determinado ano e tem o respaldo do Acordo de nível de serviço do Amazon S3, garantindo que você possa contar com o serviço sempre que precisar. E você também pode escolher a região da AWS para otimizar a latência, minimizar os custos ou cumprir requisitos normativos.


Baixo custo
O Amazon S3 permite armazenar grandes quantidades de dados com custo muito baixo. Com o uso de políticas de ciclo de vida, você pode definir políticas para migrar automaticamente dados para a categoria Padrão – Acesso ocasional e para o Amazon Glacier, conforme se aproximarem do fim da vida útil, para reduzir ainda mais os custos.


Transferência de dados simples
A Amazon oferece várias opções de migração de dados para a nuvem e possibilita a movimentação de grandes volumes de dados de e para o Amazon S3 com simplicidade e economia. Os clientes podem escolher entre métodos de conector otimizados para rede, baseados em disco físico ou de terceiros para importar ou exportar dados do S3. 


Integrado
O Amazon S3 está altamente integrado a outros Serviços da AWS para facilitar a criação de soluções que usam vários Serviços da AWS. As integrações incluem os seguintes serviços: Amazon CloudFront, Amazon CloudWatch, Amazon Kinesis, Amazon RDS, Amazon Glacier, Amazon EBS, Amazon DynamoDB, Amazon Redshift, Amazon Route 53, Amazon EMR, Amazon VPC, Amazon KMS e AWS Lambda.


Fácil de gerenciar
Os recursos de gerenciamento de armazenamento do S3 permitem a adoção de uma abordagem controlada por dados à otimização do armazenamento, à segurança de dados e à eficiência do gerenciamento. Esses recursos de nível empresarial disponibilizam dados sobre os seus dados, para que você possa gerenciar o armazenamento com base nestes metadados personalizados.


Casos de uso do Amazon S3
O Amazon S3 é uma ótima escolha para uma grande variedade de casos de uso, de um simples repositório de armazenamento para backup e recuperação até um armazenamento principal para algumas das aplicações nativas de nuvem mais avançadas no mercado atual, bem como para todas as variações intermediárias.


Backup e arquivamento
O Amazon S3 oferece uma solução altamente durável, escalonável e segura para backup e arquivamento de dados críticos. Você pode usar o recurso de versionamento do Amazon S3 para oferecer ainda mais proteção aos seus dados armazenados. Você também pode definir as regras do ciclo de vida para migrar automaticamente dados acessados com menos frequência para a categoria Standard – IA e arquivar conjuntos de objetos no Amazon Glacier.


Armazenamento e distribuição de conteúdo
O Amazon S3 oferece armazenamento altamente durável e disponível para diversos conteúdos. Permite que você transfira a sua infraestrutura de armazenamento completa para a nuvem, onde você pode tirar proveito da escalabilidade do Amazon S3 e da definição de preço com pagamento conforme o uso para atender às suas crescentes necessidades de armazenamento. Você pode distribuir seu conteúdo diretamente do Amazon S3 ou usar o Amazon S3 como um arquivo de origem para entregar conteúdo aos seus pontos de presença do Amazon CloudFront. 



Análise de big data
Se você está armazenando dados farmacêuticos ou financeiros, ou arquivos multimídia como fotografias e vídeos, o Amazon S3 pode ser usado como armazenamento de objetos de big data. A Amazon Web Services oferece um portfólio abrangente de serviços que ajudam a gerenciar big data reduzindo custos, oferecendo escalabilidade para atender à demanda e acelerando a inovação. 



Hospedagem de sites estáticos
Você pode hospedar seu site estático inteiro no Amazon S3 para obter uma solução de hospedagem altamente disponível e econômica, com escalabilidade automática para atender a demandas de tráfego. Com o Amazon S3, você pode atender ao seu tráfego com confiabilidade e lidar com picos imprevistos sem se preocupar com a escalabilidade de sua infraestrutura. 


 
Dados de aplicações nativos da nuvem
O Amazon S3 oferece armazenamento de alto desempenho e disponibilidade que facilita a escalabilidade e a manutenção de aplicativos de rápida execução, econômicos e baseados na Internet. Com o Amazon S3, você pode adicionar qualquer quantidade de conteúdo e acessá-lo de qualquer lugar, possibilitando implementar aplicativos com maior rapidez e alcançar mais clientes.


Recuperação de desastres
A infraestrutura altamente resiliente, segura e global do Amazon S3 oferece uma solução de recuperação de desastres robusta e projetada para oferecer a melhor proteção para os seus dados. A replicação entre regiões (CRR) replica automaticamente cada objeto do S3 para um bucket de destino localizado em uma diferente região da AWS. 

Comece a usar o Amazon S3
É fácil começar a usar o Amazon S3. Siga nossas orientações detalhadas de console para provisionar seu primeiro bucket do S3 com apenas alguns cliques. O nível gratuito da AWS inclui 5 GB de armazenamento, 20.000 solicitações GET e 2.000 solicitações PUT com o Amazon S3.

https://portal.aws.amazon.com/gp/aws/developer/registration/index.html

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensaje modificado, 11,enero 2017 - 01:06
Miembro registrado
3.659 mensajes
Popularité : +175 (223 votes)
Publicado el 11,enero 2017 - 11:23
Bom dia,

Código enviado como sugestão pelo analista Henrique Soares.

Muito obrigado por ceder o código fonte a comunidade!

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Miembro registrado
3.659 mensajes
Popularité : +175 (223 votes)
Publicado el 11,enero 2017 - 11:28



















--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/