मैं अपनी फ़ाइल में गतिशील रूप से एक एआरएन बनाना चाहता हूं, लेकिन मुझे अपना वर्तमान खाता आईडी प्राप्त करना होगा। मैं इसे चर के रूप में कैसे एक्सेस कर सकता हूं?मैं serverId को serverless.yml फ़ाइल में चर के रूप में कैसे प्राप्त करूं?
example: arn:aws:states:${region}:${accountId}:stateMachine:${self:service}-${self:custom.stage}-example
संदर्भ के लिए वर्तमान region
और accountId
उचित तरीका क्या है:
?
संपादित करें: (समाधान)
मैं कुरूपता और Fn::Join
समाधान के शब्दाडंबर लेकिन मैं क्या कर रहा है जो इन सब है एक arns.yml
फ़ाइल बना रहा है समाप्त हो गया की वजह से इस समाधान के साथ सुपर खुश नहीं हूँ केवल एक ही स्थान पर फिर संदर्भ के साथ कहीं और संदर्भ।
# arns.yml
example:
Fn::Join:
- ":"
- - arn
- aws
- states
- Ref: AWS::Region
- Ref: AWS::AccountId
- stateMachine
- ${self:service}-${self:custom.stage}-example
तब:
# serverless.yml
custom:
stage: "${opt:stage, self:provider.stage}"
functions:
foo:
handler: handler.foo
environment:
example_arn: ${file(arns.yml):example}
संपादित करें 2: (बेहतर समाधान)
यह लंगड़ा लग सकता है लेकिन समाधान मैं के साथ जा रहा समाप्त हो गया अपने कस्टम में सिर्फ कठिन कोड यह करने के लिए है चर। मैं वास्तव में दो खाते हैं और मैं एक कस्टम निर्माण कदम उपयोग करती हैं इसलिए की तरह खाते विशिष्ट सेटिंग्स के साथ दो फ़ाइलों की प्रतिलिपि बनाना:
account.stag.yml
account.prod.yml
प्रत्येक फ़ाइल इस तरह दिखना हो सकता है:
# account.stag.yml
account: 123456789
region: ${opt:region, "us-east-1"}
domain: mycompany.qa
जब मैं मेरे द्वारा उल्लिखित का निर्माण एक खाता और मैं घूंट का उपयोग अपने भवन के सभी कार्य करें:
कोgulp build --account stag
तो है कि मेरे खाते विशिष्ट सेटिंग का नाम बदलता है
build/account.yml
और मैं तो जैसे मेरी serverless.yml में यह देख सकते हैं:
# build/serverless.yml
custom: ${file(account.yml)}
functions:
foo:
handler: handler.foo
environment:
example_arn: arn:aws:states:${self:custom.region}:${self:custom.account}:${self:service}-${opt:stage}-example
मैंने अभी तक इस प्लगइन को नहीं देखा है लेकिन यह ईमानदार होने का सबसे अच्छा जवाब है, सही जवाब होने के लिए स्विच किया गया है। –