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

'${construct:myQueueConstruct.dlqArn}' can't be resolved in functions.events.sqs #404

Open
lynxSven opened this issue Aug 19, 2024 · 4 comments
Labels
bug Something isn't working

Comments

@lynxSven
Copy link
Contributor

lynxSven commented Aug 19, 2024

Description

I want to use the dlqArn of a construct to send the errors to another lambda function.
When i try to use it in functions.events.sqs I get this error message when I try to deploy
Configuration error at 'functions.handleError.events.0.sqs': must match pattern "^arn:"

When I try to use this placeholder in a ENVIRONMENT of the lambda function, like in the queue.md example, it works fine.

Maybe the preprocessor can't handle this placeholder?

How to Reproduce

...
    handler: 'pathToHandler.handler'
    events:
       - sqs: '${construct:myContructQueue.dlqArn}'
 ...

Additional Information

No response

@lynxSven lynxSven added the bug Something isn't working label Aug 19, 2024
@lynxSven
Copy link
Contributor Author

lynxSven commented Aug 20, 2024

It seems like the dlqArn doesn't return the ARN like I would expect.
The things that gets resolved is --> myContructQueueDlqAAAAAAAAA,Arn

FYI: AAAAAAAAA, is fake data the value is something else, but i cant find it in this queue.
the ARN is a completely different id.

I would expect something like in the reference here. arn:partition:service:region:account-id:resource-id docs and not resourcename+ID,Arn

I am confused where is this from?

@lynxSven
Copy link
Contributor Author

The myContructQueueDlqAAAAAAAAA,Arn seems to come right out of the deployed Cloudformation.json

And resolves to

"Fn::GetAtt": [
            "myContructQueueDlqAAAAAAAA",
            "Arn"
          ]

Serverless does't seem to understand, that the placeholder gets resolved into an ARN.

@mnapoli
Copy link
Member

mnapoli commented Aug 26, 2024

Hi, unfortunately that seems to be a limitation with Serverless Framework.

Can you try this:

...
    handler: 'pathToHandler.handler'
    events:
       - sqs:
           arn: '${construct:myContructQueue.dlqArn}'
 ...

@andrewleek-droplab
Copy link

I am also seeing this issue, but when following your example:
...
handler: 'pathToHandler.handler'
events:
- sqs:
arn: '${construct:myContructQueue.dlqArn}'
...

I get the following message:
[!] Invalid configuration encountered
at 'functions.handleFailureFunction.events.0.sqs.arn': unsupported string format

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants