使用标签为 EBS 卷创建快照
create a snapshot to a EBS volume with tags
我想为带有标签的 EBS 卷创建快照 "backup. "我已经编写了一个方法来为 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 来做到这一点。如有不妥请指正
谢谢
您必须获取从调用 createSnapshot()
返回的快照 ID,然后在另一个 API 调用中使用该 ID 在快照上创建标签。
AmazonEC2Client class 有一个 createTags 方法可以将标签分配给资源。
如果你使用 SnapshotId of the CreateSnapshotResult 并使用它来调用 createTags 方法,我认为你应该能够为快照分配一个标签。
最好创建包含所有标签的参数。
更多详情
例如:
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 实例对象以获取标签。
我可能会迟到,但是您可以使用 python 而不是使用 java,它可以用几行代码以更好的方式解决您的问题。
我找到了一个更好的 Lambda 脚本,它根据 ec2 实例标签拍摄 EBS 卷(辅助卷)的快照。
例如,如果您的 ec2 实例有标签 "Backup:true"。将拍摄所有辅助卷的快照,并将为快照指定实例名称。
博客 Post - https://jee-appy.blogspot.com/2018/05/automated-ebs-volume-snapshot-lambda.html
演示 - https://www.youtube.com/watch?v=I9E9F8HD_7E
希望对您有所帮助!
我想为带有标签的 EBS 卷创建快照 "backup. "我已经编写了一个方法来为 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 来做到这一点。如有不妥请指正
谢谢
您必须获取从调用 createSnapshot()
返回的快照 ID,然后在另一个 API 调用中使用该 ID 在快照上创建标签。
AmazonEC2Client class 有一个 createTags 方法可以将标签分配给资源。 如果你使用 SnapshotId of the CreateSnapshotResult 并使用它来调用 createTags 方法,我认为你应该能够为快照分配一个标签。
最好创建包含所有标签的参数。 更多详情 例如:
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 实例对象以获取标签。
我可能会迟到,但是您可以使用 python 而不是使用 java,它可以用几行代码以更好的方式解决您的问题。 我找到了一个更好的 Lambda 脚本,它根据 ec2 实例标签拍摄 EBS 卷(辅助卷)的快照。
例如,如果您的 ec2 实例有标签 "Backup:true"。将拍摄所有辅助卷的快照,并将为快照指定实例名称。
博客 Post - https://jee-appy.blogspot.com/2018/05/automated-ebs-volume-snapshot-lambda.html
演示 - https://www.youtube.com/watch?v=I9E9F8HD_7E
希望对您有所帮助!