2017-04-24 57 views
6

Podczas tworzenia funkcji AWS Lambda z terraform 0.9.3, nie udało mi się dołączyć do mojego wybranego VPC.AWS Lambda VPC na Terraform

To jest jak moja funkcja wygląda następująco:

resource "aws_lambda_function" "lambda_function" { 
    s3_bucket  = "${var.s3_bucket}" 
    s3_key   = "${var.s3_key}" 
    function_name = "${var.function_name}" 
    role    = "${var.role_arn}" 
    handler   = "${var.handler}" 

    runtime   = "${var.runtime}" 
    timeout   = "30" 
    memory_size  = 256 
    publish   = true 

    vpc_config { 
     subnet_ids = ["${var.subnet_ids}"] 
     security_group_ids = ["${var.security_group_ids}"] 
    } 
} 

Polityka używam do tej roli jest

data "aws_iam_policy_document" "lambda-policy_policy_document" { 
     statement { 
      effect = "Allow" 
      actions = [ 
      "ec2:DescribeSecurityGroups", 
      "ec2:DescribeSubnets", 
      "ec2:DescribeVpcs", 
      "logs:CreateLogGroup", 
      "logs:CreateLogStream", 
      "logs:PutLogEvents", 
      "ec2:CreateNetworkInterface", 
      "ec2:DescribeNetworkInterfaces", 
      "ec2:DeleteNetworkInterface" 
     ] 
     resources = ["*"] 
    } 
} 

Zasoby są tworzone w porządku, gdy próbuję dodać VPC a podsieci za pośrednictwem konsoli AWS to wszystko działa.

Update (tworzenie planu):

module.******.aws_lambda_function.lambda_function 
arn:         "<computed>" 
environment.#:      "1" 
environment.0.variables.%:   "1" 
environment.0.variables.environment: "******" 
function_name:      "******" 
handler:        "******" 
last_modified:      "<computed>" 
memory_size:       "256" 
publish:        "true" 
qualified_arn:      "<computed>" 
role:        "******" 
runtime:        "******" 
s3_bucket:       "******" 
s3_key:        "******" 
source_code_hash:     "<computed>" 
timeout:        "30" 
version:        "<computed>" 
vpc_config.#:      "1" 
vpc_config.0.vpc_id:     "<computed>" 

Chociaż, gdybym ponownie uruchomić planu terraform, config VPC jest zawsze zmieniło.

vpc_config.#: "0" => "1" (forces new resource) 
+0

Czy możesz wyświetlić wynik planu, gdy nie masz funkcji Lambda? – ydaetskcoR

+0

@ydaetskcoR właśnie zaktualizowany o plan tworzenia – joaofs

+1

To mi się wydaje nie tak. Właśnie zaplanowałem jedną z moich własnych funkcji Lambda, która znajduje się wewnątrz VPC i widzę dodatkowe linie na planie dla identyfikatorów grup bezpieczeństwa i identyfikatorów podsieci, których twój plan nie pokazuje. Coś jak: 'vpc_config.0.subnet_ids.1220732747:" podsieć-12345678 "'. Czy sprawdziłeś identyfikatory podsieci i identyfikatory grup zabezpieczeń zostały poprawnie przekazane? – ydaetskcoR

Odpowiedz

0

Brakowało mapowania modułu lambda. Po ustaleniu tego, jak powinien wyglądać plan dla konfiguracji VPC:

vpc_config.#:        "1" 
vpc_config.0.security_group_ids.#:   "1" 
vpc_config.0.security_group_ids.571116572: "******" 
vpc_config.0.subnet_ids.#:     "3" 
vpc_config.0.subnet_ids.1396457994:  "****" 
vpc_config.0.subnet_ids.1722519307:  "****" 
vpc_config.0.subnet_ids.830820656:   "****" 
vpc_config.0.vpc_id:      "<computed>"