【问题标题】:create a snapshot to a EBS volume with tags使用标签创建 EBS 卷的快照
【发布时间】:2016-07-09 12:08:22
【问题描述】:

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    我可能迟到了,但你可以使用 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

    希望这会有所帮助!

    【讨论】:

    • 非常有用。感谢分享
    【解决方案2】:

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

    【讨论】:

    • AmazonEC2Client 的 createTags 方法成功了。非常感谢!!
    【解决方案3】:

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

    【讨论】:

    • 感谢您的回答。 createSnapshot() 只是创建一个快照。如果可能的话,请您提供第二个 API 调用的代码 sn-p。
    【解决方案4】:

    创建包含所有标签的参数可能会更好。 更多详情 例如:

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

    【讨论】:

      猜你喜欢
      • 2019-04-06
      • 2017-07-28
      • 2019-04-07
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多