Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Value not found at "self" source #689

Open
FelCer opened this issue Mar 24, 2022 · 8 comments
Open

Value not found at "self" source #689

FelCer opened this issue Mar 24, 2022 · 8 comments

Comments

@FelCer
Copy link

FelCer commented Mar 24, 2022

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)

image
image

@pgrzesik
Copy link
Contributor

pgrzesik commented Mar 25, 2022

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.

@FelCer
Copy link
Author

FelCer commented Mar 25, 2022

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.
image

This error is treated here, 99x/serverless-dynamodb-local#194 but without any solution.
By implementing that with the flag indicated here 99x/serverless-dynamodb-local#194 (comment) it runs correctly, but until the endpoint is consulted it generates an error.
image
image

@pgrzesik
Copy link
Contributor

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

@FelCer
Copy link
Author

FelCer commented Mar 25, 2022

oh no, okey.
Thanks anyway I'll wait for someone else who can help me

@gsanjeev432
Copy link

gsanjeev432 commented Apr 14, 2022

@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.

@eriklive
Copy link

eriklive commented Dec 6, 2022

Yeah, maybe I'm a little too late, but appears to me that in "Provider" section should be a "region" element, dont?

@eriklive
Copy link

eriklive commented Dec 6, 2022

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:

image

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:

  1. To use file values, use ${self:section.value} (like me, using self:custom.integrarProdutoMLFunctionSQS)
  2. 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.

@ChuhengH
Copy link

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants