1

我想为带有“备份”标签的 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 来做到这一点。如果我错了,请纠正我。

谢谢

4

4 回答 4

3

我可能迟到了,但你可以使用 python 代替 java,它可以用几行代码以更好的方式解决你的目的。我找到了一个更好的 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

希望这可以帮助!

于 2018-07-06T19:23:25.813 回答
2

AmazonEC2Client 类有一个createTags方法,可以将标签分配给资源。如果您获取CreateSnapshotResult 的 SnapshotId并使用它来调用 createTags 方法,我认为您应该能够为快照分配一个标签。

于 2016-03-22T15:11:44.693 回答
1

您必须获取调用返回的快照 ID createSnapshot(),然后在另一个 API 调用中使用该 ID 在快照上创建标签。

于 2016-03-22T15:01:45.773 回答
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 实例对象以获取标签。

于 2018-06-11T14:01:33.420 回答