将 Amazon S3 桶配置为网站 - AWS SDK for Java 1.x

我们宣布了即将推出 end-of-support 的 AWS SDK for Java (v1)。建议您迁移到 AWS SDK for Java v2。有关日期、其他详细信息以及如何迁移的信息,请参阅链接的公告。

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

将 Amazon S3 桶配置为网站

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

注意

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

设置存储桶的网站配置

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

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

导入

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 上的完整示例

更多信息