Allow for custom_iam_policy_arns that are unknown during terraform apply
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- aws, terraform
- Lĩnh vực
- cloud, infrastructure
Hướng nghiên cứu
Bắt đầu với resource được tạo aws_iam_role_policy_attachment.custom trong iam-role.tf ở dòng 89 và kiểm tra cách local.custom_iam_policy_arns_map được sử dụng trong for_each. Tái hiện cấu hình mẫu, sau đó xác minh rằng plan và apply có thể xử lý một policy ARN chỉ khả dụng tại thời điểm apply và tạo policy attachment cùng với Lambda role.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the Bug
Getting below mentioned error:
╷
│ Error: Invalid for_each argument
│
│ on .terraform\modules\data_science_lambda.data_science_lambda\iam-role.tf line 89, in resource "aws_iam_role_policy_attachment" "custom":
│ 89: for_each = local.enabled ? local.custom_iam_policy_arns_map : {}
│ ├────────────────
│ │ local.custom_iam_policy_arns_map will be known only after apply
│ │ local.enabled is true
│
│ The "for_each" map includes keys derived from resource attributes that
│ cannot be determined until apply, and so Terraform cannot determine the
│ full set of keys that will identify the instances of this resource.
│
│ When working with unknown values in for_each, it's better to define the map
│ keys statically in your configuration and place apply-time results only in
│ the map values.
│
│ Alternatively, you could use the -target planning option to first apply
│ only the resources that the for_each value depends on, and then apply a
│ second time to fully converge.
╵
=====================================================
Expected Behavior
Policy should be created and alingned with Lambda role at runtime along with AWS Lambda function
Steps to Reproduce
Sample Code:
locals {
enabled = module.this.enabled
custom_iam_policy_arns = [ aws_iam_policy.custom_s3_policy.arn ]
s3_lambda_environment = var.abc_lambda_env == null ? null : { variables = var.abc_lambda_env }
}
data "aws_iam_policy_document" "custom_s3_policy" {
version = "2012-10-17"
statement {
actions = [
"s3:ListBucket"
]
resources = [
"arn:aws:s3:::${data.terraform_remote_state.abc_bucket_id.outputs.bucket_id}"
]
}
statement {
actions = [
"secretsmanager:DescribeSecret",
"secretsmanager:GetSecretValue",
"secretsmanager:ListSecrets",
"secretsmanager:ListSecretVersionIds"
]
resources = [
"*"
]
}
}
resource "aws_iam_policy" "custom_s3_policy" {
name = "${module.this.id}-access-policy"
description = "Custom policy to allow access to one S3 bucket only."
policy = data.aws_iam_policy_document.custom_s3_policy.json
tags = module.this.tags
}
data "terraform_remote_state" "abc_bucket_id" {
backend = "s3"
config = {
bucket = var.abc_tfstate_bucket_name
key = var.abc_s3_bucket_key
region = "XXX"
}
}
module "abc_lambda" {
source = "cloudposse/lambda-function/aws"
version = "0.5.5"
enabled = true
function_name = "${module.this.id}"
description = "Lambda test."
s3_bucket = var.s3_lambda_s3_bucket
s3_key = var.s3_lambda_s3_key
runtime = var.s3_lambda_runtime
handler = var.s3_lambda_handler
lambda_environment = local.s3_lambda_environment
architectures = ["x86_64"]
memory_size = var.s3_lambda_memory_size
ephemeral_storage_size = var.s3_lambda_storage_size
timeout = var.s3_lambda_timeout
custom_iam_policy_arns = local.custom_iam_policy_arns
context = module.this.context
vpc_config = var.abc_lambda_vpc_config
}
resource "aws_lambda_permission" "allow_s3" {
statement_id = "AllowExecutionFromS3"
action = "lambda:InvokeFunction"
function_name = module.abc_lambda.function_name
principal = "s3.amazonaws.com"
source_arn = data.terraform_remote_state.abc_bucket_id.outputs.bucket_arn
}
Screenshots
No response
Environment
No response
Additional Context
No response
- Ngôn ngữ chính
- HCL
- Star
- 36
- Fork
- 44
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của cloudposse/terraform-aws-lambda-function
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 58/100
-
Warning: Deprecated attributeCó thể đã có người làm @arnoldasbrazys đã nhận 405 ngày trước. Đang mởbug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 55/100
cloudposse/terraform-aws-lambda-function#89 · 1 reaction ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
cloudposse/terraform-aws-lambda-function#84 · 3 reaction ·
-
Churn with `aws_iam_role.this`Đang mởbug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
cloudposse/terraform-aws-lambda-function#62 · 1 bình luận ·
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 55/100
cloudposse/terraform-aws-lambda-function#43 · 2 bình luận · 4 reaction ·
Tất cả issue của cloudposse/terraform-aws-lambda-function
Issue tương tự
-
[BUG] CloudFront: CreateFunction and UpdateFunction accept any RuntimeCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
floci-io/floci#5425 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] The Aliyun cloud instance catalog silently truncates on a short pageCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
apache/rocketmq-dashboard#6083 ·
Maintainer thường phản hồi trong vòng 6 ngày
-
Bug Report: S3 device signs content-length on bodyless GET/HEAD, breaks R2 reads (403 SignatureDoesNotMatch)Có thể đã có người làm @ridhotamma đã nhận 1 ngày trước. Đang mởproduct / self-hosted product / storage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
appwrite/appwrite#14326 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: snapshot download mishandles reader close errorsCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởarea/storage kind/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
agent-substrate/substrate#2445 ·
Maintainer thường phản hồi trong vòng 1 ngày