Java 使用AWS SDK以编程方式创建/恢复EBS快照的示例

Java 使用AWS SDK以编程方式创建/恢复EBS快照的示例,java,amazon-web-services,Java,Amazon Web Services,我在谷歌上找不到太多关于示例代码的信息,所有内容都显示了一个使用cli工具的示例 作为备份,如果我错了,请纠正我,这是我的(未测试) 据我所知,这将进入一个我无法控制的S3存储库。我假设我可以做一些类型的“列表快照”,并选择一个进行恢复 我希望能够使用快照恢复EBS,我发现了一些有关使用createVolume或类似工具从快照创建新EBS的信息。我想用特定快照还原当前EBS。有关创建快照的信息,请参阅以下内容: //来自本地: //I guess it's resolve

我在谷歌上找不到太多关于示例代码的信息,所有内容都显示了一个使用cli工具的示例

作为备份,如果我错了,请纠正我,这是我的(未测试)

据我所知,这将进入一个我无法控制的S3存储库。我假设我可以做一些类型的“列表快照”,并选择一个进行恢复


我希望能够使用快照恢复EBS,我发现了一些有关使用createVolume或类似工具从快照创建新EBS的信息。我想用特定快照还原当前EBS。

有关创建快照的信息,请参阅以下内容:

//来自本地:

            //I guess it's resolved from your end. But to help other. Below is the code to Create a snapshot from C# AWS SDK
            //Download AWSSDK.Core/AWSSDK.EC2/AWSSDK.S3 from nuget Package Manager and use the below code for reference
            IAmazonEC2 client = new AmazonEC2Client(awsAccessKeyId, SecretAccessKey, RegionEndpoint.APSouth1); 
            //Change Region end point based on your location
            CreateSnapshotsRequest createSnapshotsRequest = new CreateSnapshotsRequest();
            createSnapshotsRequest.InstanceSpecification = new InstanceSpecification
            {
                InstanceId = "instance id",
                ExcludeBootVolume = false
            };

            //tags can be added using below:
            //createSnapshotsRequest.TagSpecifications = new List<TagSpecification>
            //{
            //    new TagSpecification
            //    {
            //        Tags= new List<Tag>{
            //            new Tag
            //            {
            //                Key = tagKey,
            //                Value = tagValue
            //            }
            //        },
            //        ResourceType="snapshot"
            //    }
            //};

            var response = client.CreateSnapshots(createSnapshotsRequest);
            Console.WriteLine(response.HttpStatusCode);
            Console.WriteLine(response.Snapshots);


            //If you are running the app on EC2 then use below:
            //I guess it's resolved from your end. But to help other. Below is the code to Create a snapshot from C# AWS SDK
            //Download AWSSDK.Core/AWSSDK.EC2/AWSSDK.S3 from nuget Package Manager and use the below code for reference
            KeyValuePair<string, IAMSecurityCredentialMetadata> iamSecurityCredentialMetadata = EC2InstanceMetadata.IAMSecurityCredentials.FirstOrDefault();
            IAmazonEC2 client = new AmazonEC2Client(iamSecurityCredentialMetadata.Value.AccessKeyId, iamSecurityCredentialMetadata.Value.SecretAccessKey, iamSecurityCredentialMetadata.Value.Token, EC2InstanceMetadata.Region);
            CreateSnapshotsRequest createSnapshotsRequest = new CreateSnapshotsRequest();
            createSnapshotsRequest.InstanceSpecification = new InstanceSpecification
            {
                InstanceId = EC2InstanceMetadata.InstanceId,
                ExcludeBootVolume = false
            };

            //tags can be added using below:
            //createSnapshotsRequest.TagSpecifications = new List<TagSpecification>
            //{
            //    new TagSpecification
            //    {
            //        Tags= new List<Tag>{
            //            new Tag
            //            {
            //                Key = tagKey,
            //                Value = tagValue
            //            }
            //        },
            //        ResourceType="snapshot"
            //    }
            //};

            var response = client.CreateSnapshots(createSnapshotsRequest);
            Console.WriteLine(response.HttpStatusCode);
            Console.WriteLine(response.Snapshots);
