要解决此问题,需在 AWS 请求中包含最新的安全令牌。以下是使用 AWS Java SDK 更新令牌的示例代码:
import com.amazonaws.auth.BasicSessionCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.s3.model.S3ObjectInputStream;
public class S3Example {
private static final String ACCESS_KEY = "YOUR_ACCESS_KEY";
private static final String SECRET_KEY = "YOUR_SECRET_KEY";
private static final String SESSION_TOKEN = "YOUR_SESSION_TOKEN";
public static void main(String[] args) {
BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(ACCESS_KEY, SECRET_KEY, SESSION_TOKEN);
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(sessionCredentials))
.withRegion(Regions.US_EAST_1)
.build();
S3Object s3Object = s3Client.getObject("my-bucket-name", "my-object-key");
S3ObjectInputStream inputStream = s3Object.getObjectContent();
// Do something with the input stream
inputStream.close();
}
}
在代码中使用 BasicSessionCredentials 类创建新令牌对象,并将其添加到 AmazonS3ClientBuilder 对象中。然后使用该对象创建 AmazonS3 客户端。在请求中使用从此客户端获得的新令牌,可以避免出现“安全令牌已过期”的错误。