用pulumi.com和Java 17为一个静态网站配置一个公共S3桶:
import com.pulumi.Pulumi;
import com.pulumi.asset.FileAsset;
import com.pulumi.aws.s3.BucketObjectv2;
import com.pulumi.aws.s3.BucketObjectv2Args;
import com.pulumi.aws.s3.BucketV2;
import com.pulumi.aws.s3.BucketV2Args;
import com.pulumi.aws.s3.BucketWebsiteConfigurationV2;
import com.pulumi.aws.s3.BucketWebsiteConfigurationV2Args;
import com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationV2IndexDocumentArgs;
public static void main(String[] args) {
Pulumi.run(ctx -> {
......首先创建一个通用的桶:
var bucket = new BucketV2("Bucket", BucketV2Args.builder()
.bucket("pulumi.duke")
.forceDestroy(true)
.build());
...然后配置为网站。 index.html 的名称也被配置了:
var configuration = new BucketWebsiteConfigurationV2("Configuration",
BucketWebsiteConfigurationV2Args.builder()
.bucket(bucket.getId())
.indexDocument(BucketWebsiteConfigurationV2IndexDocumentArgs.builder()
.suffix("index.html").build())
.build());
现在要上传一个静态文件,这一步是完全可选的:
var object = new BucketObjectv2("Object",BucketObjectv2Args.builder()
.acl("public-read")
.bucket(bucket.getId())
.source(new FileAsset("./index.html"))
.key("index.html")
.contentType("text/html")
.build());
......并提供输出作为网站的域名:
ctx.export("bucketName", bucket.bucket());
ctx.export("cli", configuration.websiteEndpoint().applyValue(uri -> "curl " + uri));
});
}
看看从头开始的部署,包括现场部署(和错误:-))。