Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建带标记的EBS卷的快照_Java_Aws Lambda_Aws Java Sdk - Fatal编程技术网

Java 创建带标记的EBS卷的快照

Java 创建带标记的EBS卷的快照,java,aws-lambda,aws-java-sdk,Java,Aws Lambda,Aws Java Sdk,我想为EBS卷创建一个标签为“备份”的快照。我已经编写了一个方法来为EBS卷创建快照。正在正确创建快照。但是,快照没有任何标记。方法如下 public Snapshot createEbsSnapshot(String volumeId) throws IOException { logger.log("============Creating snapshot for a volume: " + volumeId +" =============="); S

我想为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来实现这一点。如果我错了,请纠正我


谢谢

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

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

AmazonEC2Client类有一个方法可以将标记分配给资源。
如果您使用并使用该方法调用createTags方法,我认为您应该能够将标记分配给快照。

AmazonEC2Client类有一个可以将标记分配给资源的方法。
如果您使用并使用该方法调用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实例对象以获得标记

最好创建包含所有标记的参数。 更多详情 例如:

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实例对象以获得标记

我可能会在聚会上迟到,但你可以不用java,而是用python,它只需几行代码,就能更好地解决你的问题。 我发现了一个更好的Lambda脚本,它基于ec2实例标记获取EBS卷(辅助卷)的快照

例如,如果您的ec2实例具有标记“Backup:true”。将拍摄所有辅助卷的快照,并为快照提供实例名称

博文-

演示-


希望这有帮助

我可能会在聚会上迟到,但你可以不用java,而是用python,它只需几行代码,就能更好地解决你的问题。 我发现了一个更好的Lambda脚本,它基于ec2实例标记获取EBS卷(辅助卷)的快照

例如,如果您的ec2实例具有标记“Backup:true”。将拍摄所有辅助卷的快照,并为快照提供实例名称

博文-

演示-


希望这有帮助

AmazonEC2Client的createTags方法完成了这一任务。非常感谢你!!AmazonEC2Client的createTags方法完成了这一任务。非常感谢你!!谢谢你的回答。createSnapshot()只创建一个快照。如果可能的话,请为我提供第二个API调用的代码片段。谢谢回答。createSnapshot()只创建一个快照。如果可能的话,你可以为我提供第二个API调用的代码片段。非常有用。谢谢分享,非常有用。谢谢分享