使用标记

时间:2016-03-22 14:30:24

标签: java aws-lambda aws-java-sdk

我想为标签为“备份”的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 个答案:

答案 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实例对象以获取标记。