2016-04-08 19 views
2

Başka bir yığından kaynaklara başvurmak için (örneğin, son derece yararlı olduğunu ve kutudan çıkma özelliği olması gerektiğini düşündüğüm) örneği kullanmak için Walkthrough: Refer to Resources in Another Stack örneğini kullanıyorum. Bununla birlikte, örnek, güncellemelerle çalışmamaktadır, yani başvurulan yığına yeni bir çıktı eklenmişse.CloudFormation "Başka Bir Yığında Kaynaklara Başvurun" güncelleştirmesi

İlginçtir ki, lambda işlevi günlüklere ve metriklere göre çağrılmamaktadır, bu nedenle kodda çözülebilecek bir sorun görünmemektedir. Yine de, kodun Replacing a Custom Resource During an Update uyarınca güncellemede farklı bir PhysicalResourceId kullanması gerektiğini düşünüyorum.

Not: Bu O CloudFormation sadece özel bir kaynak güncellememesindedir çıkıyor bir unanswered AWS Forum thread

cevap

2

bir çapraz yazıdır özellikleri değişikliklerin biri eğer. Bu olduğunda, özel kaynak değiştiğine işaret etmelidir. Yani

değiştirin:

response.send(event, context, response.SUCCESS, responseData); 

bu güncelleme sırasında olayları takip sonuçlanacaktır

var crypto = require('crypto'); 
var hash = crypto.createHash('md5').update(JSON.stringify(responseData)).digest('hex'); 
response.send(event, context, response.SUCCESS, responseData, hash); 

ile:

15:08:16 UTC+0200 UPDATE_COMPLETE  Custom::NetworkInfo NetworkInfo 
15:08:15 UTC+0200 UPDATE_IN_PROGRESS Custom::NetworkInfo NetworkInfo Requested update required the provider to create a new physical resource 
15:08:08 UTC+0200 UPDATE_IN_PROGRESS Custom::NetworkInfo NetworkInfo 

Bu hala olsa değiştirmek için bir mülkü gerektirir. Ben, özel bir kaynağa bir sözde rastgele parametre geçerken ile geldi en:

{ 
    "Parameters": { 
    "Random": { 
     "Description": "Random value to force stack-outputs update", 
     "Type": "String" 
    } 
    }, 
    "Resources": { 
    "NetworkInfo": { 
     "Type": "Custom::NetworkInfo", 
     "Properties": { 
     "ServiceToken": { "Fn::GetAtt" : ["LookupStackOutputs", "Arn"] }, 
     "Random": { "Ref": "Random" }, 
     "StackName": { "Ref": "NetworkStackName" } 
     } 
    } 
    } 
} 

bilinmeyen parametreler (yani Random) sadece lambda fonksiyonu tarafından göz ardı edilir.

İlgili konular