将 Amazon S3 存储桶配置为网站 - 适用于 Java 的 AWS 开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Amazon S3 存储桶配置为网站

您可以配置 Amazon S3 存储桶,使其具有与网站类似的行为。要执行此操作,您需要设置其网站配置。

注意

这些代码示例假定您了解使用适用于 Java 的 AWS 开发工具包中的内容,并且已使用设置用于开发的 AWS 凭证和区域中的信息配置默认 AWS 凭证。

设置存储桶的网站配置

要设置 Amazon S3 存储桶的网站配置,请使用要设置配置的存储桶名称以及包含存储桶网站配置的 AmazonS3setWebsiteConfigurationBucketWebsiteConfiguration 对象来调用 的 方法。

设置索引文档是必需的;所有其他参数都是可选的。

导入

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.BucketWebsiteConfiguration;

代码

String bucket_name, String index_doc, String error_doc) { BucketWebsiteConfiguration website_config = null; if (index_doc == null) { website_config = new BucketWebsiteConfiguration(); } else if (error_doc == null) { website_config = new BucketWebsiteConfiguration(index_doc); } else { website_config = new BucketWebsiteConfiguration(index_doc, error_doc); } final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.setBucketWebsiteConfiguration(bucket_name, website_config); } catch (AmazonServiceException e) { System.out.format( "Failed to set website configuration for bucket '%s'!\n", bucket_name); System.err.println(e.getErrorMessage()); System.exit(1); }
注意

设置网站配置不会修改您的存储桶的访问权限。要使您的文件在 Web 上可见,您还需要设置一个存储桶策略,允许对存储桶中文件的公共读取访问权限。有关更多信息,请参阅使用存储桶策略管理对 Amazon S3 存储桶的访问

请参阅 上的完整示例GitHub。

获取存储桶的网站配置

要获取 Amazon S3 存储桶的网站配置,请使用要获取其配置的存储桶的名称来调用 AmazonS3 客户端的 getWebsiteConfiguration 方法。

该配置将作为 BucketWebsiteConfiguration 对象返回。如果该存储桶没有网站配置,则会返回 null

导入

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.BucketWebsiteConfiguration;

代码

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { BucketWebsiteConfiguration config = s3.getBucketWebsiteConfiguration(bucket_name); if (config == null) { System.out.println("No website configuration found!"); } else { System.out.format("Index document: %s\n", config.getIndexDocumentSuffix()); System.out.format("Error document: %s\n", config.getErrorDocument()); } } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.out.println("Failed to get website configuration!"); System.exit(1); }

请参阅 上的完整示例GitHub。

删除存储桶的网站配置

要删除 Amazon S3 存储桶的网站配置,请使用要从中删除配置的存储桶的名称来调用 AmazonS3 的 deleteWebsiteConfiguration 方法。

导入

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;

代码

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.deleteBucketWebsiteConfiguration(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.out.println("Failed to delete website configuration!"); System.exit(1); }

请参阅 上的完整示例GitHub。

更多信息