List of usage examples for com.amazonaws.services.ec2.model CopySnapshotRequest getSourceSnapshotId
public String getSourceSnapshotId()
The ID of the EBS snapshot to copy.
From source file:com.pearson.eidetic.aws.EC2ClientMethods.java
public static CopySnapshotResult copySnapshot(AmazonEC2Client ec2Client, CopySnapshotRequest snapshotRequest, Integer numRetries, Integer maxApiRequestsPerSecond, String uniqueAwsAccountIdentifier) { CopySnapshotResult copySnapshotResult = null; if (numRetries >= 3) { numRetries = 3;// w ww .ja v a 2 s. c om } for (int i = 0; i <= numRetries; i++) { try { // if the initial download attempt failed, wait for i * 500ms if (i > 0) { long sleepTimeInMilliseconds = 500 * i; Threads.sleepMilliseconds(sleepTimeInMilliseconds); } AtomicLong requestAttemptCounter = GlobalVariables.apiRequestAttemptCountersByAwsAccount .get(uniqueAwsAccountIdentifier); long currentRequestCount = requestAttemptCounter.incrementAndGet(); while (currentRequestCount > maxApiRequestsPerSecond) { Threads.sleepMilliseconds(50); currentRequestCount = requestAttemptCounter.incrementAndGet(); } copySnapshotResult = ec2Client.copySnapshot(snapshotRequest); if (copySnapshotResult != null) { GlobalVariables.apiRequestCountersByAwsAccount.get(uniqueAwsAccountIdentifier) .incrementAndGet(); break; } } catch (Exception e) { if (e.toString().contains("20109") || e.toString().contains("Too many snapshot") || e.toString().contains("retired")) { return copySnapshotResult; } logger.error("awsAccountNickname=\"" + uniqueAwsAccountIdentifier + "\"," + snapshotRequest.toString() + System.lineSeparator() + e.toString() + System.lineSeparator() + StackTrace.getStringFromStackTrace(e)); } } logger.info("awsAccountNickname=\"" + uniqueAwsAccountIdentifier + "\",Event=\"Snapshot Copied\", source_region=\"" + snapshotRequest.getSourceRegion() + "\", destination_region=\"" + snapshotRequest.getDestinationRegion() + "\", source_snapshot_id=\"" + snapshotRequest.getSourceSnapshotId() + "\""); return copySnapshotResult; }