La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction au AWS SDK Java

Présentations similaires


Présentation au sujet: "Introduction au AWS SDK Java"— Transcription de la présentation:

1 Introduction au AWS SDK Java
Formation Introduction au AWS SDK Java 1 1 1

2 Introduction au AWS SDK Java
Formation AWS Boto Introduction au AWS SDK Java 2 2 2 2

3 Plan Présentation & Installation Concepts généraux Zoom sur EC2 et S3
Formation AWS Boto Plan Présentation & Installation Concepts généraux Zoom sur EC2 et S3 Alternatives 3 3 3 3

4 Présentation & Installation
Formation AWS Boto Présentation & Installation 4 4 4 4

5 Historique API Java (utilisable avec Groovy) Intégration avec Eclipse
Formation AWS Boto Historique API Java (utilisable avec Groovy) Intégration avec Eclipse Supporte les services suivants : EC2 (auto-scaling, ELB, CloudWatch) S3, Glacier, Datapipeline, EMR CloudFront, CloudSearch RDS, DynamoDB, SimpleDB SQS, SNS, SES Route53, elasticBeanstalk 5 5 5 5

6 Installer AWS SDK for Java
Formation AWS Boto Installer AWS SDK for Java SDK Eclipse: ajouter le channel AWS AWS SDK for Java : 6 6 6 6

7 Formation AWS Boto Concepts Généraux 7 7 7 7

8 Principes de base Paquetage principal : «com.amazonaws»
Formation AWS Boto Principes de base Paquetage principal : «com.amazonaws» Authentification « com.amazonaws.auth » Services « com.amazonaws.services.xxx » Chaque connexion à un service Amazon est représenté par une interface « AmazonXXX » (ie : AmazonEC2) « AmazonXXXClient » : interface synchrone « AmazonXXXClientAsync » : interface asynchrone, retourne des futures 8 8 8 8

