Le « cloud » est le nouveau mot-clé pour créer le buzz dans l’IT. Grâce aux nouvelles apps, accessoires, etc., nous utilisons ou stockons tous des données dans le cloud parfois sans parfois s’en rendre compte. Amazon, au-delà de son si populaire site marchand, dispose d’un vaste catalogue de web services (AWS). Au sein de ces services, l’un d’entre eux dipose d’un grand potentiel pour les développeurs 4D. Il s’agit d’Amazon Simple Storage Service (S3). S3 constitue la solution Amazon de stockage sur le Cloud.
6. Caractéristiques
• A la demande
• Accès réseau large bande
• Réservoir de ressources
• Elasticité
• Facturation à l’usage
7. Modèles de service
• IaaS (Infrastructure as a Service)
• PaaS (Plateform as a Service)
• SaaS (Software as a Service)
8. Modèles de service (suite)
Storage
Network
Servers
Virtualization
OS
Middleware
Runtime
Data
Application
Traditionnel
(pour comparaison)
Vousgérez
Storage
Network
Servers
Virtualization
OS
Middleware
Runtime
Data
Application
Infrastructure
(as a Service)
Vousgérez
Fournisseur
Storage
Network
Servers
Virtualization
OS
Middleware
Runtime
Data
Application
Platform
(as a Service)
Vousgérez
Fournisseur
Storage
Network
Servers
Virtualization
OS
Middleware
Runtime
Data
Application
Software
(as a Service)
Fournisseur
14. Un cas d’espèce
• 4D db avec de gros blobs (>30 Mb)
• Document avec des métadonnées
• Faible taux de création de blobs
• Faible taux de modification de blobs
• Faible taux de lecture des blobs
15. Le problème
• % de blob dans les données
• Gestion des gros fichiers
• Backup : intégral vs différentiel
16. Options
Store
Infrastructure
managed by
Integrity
managed by
Transaction Security Backup
blob (record) na 4D 4D na yes
blob (data file) na 4D 4D na yes
blob (disk) na 4D 4D na yes
file (local disk) you you you you you
file (shared disk) you you you you you
cloud cloud you you you + cloud you + cloud
20. Métadonnées de ressource
• chemin/nom de fichier
• Date de création, modification
• type (pdf, jpg, png, xml, json, etc...)
• Taille, empreinte (md5)
• Pdf : nombre de pages
• Image : résolution, exif, etc...
24. Créer son compte
• Accès à la Console AWS
• Gestion et suivi des services
• Obtenir les identifiants
o «AccessKeyId» : 20 caractères
o «SecretAccessKey» : 40 caractères
25. Les «régions» AWS
• 10 régions
• Vérifier la disponibilité du service
• Choisir une région (proche de vous)
26. Région Continent Localisation
us-east-1 US East N. Virginia
us-west-2 US West Oregon
us-west-1 US West N. California
us-gov US West ?
eu-west-1 EU Ireland
eu-central-1 EU Frankfurt
ap-southeast-1 Asia Pacific Singapore
ap-northeast-1 Asia Pacific Tokyo
ap-southeast-2 Asia Pacific Sydney
ap-northeast-2 Asia Pacific Seoul
cn-north-1 Asia Pacific Beijing
sa-east-1 South America Sao Paulo
27.
28. AWS endpoint
• La partie Host/domain de l’URL
• Exemple :
s3-eu-central-1.amazonaws.com
S3 service EU - Frankfurt
29. Les outils et APIs AWS
• Online : AWS Management Console
• Outil : AWS CLI
• SDKs (Java, PHP, Python, Ruby, etc)
• APIs :
o RESTful APIs
o SOAP APIs : déprécié
30. AWS ligne de commande
• Outil basé sur Python
• Unifié pour tous les services
• Cross platform
• Peut être utilisé dans 4D avec LPE
(LANCER PROCESS EXTERNE)
31. AWS ligne de commande
(suite)
• Télécharger installer
• Configurer
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
32. • Exemple :
• Sortie : json, text (tab / table)
• Documentation
http://docs.aws.amazon.com/cli/latest/reference/
$ aws <service> ...
AWS ligne de commande
(suite)
• Syntaxe spécifique au service
33. Les APIs AWS
• Basés sur REST
• Mécanisme d’authentification
commun
• APIs spécifiques à chaque service
38. Url S3
• Deux syntaxes possibles
• Exemples avec le bucket «myBucket» :
https://myBucket.s3-eu-central-1.amazonaws.com
https://s3-eu-central-1.amazonaws.com/myBucket
39. Url S3 (suite)
• Avec la clé
https://s3-eu-central-1.amazonaws.com/myBucket/map/images/logo.png
https://myBucket.s3-eu-central-1.amazonaws.com/map/images/logo.png
https://myBucket.s3-eu-central-1.amazonaws.com/<object_key>
https://s3-eu-central-1.amazonaws.com/myBucket/map/images/logo.png?acl
• Avec la clé et une «query string»
40. Les services S3 avec cli
• Deux services
• s3
• s3 api
• Documentation
http://docs.aws.amazon.com/cli/latest/reference/s3api/
http://docs.aws.amazon.com/cli/latest/reference/s3/
$ aws s3 ...
$ aws s3api ...
41. Les opérations REST S3
• Opérations sur les «buckets»
• Opérations sur les objets
• Les réponses de S3 au format XML ou
JSON
• Documentation
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketOps.html
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectOps.html
46. L’assistant CLI
// call once (AWS client needs to be configured)
AWS_cliPathSet ("/Users/ble/.local/lib/aws/bin/aws")
// http://docs.aws.amazon.com/cli/latest/reference/s3/
C_POINTEUR($vp_nil)
C_TEXTE($vt_list)
AWS_cliRun ("s3 ls s3://ac-consulting-test/test/demo/"
;Faux;$vp_nil;->$vt_list)
ALERTE($vt_list)
47. L’assistant CLI (suite)
// http://docs.aws.amazon.com/cli/latest/reference/s3api/
// we will use json :-)
// first get informations of the object with the "head-object" the json as text and parse the json
C_TEXTE($vt_json)
C_POINTEUR($vp_nil)
AWS_cliRun ("s3api "+
"head-object "+
"--bucket ac-consulting-test "+
"--key test/demo/imagePrivate.png";
Faux;$vp_nil;->$vt_json)
C_OBJET($vo_objectProperties)
$vo_objectProperties:=JSON Parse($vt_json)
// {
// "AcceptRanges": "bytes",
// "ContentType": "image/png",
// "LastModified": "Mon, 04 Jan 2016 09:43:06 GMT",
// "ContentLength": 288548,
// "ETag": ""43ef6cf259c8183e4c79d584ca03733c"",
// "StorageClass": "REDUCED_REDUNDANCY",
// "ServerSideEncryption": "AES256",
// "Metadata": {}
// }
48. L’assistant CLI (suite)
// wouldn't it be nice if we could get the json directly from the AWS_cliRun ?
// list objects in the bucket
C_POINTEUR($vp_nil)
C_OBJET($vo_objectProperties)
EFFACER VARIABLE($vo_objectProperties)
AWS_cliRun ("s3api "+
"head-object "+
"--bucket ac-consulting-test "+
"--key test/demo/imagePrivate.png";
Faux;$vp_nil;->$vo_objectProperties)
// {
// "AcceptRanges": "bytes",
// "ContentType": "image/png",
// "LastModified": "Mon, 04 Jan 2016 09:43:06 GMT",
// "ContentLength": 288548,
// "ETag": ""43ef6cf259c8183e4c79d584ca03733c"",
// "StorageClass": "REDUCED_REDUNDANCY",
// "ServerSideEncryption": "AES256",
// "Metadata": {}
// }
49. L’assistant CLI (suite)
// get a resource into a blob
C_POINTEUR($vp_nil)
C_BLOB($vp_blob)
AWS_cliRun ("s3 cp s3://ac-consulting-test/test/demo/imagePrivate.png -"
;Faux;$vp_nil;->$vp_blob)
50. L’API REST AWS API
C_TEXTE($vt_region;$vt_AWSAccessKeyId;$vt_AWSSecretKey)
C_BOOLEEN($vb_interprocess)
$vt_region:="us-west-2"
$vt_AWSAccessKeyId:="AKIAIOSFODNN7EXAMPLE"
$vt_AWSSecretKey:="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
$vb_interprocess:=Vrai
// The parameters are set for the next S3_restApi calls
AWS_paramSet ($vt_region;$vt_AWSAccessKeyId;$vt_AWSSecretKey;$vb_interprocess)
Gestion des identifiants
54. Votre avis compte beaucoup pour nous
Visitez summit.4d.com
Sélectionnez l’agenda, la session et
Wifi gratuit : Novotel_Charenton
pas de mot de passe
En participant à l’enquête, vous pouvez gagner des prix remis
lors de la session des questions/réponses de jeudi