man*_*urt 9 amazon-web-services terraform
我正在使用模块创建存储桶,如何找到该存储桶的 ARN?
创建模块
module "testbucket" {
source = "github.com/tomfa/terraform-sandbox/s3-webfiles-bucket"
aws_region = "${var.aws_region}"
aws_access_key = "${var.aws_access_key}"
aws_secret_key = "${var.aws_secret_key}"
bucket_name = "${var.bucket_name}-test"
}
Run Code Online (Sandbox Code Playgroud)
然后,当我调用该策略时,我需要访问 ARN
{
"Sid": "accessToS3",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"${aws_s3_bucket.${var.bucket_name}.arn}",
]
}
Run Code Online (Sandbox Code Playgroud)
我没有引用 ARN,因此出现错误:
错误:资源“aws_iam_role_policy.policy_Demo_lambda”配置:变量 aws_s3_bucket.mybukk.arn 中引用了未知资源“aws_s3_bucket.mybukk”
如何访问我的 ARN?谢谢
您的模块需要有一个outputs.tf 文件,如下所示:
output "bucket_arn" {
value = "${aws_s3_bucket.RESOURCE_NAME.arn}"
}
Run Code Online (Sandbox Code Playgroud)
请注意,您必须将 RESOURCE_NAME 替换为 terraform S3 存储桶资源的名称。
例如,如果您的资源如下所示:resource "aws_s3_bucket" "b" {...那么您需要将 RESOURCE_NAME 替换为 b
那么你可以在你的策略中调用它:
{
"Sid": "accessToS3",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"${module.testbucket.bucket_arn}",
]
}
Run Code Online (Sandbox Code Playgroud)
小智 5
###执行 terraform apply 后可以通过两种方式完成:
在工作目录中创建一个名为outputs.tf 的文件。在该文件中,您可以使用以下两种方法之一。
1 - 如果您已经定义了该资源的变量:
output "S3-Bucket-Name" {
value = "${var.bucket_name.arn}"
}
Run Code Online (Sandbox Code Playgroud)
2 - 如果你想直接调用资源:
output "S3-Bucket-Name" {
value = "${aws_s3_bucket.bucket_name.arn}"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20359 次 |
| 最近记录: |