//我想这已经从你这边解决了。而是帮助别人。下面是从C#AWS SDK创建快照的代码
//从nuget Package Manager下载AWSSDK.Core/AWSSDK.EC2/AWSSDK.S3,并使用以下代码作为参考
IAmazonEC2客户端=新的Amazonec2客户端(awsAccessKeyId,SecretAccessKey,RegionEndpoint.APSouth1);
//根据您的位置更改区域终点
CreateSnapshotsRequest CreateSnapshotsRequest=新建CreateSnapshotsRequest();
createSnapshotsRequest.InstanceSpecification=新InstanceSpecification
{
InstanceId=“实例id”,
ExcludeBootVolume=false
};
//可以使用以下方法添加标记:
//createSnapshotsRequest.TagSpecifications=新列表
//{
//新标签规范
//    {
//标签=新列表{
//新标签
//            {
//Key=tagKey,
//值=标记值
//            }
//        },
//ResourceType=“快照”
//    }
//};
var response=client.CreateSnapshots(createSnapshotsRequest);
Console.WriteLine(response.HttpStatusCode);
控制台.WriteLine(响应.快照);
//如果您在EC2上运行应用程序,请使用以下命令:
//我想这已经从你这边解决了。而是帮助别人。下面是从C#AWS SDK创建快照的代码
//从nuget Package Manager下载AWSSDK.Core/AWSSDK.EC2/AWSSDK.S3,并使用以下代码作为参考
KeyValuePair iamSecurityCredentialMetadata=EC2InstanceMetadata.IAMSecurityCredentials.FirstOrDefault();
IAmazonEC2客户端=新的AmazonEC2Client(iamSecurityCredentialMetadata.Value.AccessKeyId、iamSecurityCredentialMetadata.Value.SecretAccessKey、iamSecurityCredentialMetadata.Value.Token、EC2InstanceMetadata.Region);
CreateSnapshotsRequest CreateSnapshotsRequest=新建CreateSnapshotsRequest();
createSnapshotsRequest.InstanceSpecification=新InstanceSpecification
{
InstanceId=EC2InstanceMetadata.InstanceId,
ExcludeBootVolume=false
};
//可以使用以下方法添加标记:
//createSnapshotsRequest.TagSpecifications=新列表
//{
//新标签规范
//    {
//标签=新列表{
//新标签
//            {
//Key=tagKey,
//值=标记值
//            }
//        },
//ResourceType=“快照”
//    }
//};
var response=client.CreateSnapshots(createSnapshotsRequest);
Console.WriteLine(response.HttpStatusCode);
控制台.WriteLine(响应.快照);

您可以从快照创建新卷,但无法将快照恢复到现有卷中。您需要恢复到新卷、交换卷、删除旧卷。我知道,您是否有可能提供用于记录该过程的代码:)最好先停止实例,避免许多可能的操作系统问题,您想实现什么?我想自动化快照过程,还需要能够加载快照(使用sdk)你做到了吗?我尝试用从快照创建的新卷替换我的EC2卷,但它不允许我装载它。给了我以下错误,装载:/dev/xvdj受写保护,装载只读装载:错误的fs类型,错误的选项,/dev/xvdj上的错误超级块
            //I guess it's resolved from your end. But to help other. Below is the code to Create a snapshot from C# AWS SDK
            //Download AWSSDK.Core/AWSSDK.EC2/AWSSDK.S3 from nuget Package Manager and use the below code for reference
            IAmazonEC2 client = new AmazonEC2Client(awsAccessKeyId, SecretAccessKey, RegionEndpoint.APSouth1); 
            //Change Region end point based on your location
            CreateSnapshotsRequest createSnapshotsRequest = new CreateSnapshotsRequest();
            createSnapshotsRequest.InstanceSpecification = new InstanceSpecification
            {
                InstanceId = "instance id",
                ExcludeBootVolume = false
            };

            //tags can be added using below:
            //createSnapshotsRequest.TagSpecifications = new List<TagSpecification>
            //{
            //    new TagSpecification
            //    {
            //        Tags= new List<Tag>{
            //            new Tag
            //            {
            //                Key = tagKey,
            //                Value = tagValue
            //            }
            //        },
            //        ResourceType="snapshot"
            //    }
            //};

            var response = client.CreateSnapshots(createSnapshotsRequest);
            Console.WriteLine(response.HttpStatusCode);
            Console.WriteLine(response.Snapshots);


            //If you are running the app on EC2 then use below:
            //I guess it's resolved from your end. But to help other. Below is the code to Create a snapshot from C# AWS SDK
            //Download AWSSDK.Core/AWSSDK.EC2/AWSSDK.S3 from nuget Package Manager and use the below code for reference
            KeyValuePair<string, IAMSecurityCredentialMetadata> iamSecurityCredentialMetadata = EC2InstanceMetadata.IAMSecurityCredentials.FirstOrDefault();
            IAmazonEC2 client = new AmazonEC2Client(iamSecurityCredentialMetadata.Value.AccessKeyId, iamSecurityCredentialMetadata.Value.SecretAccessKey, iamSecurityCredentialMetadata.Value.Token, EC2InstanceMetadata.Region);
            CreateSnapshotsRequest createSnapshotsRequest = new CreateSnapshotsRequest();
            createSnapshotsRequest.InstanceSpecification = new InstanceSpecification
            {
                InstanceId = EC2InstanceMetadata.InstanceId,
                ExcludeBootVolume = false
            };

            //tags can be added using below:
            //createSnapshotsRequest.TagSpecifications = new List<TagSpecification>
            //{
            //    new TagSpecification
            //    {
            //        Tags= new List<Tag>{
            //            new Tag
            //            {
            //                Key = tagKey,
            //                Value = tagValue
            //            }
            //        },
            //        ResourceType="snapshot"
            //    }
            //};

            var response = client.CreateSnapshots(createSnapshotsRequest);
            Console.WriteLine(response.HttpStatusCode);
            Console.WriteLine(response.Snapshots);