9 Credentials Interface « com.amazonaws.auth.AWSCredentials »
Formation AWS Boto Credentials Interface « com.amazonaws.auth.AWSCredentials » Implémentations : « BasicAWSCredentials(String accessKey, String secretKey) » « PropertiesCredentials(File file) » « PropertiesCredentials(InputStream stream) »[EDF - Évolution Exemple de fichier properties : accessKey=XXXX secretKey=YYYY 9 9 9 9

10 Credentials Providers
Formation AWS Boto Credentials Providers Interface « com.amazonaws.auth.AWSCredentialsProvider » Implémentations : « AWSCredentialsProviderChain(AWSCredentialsProvid er ...credentialsProviders) » « ClasspathPropertiesFileCredentialsProvider » « SystemPropertiesCredentialsProvider » : vérifie les propriétés java « aws.accessKeyId » et « aws.secretKey » 10 10 10 10

11 Formation AWS Boto Client On récupére un objet « <service>Client » à un service pour une région donnée C'est à travers cet objet qu'on manipulera notre service Paramètres communs aux constructeurs AWSCredentials ou AWSCredentialsProvider ClientConfiguration : permet de configurer différents aspects du client REST (proxy, retries, timeout,protocoles -HTTP/HTTPS-) 11 11 11 11

12 Requests Paquetage « com.amazonaws.<service>.model »
Formation AWS Boto Requests Paquetage « com.amazonaws.<service>.model » Les objets « request » représente une requêtes HTTP C'est à travers cet objet qu'on fournira les paramètres de notre requêtes Ceux-ci sont fourni à une méthode du client pour soumission à AWS 12 12 12 12

13 Model Paquetage « com.amazonaws.<service>.model »
Formation AWS Boto Model Paquetage « com.amazonaws.<service>.model » Contient les représentations des différents concepts : Instance, Bucket, SecurityGroup, etc. 13 13 13 13

14 Region Paquetage « com.amazonaws.regions »
Formation AWS Boto Region Paquetage « com.amazonaws.regions » Enum « regions.Region » listant les différentes régions Classe « regions.Region »/ « regions.RegionUtils » Permet de lister les régions Obtenir l'objet région à partir d'une chaine ID Lister les régions supportant un service AWS donné Récupérer l'endpoint d'un service Créer un client pour un service 14 14 14 14

15 Documentation en ligne
Formation AWS Boto Documentation en ligne 15 15 15 15

16 Formation AWS Boto EC2 16 16 16 16

17 Formation AWS Boto Connexion à EC2 AWSCredentialsProvider provider = new ClasspathPropertiesFileCredentialsProvider() ; AmazonEC2 ec2 = new AmazonEC2Client(provider) ; # connexion à une autre région Region usWest2 = new Region.getRegion(Regions.US_WEST_2) ; ec2.setRegion(usWest2) ; 17 17 17 17

18 Lister les AMI disponibles
Formation AWS Boto Lister les AMI disponibles # Lister les AMI SysFera DescribeImagesRequest request = new DescribeImagesRequest() ; Request.setOwners(Arrays.asList(' '))  ; DescribeImagesResults res = ec2.describeImages(request) ; List<Images> images = res.getImages() ; # récupérer une AMI particulière Request.setImageIds(Arrays.asList('ami- 2ea50247') ; 18 18 18 18

19 Démarrer une instance EC2
Boto Formation AWS Démarrer une instance EC2 RunInstancesRequest request = new RunInstancesRequest(ami, 1, 1) ; RunInstancesResult res = ec2.runInstances(request) ; Reservation reservation= res.getReservation() ; List<Instance> instances = reservation.getInstances() ; 19 19 19 19

20 Connaître l'état d'une instance EC2
Formation AWS Boto Connaître l'état d'une instance EC2 # récupérer les informations InstanceState state = instance.getState() ; String dns = instance.getPublicDnsName() ; String ip = instance.getPublicIpAddress() ; Date launchDate = instance.getLaunchTime() ; 20 20 20 20

21 Terminer une instance EC2
Formation AWS Boto Terminer une instance EC2 # récupérer la réservation DescribeInstancesRequest request = new DescribeInstancesRequest() ; Filter filter = new Filter('tag:name', Arrays.asList('prod1')) ; request.setFilters(Arrays.asList(filter)) ; DescribeInstancesResult res = ec2.describeInstances(request) ; List<Reservation> reservations = result.getReservations() ; Reservation resa = reservations[0] ; # récupérer l'instance instance = resa[0] instance.terminate() # on peut également tuer toutes les instances # resa.terminate_all() 21 21 21 21

22 Terminer une instance EC2
Formation AWS Boto Terminer une instance EC2 # récupérer l'instance List<Instance> instances = reservation.getInstances() ; List<String> ids = new List<String>() ; for(Instance i : instances) { ids.add(i.getInstanceId()); } TerminateInstancesRequest request = new TerminateInstancesRequest() ; request.setImageIds(ids) ; Ec2.terminateInstances(request) ; 22 22 22 22

23 Créer un groupe de sécurité
Formation AWS Boto Créer un groupe de sécurité CreateSecurityGroupRequest request = new CreateSecurityGroupRequest('ssh-access', 'open ssh port') ; ec2.createSecurityGroup(request) ; 23 23 23 23

24 Configurer un groupe de sécurité
Formation AWS Boto Configurer un groupe de sécurité # ajouter une règle IpPermission ssh = new IpPermission(); ssh.withFromPort(22).withToPort(22).withIpRanges(' /0'); IpPermission http = new IpPermission(); http.withFromPort(22).withToPort(22).withIpRanges(' /0'); List<IpPermission> perms = Arrays.asList(ssh, http) ; AuthorizeSecurityGroupIngressRequest request = new authorizeSecurityGroupIngressRequest('ssh-access', perms); 24 24 24 24

25 Configurer un groupe de sécurité
Formation AWS Boto Configurer un groupe de sécurité # supprimer une règle RevokeSecurityGroupIngressRequest request = new RevokeSecurityGroupIngressRequest('ssh-access', perms); 25 25 25 25

26 Formation AWS Boto Allouer une EIP AllocateAddressRequest request = new Alloca teAddressRequest(); AllocateAddressResult res = ec2.allocateAddress(request); String eip = res.getPublicIp(); # associer l'ip à une machine AssociateAddressRequest request conn.associate_address(instance.id, eip.public_ip) # ou bien instance.use_ip(eip) conn.disassociate_address(eip) 26 26 26 26

27 Formation AWS Boto Associer une EIP AssociateAddressRequest request = new AssociateAddressRequest(id, eip); ec2.associateAddress(request); DisassociateAddressRequest request = new DisassociateAddressRequest(eip); ec2.disassociateAddress(request); 27 27 27 27

28 EBS # créer un volume de 2Go
Formation AWS Boto EBS # créer un volume de 2Go CreateVolumeRequest request = new CreateVolumeRequest(2, 'eu-west-1a'); CreateVolumeResult res = ec2.createVolume(request); Volume vol = res.getVolume(); # attacher le volume AttachVolumeRequest request = new AttachVolumeRequest(volId, instanceId, '/dev/sdb'); ec2.attachVolume(request); 28 28 28 28

29 EBS # créer un volume de 2Go
Formation AWS Boto EBS # créer un volume de 2Go CreateSnapshotRequest request = new CreateSnapshotRequest(volId, 'description'); CreateSnapshotResult res = ec2.createSnapshot(request); Snapshot snap = res.getSnapshot(); 29 29 29 29

30 Formation AWS Boto S3 30 30 30 30

31 Formation AWS Boto Connexion à S3 AmazonS3 s3 = new AmazonS3Client(new ClasspathPropertiesFileCredentialsProvider()); 31 31 31 31

32 Créer un bucket # créer un bucket
Formation AWS Boto Créer un bucket # créer un bucket CreateBucketRequest request = new CreateBucketRequest(bucket); Bucket b = s3.createBucket(request); 32 32 32 32

33 Formation AWS Boto Lister les buckets ListBucketsRequest request = new ListBucketsRequest(); List<Bucket> buckets = s3.listBuckets(request); for (Bucket b: buckets) { String s = String.format("====\n" + "name: %s\n" + "Date: %s\n", b.getName(), b.getCreationDate()); System.out.println(s); } 33 33 33 33

34 Stocker des données (1) # stocker une image à partir d'un fichier
Formation AWS Boto Stocker des données (1) # stocker une image à partir d'un fichier PutObjectRequest request = new PutObjectRequest(bucket_name, 'boto', new File('boto_vermelho.jpg')); s3.putObject(request); 34 34 34 34

35 Stocker des données (2) # télécharger un objet dans un fichier
Formation AWS Boto Stocker des données (2) # télécharger un objet dans un fichier GetObjectrequest request = new GetObjectRequest(bucket_name, 'boto'); S3Object res = s3.getObject(request); S3ObjectInputStream stream = res.getObjectContent(); IOUtils.copy(stream, new FileOutputStream("test.jpg")); 35 35 35 35

36 Lister le contenu d'un bucket
Formation AWS Boto Lister le contenu d'un bucket ListObjectRequest request = new ListObjectRequest().withBucketName('toto'); ObjectListing res = S3.listObject(request); List<S3ObjectSummary> summaries = res.getObjectSummaries(); 36 36 36 36

37 Formation AWS Boto ELB 37 37 37 37

38 Formation AWS Boto Connexion à ELB AmazonElasticLoadBalancing elb = new AmazonElasticloadBalancing(provider); 38 38 38 38

39 Définir un HealthCheck
Formation AWS Boto Définir un HealthCheck # un check toutes les 20s # sur la ressource # 3 checks réussis => ressource active # 5 checks échoués => ressource inactive HealthCheck hc = new HealthCheck('HTTP:8080/health', 20, 20, 5, 3); 39 39 39 39

40 Création d'un load balancer
Formation AWS Boto Création d'un load balancer List<String> zones = Arrays.asList('us-east-1a', 'us-east-1b'); Listener http = new Listener('http', 80, 8080); Listener https = new Listener('https', 443, 8443); List<Listener> listeners = Arrays.asList(http, https); CreateLoadBalancerRequest request = new CreateLoadBalancerRequest('lb1', listeners, zones) ; CreateLoadBalancerResult res = elb.createLoadBalancer(request); 40 40 40 40

41 Création d'un load balancer
Formation AWS Boto Création d'un load balancer # récupérer le nom DNS du LB String dns = res.getDNSName() ; # configurer le healthCheck ConfigureHealthCheckRequest request = new ConfigureHealthCheckRequest('lb1', hc); elb.configureHealthCheck(request) 41 41 41 41

42 Ajouter des instances à un LB
Formation AWS Boto Ajouter des instances à un LB # ajouter des instances List<Instances> instances = Arrays.asList(new Instance('i-xxx'), new Instance('i-yyy')); RegisterInstancesWithLoadBalancerRequest request = new RegisterInstancesWithLoadBalancerRequest('lb1', instances); Elb.registerInstancesWithLoadBalancer(request); 42 42 42 42

43 Retirer des instances à un LB
Formation AWS Boto Retirer des instances à un LB # retirer des instances DeregisterInstancesFromLoadBalancerRequest request = new DeregisterInstancesFromLoadBalancerRequest('lb1', instances); elb.deregisterInstancesFromLoadBalancer(request); 43 43 43 43

44 Manipuler les zones dans un LB
Formation AWS Boto Manipuler les zones dans un LB # désactiver une zone DisableAvailabilityZonesForLoadBalancerRequest request = new DisableAvailabilityZonesForLoadBalancerRequest('lb1' ,Arrays.asList('us-east-1a')); elb.disableAvailabilityZonesForLoadBalancer(request) ; # activer une zone EnableAvailabilityZonesForLoadBalancerRequest request = new EnableAvailabilityZonesForLoadBalancerRequest('lb1', Arrays.asList('us-east-1a')); elb.enableAvailabilityZonesForLoadBalancer(request)  ; 44 44 44 44

45 Détruire un Load Balancer
Formation AWS Boto Détruire un Load Balancer DeleteLoadBalancerRequest request = new DeleteLoadBalancerRequest('lb1'); elb.deleteLoadBalancer(request); 45 45 45 45

46 Formation AWS Boto SQS 46 46 46 46

47 Connexion à SQS AmazonSQS sqs = new AmazonSQSClient(provider); 47
Formation AWS Boto Connexion à SQS AmazonSQS sqs = new AmazonSQSClient(provider); 47 47 47 47

48 Formation AWS Boto Création d'une file CreateQueueRequest request = new CreateQueueRequest('tasks'); CreateQueueResult res = elb.createQueue(request); # récupérer l'url d'une queue System.out.println(res.getQueueUrl()); https://queue.amazonaws.com/ /tasks 48 48 48 48

49 Récupérer une file # lister l'ensemble des files
Formation AWS Boto Récupérer une file # lister l'ensemble des files ListQueuesRequest request = new ListQueuesRequest(); ListQueuesResult res = sqs.listQueues(request); List<String> qUrls = res.getQueuesUrls(); 49 49 49 49

50 Envoi d'un message String message = 'xxxxx';
Formation AWS Boto Envoi d'un message String message = 'xxxxx'; SendMessageRequest request = new SendMessageRequest(qUrls, message); sqs.sendMessage(request); 50 50 50 50

51 Consommer un message (1)
Formation AWS Boto Consommer un message (1) # nombre de messages dans une queue GetQueueAttributeRequest = new GetQueueAttributeRequest(qUrls).withAttributesName ('ApproximateNumberOfMessages'); GetQueueAttributeResult res = sqs.getQueueAttribute(request); map<String, String> attrs = res.getAttributes(); Attrs['ApproximateNumberOfMessages'] ; # récupérer un message msg = q.read() # récupérer plusieurs messages msgs = q.get_all_messages(num_messages=20) # afficher le contenu du message print msg.get_body() 51 51 51 51

52 Consommer un message (3)
Formation AWS Boto Consommer un message (3) # récupérer un message ReceiveMessageRequest request = new ReceiveMessageRequest(qUrls).withMaxNumberOfMessag es(20); ReceiveMessageResult res = sqs.receiveMessage(request); List<Messages> messages = res.getMessages(); # afficher le contenu du message System.out.println(messages.get(0).getBody()); 52 52 52 52

53 Consommer un message (3)
Formation AWS Boto Consommer un message (3) # attention récupérer un message, ne veut pas dire => consommer ! # valider la consommation DeleteMessageRequest request = new DeleteMessageRequest(qUrls, message.getReceiptHandle()); 53 53 53 53

54 Détruire notre file # destruction
Formation AWS Boto Détruire notre file # destruction DeleteQueueRequest request = new DeleteQueueRequest(qUrls); sqs.deleteQueue(request); 54 54 54 54

55 Formation AWS Boto SimpleDB 55 55 55 55

56 Formation AWS Boto Connexion à SimpleDB AmazonSimpleDB sdb = new AmazonSimpleDB(provider); 56 56 56 56

57 Formation AWS Boto Création d'un domaine CreateDomainRequest request = new CreateDomainRequest('domain1'); sdb.createDomain(request); # lister les domaines ListDomainsResult res = sdb.listDomain(new ListDomainsRequest()); List<Strings> names = res.getDomainNames(); 57 57 57 57

58 Métadonnées associés à un domaine
Formation AWS Boto Métadonnées associés à un domaine DomainMetadataRequest request = new DomainMetadataRequest('domain1') ; DomainMetadataResult res = sdb.domainMetaData(request); # lister le nombre d'items dans le domaine System.out.println(res.getItemCount()); 58 58 58 58

59 Insérer un item # en un coup
Formation AWS Boto Insérer un item # en un coup domain.put_attributes('cmd1', {'id' : 1, 'nb' : 7}) # en plusieurs coups item = domaine.new_item('cmd2') item['id'] = 1 item.add_value('nb', 9) item.save() # en batch domain.put_attributes({'cmd4' : {'id' : 1, 'nb' : 7}}) 59 59 59 59

60 Formation AWS Boto Récupérer un item (1) GetAttributesRequest request = new GetAttributesRequest('domain1', 'cmd7'); # forcer une lecture vérouillée request.setConsistentRead(true); GetAttributesResult res = sdb.getAttributes(request); 60 60 60 60

61 Récupérer un item (2) # possibilité d'utiliser « SQL »
Formation AWS Boto Récupérer un item (2) # possibilité d'utiliser « SQL » SelectRequest request = new SelectRequest('select * from commandes where id="7"'); SelectResult res = sdb.select(request); List<Item> items = res.getItems(); for (Item item : items) { System.out.println(item.getName()); } 61 61 61 61

62 Formation AWS Boto Alternatives 62 62 62 62

63 Boto Bibliothèque Python SDK officiel Python Beaucoup moins verbeux !
Formation AWS Boto Boto Bibliothèque Python SDK officiel Python Beaucoup moins verbeux ! 63 63 63 63

64 Libcloud (1) Bibliothèque Python
Formation AWS Boto Libcloud (1) Bibliothèque Python Couche d'abstraction entre les API des différents fournisseurs d'IaaS Supporte Service d'instances virtuelles Service de stockage Service de load balancing Service de DNS 64 64 64 64

65 Libcloud (2) Plus de 26 fournisseurs supportés
Formation AWS Boto Libcloud (2) Plus de 26 fournisseurs supportés AWS, Rackspace, Eucalyptus, OpenStack, OpenNebula, CloudSigma, Google Storage, Vsphere, Gandi.net, etc... https://libcloud.apache.org 65 65 65 65

66 Formation AWS Boto Deltacloud (1) 66 66 66 66

67 Deltacloud (2) Couche d'abstraction sous forme d'API REST
Formation AWS Boto Deltacloud (2) Couche d'abstraction sous forme d'API REST Développé en Ruby par Red Hat Accessible directement par des requêtes et des bibliothèques clients (Ruby, Python, C, C++) et via Curl Top Level Project Apache 67 67 67 67

68 Deltacloud (3) Architecture flexible : Un proxy REST
Formation AWS Boto Deltacloud (3) Architecture flexible : Un proxy REST 3 API en frontend : deltacloud, EC2 et CIMI Des pilotes pour gérer différents fournisseurs Supporte environ 15 fournisseurs AWS, Rackspace, OpenStack, OpenNebula, Eucalyptus, Azure (stockage), vSphere etc. Pilote « mock » pour tester ses applications ! 68 68 68 68

69 Autres Langages SDK officiel pour les langages PHP, Ruby, Java, .Net
Formation AWS Boto Autres Langages SDK officiel pour les langages PHP, Ruby, Java, .Net https://aws.amazon.com/developertools En Ruby, l'excellent Fog : Gère plusieurs fournisseurs Supporte libvirt Mode « mock » pour les tests 69 69 69 69

70 Formation AWS Boto Bibliographie 70 70 70 70

71 Formation AWS Boto Mise en pratique 71 71 71 71


Télécharger ppt "Introduction au AWS SDK Java"

Présentations similaires


Annonces Google