我想为标签为“备份”的EBS卷创建快照。我已经编写了一种方法来为EBS卷创建快照。正在正确创建快照。然而,快照没有任何标签。方法如下。
public Snapshot createEbsSnapshot(String volumeId)
throws IOException {
logger.log("============Creating snapshot for a volume: " + volumeId +" ==============");
String description = "This is a snapshot created by using AWS-Java SDK";
CreateSnapshotRequest snapshotRequest = new CreateSnapshotRequest(
volumeId, description);
CreateSnapshotResult snapshotResult = ec2Client
.createSnapshot(snapshotRequest);
Snapshot snapshot = snapshotResult.getSnapshot();
logger.log("============Snapshot creation for a volume: " + volumeId +" is done.==============");
return snapshot;
}
我不确定我们是否可以使用aws-java sdk来做到这一点。如果我错了,请纠正我。
谢谢
答案 0 :(得分:3)
我可能参加聚会晚了,但是除了使用Java之外,您还可以使用python,它可以用几行代码和更好的方式解决您的目的。 我发现了一个更好的Lambda脚本,该脚本基于ec2实例标签来获取EBS卷(第二卷)的快照。
例如,如果您的ec2实例具有标签“ Backup:true”。将为所有辅助卷创建快照,并为快照指定实例名称。
博客文章-https://jee-appy.blogspot.com/2018/05/automated-ebs-volume-snapshot-lambda.html
演示-https://www.youtube.com/watch?v=I9E9F8HD_7E
希望这会有所帮助!
答案 1 :(得分:2)
AmazonEC2Client类有一个createTags方法,可以为资源分配标记。 如果您使用SnapshotId of the CreateSnapshotResult并使用它来调用createTags方法,我认为您应该能够为快照分配标记。
答案 2 :(得分:1)
您必须将从调用返回的快照ID转移到createSnapshot()
,然后在另一个API调用中使用该ID在快照上创建标记。
答案 3 :(得分:1)
最好使用其中的所有标记创建参数。 更多细节 例如:
let snapshotParams = {
DryRun : false,
VolumeId : vol-123abc, //ID of the volume
TagSpecifications: [{
ResourceType: 'snapshot',
Tags: [
{
Key: 'ServerName',
Value: 'Server123'
}, {
Key: 'Department',
Value: 'Accounting'
}
]//this can be obtained by the instance object
}]
}
ec2.createSnapshot(snapshotParams,(err,data)=>{
if(err){
console.log(err, err.stack)
} else {
console.log(data)
}
}
您可以创建一个函数并遍历您的ec2实例对象以获取标记。