如何使用 Terraform 获取 URL S3 对象?

Evg*_*gol 1 linux amazon-s3 terraform

我使用 Terraform 将文件上传到 S3 存储桶中。如何获取其 URL,如 S3://bucket/object?

我要使用

output "my_bucket_file_version" {
  value = aws_s3_bucket_object.object.version_id
}
Run Code Online (Sandbox Code Playgroud)

但我想这不会起作用。

Mar*_*ins 6

s3://实际上并不在 S3 API 中表示,而是在一些使用 S3 存储桶的工具中的 UI 级别详细信息。由于hashicorp/awsTerraform 的提供程序很大程度上只是反映底层 API 的详细信息,因此它目前没有任何提供现成s3://URI 的属性。

然而,此 URI 约定具有记录的结构,因此可以从以下部分构建它:

  • 文字s3://前缀
  • 桶名
  • 文字/用于分隔对象键的
  • 对象键

要构建它,您需要 S3 存储桶名称和对象密钥。资源aws_s3_bucket_object类型包括这两个属性:

output "object_s3_uri" {
  value = "s3://${aws_s3_bucket_object.object.bucket}/${aws_s3_bucket_object.object.key}"
}
Run Code Online (Sandbox Code Playgroud)

URL 方案的文档s3://没有提及如何引用对象的特定版本,因此我认为不可能为特定对象版本构造URI