本文整理汇总了Java中com.amazonaws.services.ec2.model.DescribeSnapshotsResult.getSnapshots方法的典型用法代码示例。如果您正苦于以下问题:Java DescribeSnapshotsResult.getSnapshots方法的具体用法?Java DescribeSnapshotsResult.getSnapshots怎么用?Java DescribeSnapshotsResult.getSnapshots使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.amazonaws.services.ec2.model.DescribeSnapshotsResult
的用法示例。
在下文中一共展示了DescribeSnapshotsResult.getSnapshots方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: attachSnapshotTags
import com.amazonaws.services.ec2.model.DescribeSnapshotsResult; //导入方法依赖的package包/类
void attachSnapshotTags(AmazonEC2Async client, String sourceSnapshotId, String snapshotId) {
DescribeSnapshotsResult result = client
.describeSnapshots(new DescribeSnapshotsRequest().withSnapshotIds(sourceSnapshotId));
List<Snapshot> snapshots = result.getSnapshots();
if (snapshots.size() != 1) {
throw new RuntimeException("snapshot can not found. sourceSnapshotId[" + snapshotId + "]");
}
List<Tag> sourceSnapshotTags = snapshots.get(0).getTags();
List<Tag> tags = new ArrayList<Tag>();
tags.addAll(sourceSnapshotTags);
tags.add(new Tag("SourceSnapshotId", sourceSnapshotId));
tags.add(new Tag("BackupType", "copy-snapshot")); // overwrite
CreateTagsRequest snapshotTagsRequest = new CreateTagsRequest().withResources(snapshotId);
snapshotTagsRequest.setTags(tags);
client.createTags(snapshotTagsRequest);
}
示例2: describeSnapshots
import com.amazonaws.services.ec2.model.DescribeSnapshotsResult; //导入方法依赖的package包/类
@Override
public List<AbstractResource<?>> describeSnapshots(Account account, Region region, DateTime dt, Ec2Filter... filters) {
AmazonEC2 ec2 = findClient(account, region);
DescribeSnapshotsRequest req = new DescribeSnapshotsRequest();
for (Ec2Filter filter : filters) {
Filter f = new Filter().withName(filter.getName()).withValues(filter.getValues());
req.withFilters(f);
}
log.debug("start describing snapshots for account:{} in region:{} via api", account.getId() + "=>" + account.getName(), region);
DescribeSnapshotsResult res = ec2.describeSnapshots(req);
List<List<CreateVolumePermission>> createVolumePermissions = new ArrayList<>();
List<List<ProductCode>> productCodes = new ArrayList<>();
for (Snapshot snapShot : res.getSnapshots()) {
productCodes.add(findSnapshotProductCodes(account, region, snapShot.getSnapshotId()));
createVolumePermissions.add(findCreateVolumePermissions(account, region, snapShot.getSnapshotId()));
}
return converter.toEc2Snapshots(res.getSnapshots(), createVolumePermissions, productCodes, account.getId(), region, dt);
}
示例3: pargeEbsSnapshot
import com.amazonaws.services.ec2.model.DescribeSnapshotsResult; //导入方法依赖的package包/类
void pargeEbsSnapshot(AmazonEC2Async client, String volumeId, int generationCount, Context context) {
LambdaLogger logger = context.getLogger();
logger.log("Parge snapshot start. VolumeId[" + volumeId + "] generationCount[" + generationCount + "]");
List<Filter> filters = new ArrayList<>();
filters.add(new Filter().withName("volume-id").withValues(volumeId));
filters.add(new Filter().withName("tag:VolumeId").withValues(volumeId));
filters.add(new Filter().withName("tag:BackupType").withValues("snapshot"));
DescribeSnapshotsRequest snapshotRequest = new DescribeSnapshotsRequest().withFilters(filters);
DescribeSnapshotsResult snapshotResult = client.describeSnapshots(snapshotRequest);
List<Snapshot> snapshots = snapshotResult.getSnapshots();
Collections.sort(snapshots, new SnapshotComparator());
int snapshotSize = snapshots.size();
if (generationCount < snapshotSize) {
for (int i = 0; i < snapshotSize - generationCount; i++) {
Snapshot snapshot = snapshots.get(i);
if (SnapshotState.Completed.toString().equals(snapshot.getState())) {
String snapshotId = snapshot.getSnapshotId();
pargeSnapshot(client, snapshotId);
logger.log("Parge EBS snapshot. snapshotId[" + snapshotId + "] volumeId[" + volumeId + "]");
}
}
}
}
示例4: describeSnapshot
import com.amazonaws.services.ec2.model.DescribeSnapshotsResult; //导入方法依赖的package包/类
private List<Snapshot> describeSnapshot(AmazonEC2Async client, String imageId, Context context) {
Filter filter = new Filter().withName("description")
.withValues("Created by CreateImage(*) for " + imageId + " from *");
DescribeSnapshotsRequest request = new DescribeSnapshotsRequest().withFilters(filter);
DescribeSnapshotsResult result = client.describeSnapshots(request);
return result.getSnapshots();
}
示例5: pargeEbsSnapshot
import com.amazonaws.services.ec2.model.DescribeSnapshotsResult; //导入方法依赖的package包/类
void pargeEbsSnapshot(AmazonEC2Async client, String sourceSnapshotId, String snapshotId, int generationCount,
Context context) {
LambdaLogger logger = context.getLogger();
logger.log(
"Parge snapshot start. SnapshotId[" + sourceSnapshotId + "] generationCount[" + generationCount + "]");
// get volumeId from tags
String volumeId = getVolumeIdFromTag(client, snapshotId);
// describe filter tag VolumeId
List<Filter> filters = new ArrayList<>();
filters.add(new Filter().withName("tag:VolumeId").withValues(volumeId));
filters.add(new Filter().withName("tag:BackupType").withValues("copy-snapshot"));
DescribeSnapshotsRequest snapshotRequest = new DescribeSnapshotsRequest().withFilters(filters);
DescribeSnapshotsResult snapshotResult = client.describeSnapshots(snapshotRequest);
// snapshot作成開始日でソートします。(古い→新しい)
List<Snapshot> snapshots = snapshotResult.getSnapshots();
Collections.sort(snapshots, new SnapshotComparator());
// 世代管理保持数 < snapshotの数の場合、対象をpargeします。
int snapshotSize = snapshots.size();
if (generationCount < snapshotSize) {
for (int i = 0; i < snapshotSize - generationCount; i++) {
Snapshot snapshot = snapshots.get(i);
// (念のため)snapshotのステータスが完了しているものだけをparge対象とする。
if (SnapshotState.Completed.toString().equals(snapshot.getState())) {
String pargeSnapshotId = snapshot.getSnapshotId();
pargeSnapshot(client, pargeSnapshotId);
logger.log("Parge EBS snapshot. snapshotId[" + pargeSnapshotId + "]");
}
}
}
}
示例6: copySnapshotFromVolumeId
import com.amazonaws.services.ec2.model.DescribeSnapshotsResult; //导入方法依赖的package包/类
/**
* Find the snapshot the volumeId the key, to get a copy of the latest
* Snapshot
*
* @param volumeIdRequest
* VolumeIdRequest
* @param context
* Context
*/
public void copySnapshotFromVolumeId(VolumeIdRequest volumeIdRequest, Context context) {
LambdaLogger logger = context.getLogger();
String regionName = System.getenv("AWS_DEFAULT_REGION");
AmazonEC2Async client = RegionUtils.getRegion(regionName).createClient(AmazonEC2AsyncClient.class,
new DefaultAWSCredentialsProviderChain(), cc);
try {
String volumeId = volumeIdRequest.getVolumeId();
boolean isLockAcquisition = new LambdaLock().lock(volumeId, context);
if (!isLockAcquisition) {
logger.log("[ERROR][EBSCopySnapshot][" + volumeId + "]You can not acquire a lock.");
return;
}
List<Filter> filters = new ArrayList<>();
filters.add(new Filter().withName("volume-id").withValues(volumeId));
filters.add(new Filter().withName("tag:VolumeId").withValues(volumeId));
filters.add(new Filter().withName("tag:BackupType").withValues("snapshot"));
DescribeSnapshotsRequest snapshotRequest = new DescribeSnapshotsRequest().withFilters(filters);
DescribeSnapshotsResult snapshotResult = client.describeSnapshots(snapshotRequest);
// sort and get latest snapshot
List<Snapshot> snapshots = snapshotResult.getSnapshots();
Collections.sort(snapshots, new SnapshotComparator());
int snapshotsSize = snapshots.size();
if (snapshotsSize == 0) {
throw new RuntimeException("The copy source snapshot can not be found");
}
Snapshot snapshot = snapshots.get(snapshots.size() - 1);
String sourceSnapshotId = snapshot.getSnapshotId();
copySnapshot(sourceSnapshotId, volumeIdRequest.getDestinationRegion(), volumeIdRequest.getGenerationCount(),
context);
} catch (Exception e) {
logger.log("[ERROR][EBSCopySnapshot][" + volumeIdRequest.getVolumeId() + "] message[" + e.getMessage()
+ "] stackTrace[" + getStackTrace(e) + "]");
} finally {
client.shutdown();
}
}
示例7: deleteStorageArtifacts
import com.amazonaws.services.ec2.model.DescribeSnapshotsResult; //导入方法依赖的package包/类
/**
* Find the snap & volumes associated with the AMI we used and delete it.
* AWS doesn't help us out much and the only relationship (as of 2/14/2015)
* we can leverage is the description field.
*
* @param ami
* to find associated snaps for
* @throws ServiceBrokerExceptions
*/
public void deleteStorageArtifacts(String ami)
throws ServiceBrokerException {
DescribeSnapshotsResult desc = ec2Client.describeSnapshots();
if (null == desc.getSnapshots()) {
return;
}
List<Snapshot> snapshots = desc.getSnapshots();
// The only way I can find to track the snaps that get created (but not
// cleaned up) as part of the ami creation is by the description. This
// code is brittle and will probably fail in unexpected and glamorous
// ways.
String amiDesc = "Created by CreateImage(" + sourceInstanceId
+ ") for " + ami + " from vol";
// Would be nice if the aws client return optionals...
List<Snapshot> matching = snapshots.stream()
.filter(s -> safeContains(s::getDescription, amiDesc))
.collect(Collectors.toList());
switch (matching.size()) {
case 0:
// Should this throw? Might have been manually cleaned up...but it
// may orphan the volume. It's done this way to allow people to
// create their own instances in AWS and not jack them up by
// deleting the volume
log.error("No snapshots found for AMI " + ami);
break;
case 1:
String snap = matching.get(0).getSnapshotId();
log.info("Deleting snapshot " + snap);
ec2Client.deleteSnapshot(new DeleteSnapshotRequest()
.withSnapshotId(snap));
deleteVolumeForSnap(snap);
break;
default:
throw new ServiceBrokerException(
"Found too many snapshots for AMI " + ami);
}
}
示例8: doCall
import com.amazonaws.services.ec2.model.DescribeSnapshotsResult; //导入方法依赖的package包/类
@Override
protected Boolean doCall() {
LOGGER.info("Checking if AWS EBS snapshot '{}' is ready.", snapshotId);
DescribeSnapshotsResult result = ec2Client.describeSnapshots(new DescribeSnapshotsRequest().withSnapshotIds(snapshotId));
return result.getSnapshots() != null && !result.getSnapshots().isEmpty() && "completed".equals(result.getSnapshots().get(0).getState());
}