formation introduction au aws sdk java. formation awsboto 2
TRANSCRIPT
![Page 1: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/1.jpg)
Formation
Introduction au AWS SDK Java
![Page 2: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/2.jpg)
Introduction au AWS SDK Java
Formation AWS Boto
2
![Page 3: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/3.jpg)
Plan• Présentation & Installation• Concepts généraux• Zoom sur EC2 et S3• Alternatives
Formation AWS Boto
3
![Page 4: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/4.jpg)
Présentation & Installation
Formation AWS Boto
4
![Page 5: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/5.jpg)
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
Formation AWS Boto
5
![Page 6: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/6.jpg)
Installer AWS SDK for Java• SDK Eclipse: ajouter le channel AWS http://aws.amazon.com/eclipse• AWS SDK for Java : http://aws.amazon.com/fr/sdkforjava/
Formation AWS Boto
6
![Page 7: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/7.jpg)
Concepts Généraux
Formation AWS Boto
7
![Page 8: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/8.jpg)
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
Formation AWS Boto
8
![Page 9: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/9.jpg)
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 :
Formation AWS Boto
9
accessKey=XXXXsecretKey=YYYY
![Page 10: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/10.jpg)
Credentials Providers• Interface « com.amazonaws.auth.AWSCredentialsProvider »• Implémentations :
• « AWSCredentialsProviderChain(AWSCredentialsProvider ...credentialsProviders) »
• « ClasspathPropertiesFileCredentialsProvider »• « SystemPropertiesCredentialsProvider » : vérifie les propriétés java « aws.accessKeyId » et « aws.secretKey »
Formation AWS Boto
10
![Page 11: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/11.jpg)
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-)
Formation AWS Boto
11
![Page 12: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/12.jpg)
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
Formation AWS Boto
12
![Page 13: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/13.jpg)
Model• Paquetage « com.amazonaws.<service>.model »• Contient les représentations des différents concepts : Instance, Bucket, SecurityGroup, etc.
Formation AWS Boto
13
![Page 14: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/14.jpg)
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
Formation AWS Boto
14
![Page 15: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/15.jpg)
Documentation en ligne
Formation AWS Boto
15
http://aws.amazon.com/fr/sdkforjava/
![Page 16: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/16.jpg)
EC2
Formation AWS Boto
16
![Page 17: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/17.jpg)
Connexion à EC2AWSCredentialsProvider 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) ;
Formation AWS Boto
17
![Page 18: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/18.jpg)
Lister les AMI disponibles# Lister les AMI SysFera
DescribeImagesRequest request = new DescribeImagesRequest() ;
Request.setOwners(Arrays.asList('443252058477')) ;
DescribeImagesResults res = ec2.describeImages(request) ;
List<Images> images = res.getImages() ;
# récupérer une AMI particulière
Request.setImageIds(Arrays.asList('ami-2ea50247') ;
Formation AWS Boto
18
![Page 19: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/19.jpg)
Démarrer une instance EC2RunInstancesRequest request = new RunInstancesRequest(ami, 1, 1) ;
RunInstancesResult res = ec2.runInstances(request) ;
Reservation reservation= res.getReservation() ;
List<Instance> instances = reservation.getInstances() ;
Formation AWSBoto
19
![Page 20: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/20.jpg)
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() ;
Formation AWS Boto
20
![Page 21: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/21.jpg)
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()
Formation AWS Boto
21
![Page 22: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/22.jpg)
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) ;
Formation AWS Boto
22
![Page 23: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/23.jpg)
Créer un groupe de sécuritéCreateSecurityGroupRequest request = new CreateSecurityGroupRequest('ssh-access', 'open ssh port') ;
ec2.createSecurityGroup(request) ;
Formation AWS Boto
23
![Page 24: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/24.jpg)
Configurer un groupe de sécurité# ajouter une règle
IpPermission ssh = new IpPermission();
ssh.withFromPort(22).withToPort(22).withIpRanges('0.0.0.0/0');
IpPermission http = new IpPermission();
http.withFromPort(22).withToPort(22).withIpRanges('0.0.0.0/0');
List<IpPermission> perms = Arrays.asList(ssh, http) ;
AuthorizeSecurityGroupIngressRequest request = new authorizeSecurityGroupIngressRequest('ssh-access', perms);
Formation AWS Boto
24
![Page 25: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/25.jpg)
Configurer un groupe de sécurité# supprimer une règle
RevokeSecurityGroupIngressRequest request = new RevokeSecurityGroupIngressRequest('ssh-access', perms);
Formation AWS Boto
25
![Page 26: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/26.jpg)
Allouer une EIPAllocateAddressRequest request = new AllocateAddressRequest();
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)
Formation AWS Boto
26
![Page 27: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/27.jpg)
Associer une EIPAssociateAddressRequest request = new AssociateAddressRequest(id, eip);
ec2.associateAddress(request);
DisassociateAddressRequest request = new DisassociateAddressRequest(eip);
ec2.disassociateAddress(request);
Formation AWS Boto
27
![Page 28: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/28.jpg)
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);
Formation AWS Boto
28
![Page 29: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/29.jpg)
EBS# créer un volume de 2Go
CreateSnapshotRequest request = new CreateSnapshotRequest(volId, 'description');
CreateSnapshotResult res = ec2.createSnapshot(request);
Snapshot snap = res.getSnapshot();
Formation AWS Boto
29
![Page 30: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/30.jpg)
S3
Formation AWS Boto
30
![Page 31: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/31.jpg)
Connexion à S3AmazonS3 s3 = new AmazonS3Client(new ClasspathPropertiesFileCredentialsProvider());
Formation AWS Boto
31
![Page 32: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/32.jpg)
Créer un bucket# créer un bucket
CreateBucketRequest request = new CreateBucketRequest(bucket);
Bucket b = s3.createBucket(request);
Formation AWS Boto
32
![Page 33: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/33.jpg)
Lister les bucketsListBucketsRequest 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);
}
Formation AWS Boto
33
![Page 34: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/34.jpg)
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);
Formation AWS Boto
34
![Page 35: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/35.jpg)
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"));
Formation AWS Boto
35
![Page 36: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/36.jpg)
Lister le contenu d'un bucketListObjectRequest request = new ListObjectRequest().withBucketName('toto');
ObjectListing res = S3.listObject(request);
List<S3ObjectSummary> summaries = res.getObjectSummaries();
Formation AWS Boto
36
![Page 37: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/37.jpg)
ELB
Formation AWS Boto
37
![Page 38: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/38.jpg)
Connexion à ELBAmazonElasticLoadBalancing elb = new AmazonElasticloadBalancing(provider);
Formation AWS Boto
38
![Page 39: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/39.jpg)
Définir un HealthCheck# un check toutes les 20s
# sur la ressource HTTP:8080/health
# 3 checks réussis => ressource active
# 5 checks échoués => ressource inactive
HealthCheck hc = new HealthCheck('HTTP:8080/health',
20, 20, 5, 3);
Formation AWS Boto
39
![Page 40: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/40.jpg)
Création d'un load balancerList<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);
Formation AWS Boto
40
![Page 41: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/41.jpg)
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)
Formation AWS Boto
41
![Page 42: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/42.jpg)
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);
Formation AWS Boto
42
![Page 43: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/43.jpg)
Retirer des instances à un LB# retirer des instances
DeregisterInstancesFromLoadBalancerRequest request = new DeregisterInstancesFromLoadBalancerRequest('lb1', instances);
elb.deregisterInstancesFromLoadBalancer(request);
Formation AWS Boto
43
![Page 44: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/44.jpg)
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) ;
Formation AWS Boto
44
![Page 45: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/45.jpg)
Détruire un Load BalancerDeleteLoadBalancerRequest request = new DeleteLoadBalancerRequest('lb1');
elb.deleteLoadBalancer(request);
Formation AWS Boto
45
![Page 46: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/46.jpg)
SQS
Formation AWS Boto
46
![Page 47: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/47.jpg)
Connexion à SQSAmazonSQS sqs = new AmazonSQSClient(provider);
Formation AWS Boto
47
![Page 48: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/48.jpg)
Création d'une fileCreateQueueRequest 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/443252058477/tasks
Formation AWS Boto
48
![Page 49: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/49.jpg)
Récupérer une file# lister l'ensemble des files
ListQueuesRequest request = new ListQueuesRequest();
ListQueuesResult res = sqs.listQueues(request);
List<String> qUrls = res.getQueuesUrls();
Formation AWS Boto
49
![Page 50: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/50.jpg)
Envoi d'un messageString message = 'xxxxx';
SendMessageRequest request = new SendMessageRequest(qUrls, message);
sqs.sendMessage(request);
Formation AWS Boto
50
![Page 51: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/51.jpg)
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()
Formation AWS Boto
51
![Page 52: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/52.jpg)
Consommer un message (3)# récupérer un message
ReceiveMessageRequest request = new ReceiveMessageRequest(qUrls).withMaxNumberOfMessages(20);
ReceiveMessageResult res = sqs.receiveMessage(request);
List<Messages> messages = res.getMessages();
# afficher le contenu du message
System.out.println(messages.get(0).getBody());
Formation AWS Boto
52
![Page 53: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/53.jpg)
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());
Formation AWS Boto
53
![Page 54: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/54.jpg)
Détruire notre file# destruction
DeleteQueueRequest request = new DeleteQueueRequest(qUrls);
sqs.deleteQueue(request);
Formation AWS Boto
54
![Page 55: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/55.jpg)
SimpleDB
Formation AWS Boto
55
![Page 56: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/56.jpg)
Connexion à SimpleDB
AmazonSimpleDB sdb = new AmazonSimpleDB(provider);
Formation AWS Boto
56
![Page 57: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/57.jpg)
Création d'un domaineCreateDomainRequest request = new CreateDomainRequest('domain1');
sdb.createDomain(request);
# lister les domaines
ListDomainsResult res = sdb.listDomain(new ListDomainsRequest());
List<Strings> names = res.getDomainNames();
Formation AWS Boto
57
![Page 58: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/58.jpg)
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());
Formation AWS Boto
58
![Page 59: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/59.jpg)
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}})
Formation AWS Boto
59
![Page 60: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/60.jpg)
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);
Formation AWS Boto
60
![Page 61: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/61.jpg)
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());
}
Formation AWS Boto
61
![Page 62: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/62.jpg)
Alternatives
Formation AWS Boto
62
![Page 63: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/63.jpg)
Boto• Bibliothèque Python• SDK officiel Python• Beaucoup moins verbeux !
Formation AWS Boto
63
![Page 64: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/64.jpg)
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
Formation AWS Boto
64
![Page 65: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/65.jpg)
Libcloud (2)• Plus de 26 fournisseurs supportés
• AWS, Rackspace, Eucalyptus, OpenStack, OpenNebula, CloudSigma, Google Storage, Vsphere, Gandi.net, etc...
Formation AWS Boto
65
https://libcloud.apache.org
![Page 66: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/66.jpg)
Deltacloud (1)
Formation AWS Boto
66
![Page 67: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/67.jpg)
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
Formation AWS Boto
67
![Page 68: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/68.jpg)
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 !
Formation AWS Boto
68
![Page 69: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/69.jpg)
Formation AWS Boto
69
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
http://fog.io/
![Page 70: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/70.jpg)
Formation AWS Boto
70
Bibliographie
![Page 71: Formation Introduction au AWS SDK Java. Formation AWSBoto 2](https://reader035.vdocuments.us/reader035/viewer/2022062318/551d9da5497959293b8d6fef/html5/thumbnails/71.jpg)
Mise en pratique
Formation AWS Boto
71