Невозможно создать LambdaPermission с комбинацией Terraform и LocalStack: создание: неожиданное состояние '', требуется цель `` Активно ''

Я добавляю ресурс aws_lambda_permission для отправки событий из S3 в Lambda. Но Terraform жалуется на следующее сообщение об ошибке.

Error: error waiting for Lambda Function (py-lambda-foo) creation: unexpected state '', wanted target 'Active'. last error: %!s(<nil>)

Использование Terraform: Terraform v0.12.17 provider.aws v2.41.0 Localstack 0.10.5

Я могу убедиться, что функция была успешно создана, проверив эту команду

 awslocal lambda list-functions

Я вижу эту проблему, поскольку поставщик AWS создал лямбда-функцию, однако localstack не возвращает статус, который, как ожидается, должен работать с provider.aws. Следовательно, он не работает с этой ошибкой.

Я включил журналы TRACE и увидел в журналах aws.provider, что он ожидает изменения состояния Lambda на АКТИВНЫЙ и постоянно проверяет связь lambda/GetFunction

2019-12-07T08:16:24.328Z [DEBUG] plugin.terraform-provider-aws_v2.41.0_x4: 2019/12/07 08:16:24 [DEBUG] Waiting for state to become: [Active]
2019-12-07T08:16:29.336Z [DEBUG] plugin.terraform-provider-aws_v2.41.0_x4: 2019/12/07 08:16:29 [DEBUG] [aws-sdk-go] DEBUG: Request lambda/GetFunction Details:

Это ответ, который мы получаем для createFunction

{
    "CodeSha256": "xnITd7GQzVtuke7kOR5LP7iprBAmgz5iu15WISiVd0U=",
    "CodeSize": 5503941,
    "Description": "",
    "Environment": {
        "Variables": {
            "foo": "bar"
        }
    },
    "FunctionArn": "arn:aws:lambda:eu-west-1:000000000000:function:py-lambda-foo",
    "FunctionName": "py-lambda-foo",
    "Handler": "app.lambda_handler",
    "LastModified": "2019-12-07T08:16:21.097+0000",
    "MemorySize": 128,
    "RevisionId": "f04d5dad-5e1e-41f0-9c96-387b7ab2313f",
    "Role": "arn:aws:iam::000000000000:role/iam_for_lambda",
    "Runtime": "python3.7",
    "Timeout": 3,
    "TracingConfig": {
        "Mode": "PassThrough"
    },
    "Version": "$LATEST"
}


person Dinesh    schedule 07.12.2019    source источник


Ответы (1)


Это было проблемой с совместимостью Localstack с поставщиком AWS Terraform. Взгляните на описание проблемы здесь https://github.com/localstack/localstack/issues/1835

Наконец, разработчики Localstack применили исправление https://github.com/localstack/localstack/pull/1838, добавив состояние как АКТИВНОЕ, и теперь это было выбрано AWS-провайдером Terraform.

person Dinesh    schedule 07.12.2019