我有一個現有的云形成堆疊,它創建了一個 Elastic Beanstalk 應用程式:
Resources:
EBApplication:
Type: AWS::ElasticBeanstalk::Application
Properties:
ApplicationName: !Ref ApplicationName
Description: "AWS Elastic Beanstalk Account Balance application"
我想在另一個堆疊中使用這個資源,所以我在同一個 yaml 檔案的末尾匯出它:
Outputs:
EBApplicationName:
Value: !Ref EBApplication
Export:
Name: card-balance-EBApplicationName
現在在我的第二個云形成堆疊中,我將使用彈性豆莖資源,我正在嘗試:
Resources:
EBApplication:
Type: AWS::ElasticBeanstalk::Application
Properties:
ApplicationName: !ImportValue
'Fn::Sub': 'card-balance-EBApplicationName'
但是我收到一條錯誤訊息,指出應用程式名稱已被使用,因為它正在嘗試創建一個新的 Elastic Beanstalk 應用程式(具有相同的應用程式)而不是重用第一個應用程式。我究竟做錯了什么?
編輯 這里的這個問題有一個類似的問題。基本上我想要 2 個獨立的堆疊 - 每個環境一個 - 但這些都在同一個 EB 應用程式下。似乎這個人實作了這一點,請參閱答案下的評論如何使用單個 cloudformation 模板創建多個 Elasticbeanstalk 環境
uj5u.com熱心網友回復:
我究竟做錯了什么?
你不能“重用第一個”第一個。對第一個 EB 環境的所有修改都必須使用第一個 CFN 堆疊執行。
在第二個堆疊中,您只能在其他資源中參考 EB回傳值,一旦您在第一個堆疊中匯出這些值。
uj5u.com熱心網友回復:
EB 應用程式資源必須位于一個且唯一的堆疊中:
EBApplication:
Type: AWS::ElasticBeanstalk::Application
Properties:
ApplicationName: !Ref EBApplicationName
Description: "Application Description"
在此堆疊中,您可以在環境中參考應用程式:
EBApplicationEnvironment1:
Type: AWS::ElasticBeanstalk::Environment
Properties:
ApplicationName: !Ref EBApplication
EnvironmentName: !Ref EBnvironmentName1
這是因為,根據檔案Ref 回傳資源名稱。
在另一個堆疊中,您不能按資源參考,但可以按名稱:
EBApplicationEnvironment2:
Type: AWS::ElasticBeanstalk::Environment
Properties:
ApplicationName: !Ref EBApplicationName
EnvironmentName: !Ref EBnvironmentName2
使用 Ref 您可以同時參考另一個資源(僅在同一堆疊中)和一個引數。因此,對于您的情況,您可以在兩個堆疊中傳遞相同的應用程式名稱作為引數。您不一定需要輸出名稱。(CloudFormation 并非總是如此。它在這里作業,因為您可以定義名稱,并且您可以通過名稱參考環境中的資源。在其他情況下需要 ARN 或 ID。輸出將在那里作業) .
另請注意,第一個堆疊擁有應用程式和環境 1。您需要(在需要時)首先洗掉第二個堆疊,然后洗掉第一個堆疊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/351662.html
