Access AWS auto-generated URL for deployed resources


Access AWS auto-generated URL for deployed resources



Is there a way to access auto-generated URLs for deployed resources before the deployment is finished? (like db host, lambda function URL, etc.)



I can access them after the deployment is finished, but sometimes I need to access them while building my stack. (E.g. use them in other resources).



What is a good solution to handle this use-case? I was thinking about outputting them into the SSM parameter store from CloudFormation template, but I'm not sure if this is even possible.



Thanks for any suggestion or guidance!




2 Answers
2



If "use them in other resources" means another serverless service or another CloudFormation stack, then use CloudFormation Outputs to export the values you are interested in. Then use CloudFormation ImportValue function to reference that value in another stack.



See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html and https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html



Within Serverless Framework, you can access a CloudFormation Output value using https://serverless.com/framework/docs/providers/aws/guide/variables/#reference-cloudformation-outputs



If you want to use the autogenerated value within the same stack, then just use CloudFormation GetAtt function. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html.



For example, I have a CloudFormation stack that outputs the URL for an ElasticSearch cluster.


Resources:
Search:
Type: AWS::Elasticsearch::Domain
Properties: <redacted>

Outputs:
SearchUrl:
Value: !GetAtt Search.DomainEndpoint
Export:
Name: myapp:search-url



Assuming that the CloudFormation stack name is "mystack", then in my Serverless service, I can reference the SearchUrl by:


custom:
searchUrl: ${cf:mystack.SearchUrl}



To add to bwinant's answer, ${cf:<stack name>.<output name>} does not work if you want to reference a variable in another stack which is located in another region. There is a plugin to achieve this called serverless-plugin-cloudformation-cross-region-variables. You can use it like so


${cf:<stack name>.<output name>}


plugins:
- serverless-plugin-cloudformation-cross-region-variables

custom:
myVariable: ${cfcr:ca-central-1:my-other-stack:MyVariable}






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Popular posts from this blog

api-platform.com Unable to generate an IRI for the item of type

How to set up datasource with Spring for HikariCP?

Display dokan vendor name on Woocommerce single product pages