Value not found at "self" source
Hello good day, I am trying to implement 'aws-node-rest-api-with-dynamodb-and-offline' but when I run the command serverless dynamodb install it gives me the following errors:
Error:
Cannot resolve serverless.yml: Variables resolution errored with:
- Cannot resolve variable at "provider.environment.DYNAMODB_TABLE": Value not found at "self" source,
- Cannot resolve variable at "provider.iamRoleStatements.0.Resource": Value not found at "self" source
And I am executing as indicated in the guide(https://www.serverless.com/examples/aws-node-rest-api-with-dynamodb-and-offline, https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb-and-offline)

Hello @FelCer - in fact, this example has a bit of a bug when it comes to it's configuration.
The best way to address it would be to replace ${opt:stage, self:provider.stage} with ${sls:stage} variable and ${opt:region, self:provider.region} with ${aws:region} variables.
Introducing changes as proposed above should resolve the problem.
Hello @pgrzesik, That's fine if it worked, but I think this template still contains errors, like:
executing the serverless offline start command produces the following error.

This error is treated here, https://github.com/99x/serverless-dynamodb-local/issues/194 but without any solution.
By implementing that with the flag indicated here https://github.com/99x/serverless-dynamodb-local/issues/194#issuecomment-590883319 it runs correctly, but until the endpoint is consulted it generates an error.

Hey @FelCer - it's very likely that this example might have additional errors, since it hasn't been actively maintained for a long time - unfortunatelly I don't know much about this specific example so I won't be able to help more there
oh no, okey. Thanks anyway I'll wait for someone else who can help me
@FelCer Actually, there is no value to satisfy the variable "stage" and "region".
So you need to either pass it from command line as serverless deploy --stage dev --region us-east-1 or else define the variables in serverless.yml.
Yeah, maybe I'm a little too late, but appears to me that in "Provider" section should be a "region" element, dont?
Yeah, maybe I'm a little too late, but appears to me that in "Provider" section should be a "region" element, dont?
That's right, I was facing the same issue. Here is an example that servers both ways:

The key is ${self:custom.integrarProdutoMLFunctionSQS.${opt:stage}} on lines 12 and 16.
The self:custom.integrarProdutoMLFunctionSQS will refeer to custom section, integrarProdutoMLFunctionSQS subsection.
But I need thoose variables being environment dependant, so I run my serverless by serverless offline start --stage local. To access my "stage" variable, set throught console, I need to use ${opt:stage}.
In conclusion:
- To use file values, use
${self:section.value}(like me, usingself:custom.integrarProdutoMLFunctionSQS) - To use varibles set throught console, use
${opt:stage}
So when I do use ${self:custom.integrarProdutoMLFunctionSQS.${opt:stage}}, running with serverless offline start --stage local, the final result will be ${self:custom.integrarProdutoMLFunctionSQS.local}, wich is what I need.
is the ${self:someProperty} used in the rate(Value Unit), such as rate(${self:someProperty})? I found it doesn't work. But rate(${env:SOME_VAR}) will work. Why?