2016-04-08 13 views
2

Walkthrough: Refer to Resources in Another Stackの例を使用して、別のスタックのリソースを参照しています(これは信じられないほど有用であり、すぐに使える機能です)。しかしながら、この例は更新では機能しないようである。すなわち、新しい出力が参照スタックに追加された場合である。CloudFormationのアップデート「別のスタックのリソースを参照してください」

興味深いことに、ラムダ関数はログやメトリックによっても呼び出されないため、コード内で修正できる問題はないようです。私はコードがReplacing a Custom Resource During an Updateとして別のPhysicalResourceIdを更新時に使用するべきだと思います。

注:これは、そのプロパティの変更の1つがCloudFormationのみカスタムリソースを更新しないことが判明unanswered AWS Forum thread

答えて

2

からクロスポストです。これが発生すると、カスタムリソースは変更されたことを通知する必要があります。だから、

置き換える:

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

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

をこれは、アップデート中のイベントを以下になります:

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 

これはまだかかわらず、変更するプロパティが必要です。私は、カスタムリソースへの擬似ランダムパラメータを渡した思い付いたその最高:

{ 
    "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" } 
     } 
    } 
    } 
} 

未知のパラメータ(すなわちRandom)は、単にラムダ関数によって無視されます。

関連する問題