Amazon web services 如何获取AmazonS3对象的最新版本ID?

Amazon web services 如何获取AmazonS3对象的最新版本ID?,amazon-web-services,amazon-s3,aws-sdk,Amazon Web Services,Amazon S3,Aws Sdk,给定一个有效的AmazonS3路径,指定要获取版本ID的bucket和文件,如何使用AWS SDK JAVA API获取最新版本ID 我试图在中搜索API,但没有找到返回VersionID的API 函数签名为字符串getLatestVersionID(字符串S3Path) Thx您可以通过调用该方法来设置版本Id值。以下是此操作的代码: package com.example.s3; // snippet-start:[s3.java2.getobjectdata.import] import

给定一个有效的AmazonS3路径,指定要获取版本ID的bucket和文件,如何使用AWS SDK JAVA API获取最新版本ID

我试图在中搜索API,但没有找到返回VersionID的API

函数签名为
字符串getLatestVersionID(字符串S3Path)


Thx

您可以通过调用该方法来设置版本Id值。以下是此操作的代码:

package com.example.s3;

// snippet-start:[s3.java2.getobjectdata.import]
import software.amazon.awssdk.core.ResponseBytes;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
import software.amazon.awssdk.services.s3.model.S3Exception;
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
// snippet-end:[s3.java2.getobjectdata.import]

/**
 * To run this AWS code example, ensure that you have setup your development environment, including your AWS credentials.
 *
 * For information, see this documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */

public class GetObjectData {

    public static void main(String[] args) {

     final String USAGE = "\n" +
                "Usage:\n" +
                "    GetObjectData <bucketName> <keyName> <path>\n\n" +
                "Where:\n" +
                "    bucketName - the Amazon S3 bucket name. \n\n"+
                "    keyName - the key name. \n\n"+
                "    path - the path where the file is written to. \n\n";

        if (args.length != 3) {
            System.out.println(USAGE);
            System.exit(1);
        }

        String bucketName = args[0];
        String keyName = args[1];
        String path = args[2];

        Region region = Region.US_EAST_1;
        S3Client s3 = S3Client.builder()
                .region(region)
                .build();

        getObjectBytes(s3,bucketName,keyName, path);
        s3.close();
    }

    // snippet-start:[s3.java2.getobjectdata.main]
    public static void getObjectBytes (S3Client s3, String bucketName, String keyName, String path ) {

        try {
            GetObjectRequest objectRequest = GetObjectRequest
                    .builder()
                    .key(keyName)
                    .versionId("<Set Version ID>")
                    .bucket(bucketName)
                    .build();

            ResponseBytes<GetObjectResponse> objectBytes = s3.getObjectAsBytes(objectRequest);
            byte[] data = objectBytes.asByteArray();

            // Write the data to a local file
            File myFile = new File(path );
            OutputStream os = new FileOutputStream(myFile);
            os.write(data);
            System.out.println("Successfully obtained bytes from an S3 object");
            os.close();

        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (S3Exception e) {
          System.err.println(e.awsErrorDetails().errorMessage());
           System.exit(1);
        }
        // snippet-end:[s3.java2.getobjectdata.main]
    }
}
package com.example.s3;
//代码段开始:[s3.java2.getobjectdata.import]
导入software.amazon.awssdk.core.ResponseBytes;
导入software.amazon.awssdk.regions.Region;
导入software.amazon.awssdk.services.s3.S3Client;
导入software.amazon.awssdk.services.s3.model.GetObjectRequest;
导入software.amazon.awssdk.services.s3.model.s3异常;
导入software.amazon.awssdk.services.s3.model.GetObjectResponse;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.OutputStream;
//代码段结尾:[s3.java2.getobjectdata.import]
/**
*要运行此AWS代码示例,请确保已设置开发环境,包括AWS凭据。
*
*有关信息,请参阅本文档主题:
*
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
*/
公共类GetObjectData{
公共静态void main(字符串[]args){
最终字符串用法=“\n”+
“用法:\n”+
“GetObjectData\n\n”+
“其中:\n”+
“bucketName-Amazon S3存储桶名称。\n\n”+
“keyName-密钥名。\n\n”+
“路径-文件写入的路径。\n\n”;
如果(参数长度!=3){
System.out.println(用法);
系统出口(1);
}
字符串bucketName=args[0];
字符串keyName=args[1];
字符串路径=args[2];
Region Region=Region.US\u EAST\u 1;
S3Client s3=S3Client.builder()
.地区(地区)
.build();
getObjectBytes(s3、bucketName、keyName、path);
s3.close();
}
//代码段开始:[s3.java2.getobjectdata.main]
公共静态void getObjectBytes(s3客户端s3,字符串bucketName,字符串keyName,字符串路径){
试一试{
GetObjectRequest objectRequest=GetObjectRequest
.builder()
.key(keyName)
.versionId(“”)
.bucket(bucketName)
.build();
ResponseBytes objectBytes=s3.getObjectAsBytes(objectRequest);
byte[]data=objectBytes.asByteArray();
//将数据写入本地文件
File myFile=新文件(路径);
OutputStream os=新文件OutputStream(myFile);
写(数据);
System.out.println(“从S3对象成功获取字节”);
os.close();
}捕获(IOEX异常){
例如printStackTrace();
}捕获(S3E例外){
System.err.println(例如awsErrorDetails().errorMessage());
系统出口(1);
}
//代码段结尾:[s3.java2.getobjectdata.main]
}
}

headObject
是您要查找的对象您好,我不需要设置版本id。我想获取最新的版本id。