テンプレートのcustom resource
からlambda function
を呼び出します。このカスタムリソースには、cloudformation
スタックの名前のプロパティがあります。ラムダ関数でこのプロパティ値が必要なので、スタックのparameters
とoutputs
のような他の変数を得ることができます。ここでcustom resource
は次のとおりです。ラムダ関数から雲情報スタック名を取得する
"DeployApp": {
"Type" : "Custom::deployapplication",
"Properties" : {
"ServiceToken": { "Fn::GetAtt" : ["lambda" , "Arn"] },
"StackName": { "Ref": "AWS::StackName" }
}
}
瞬間のために、私はラムダ関数で、このようにスタック名を取得:
import boto3
def lambda_handler(event, context):
cf_client = boto3.client('cloudformation')
# Get the name of the stack
stack = context.invoked_function_arn.split(':')[6]
stack = stack.split('-')[:4]
stack_name = stack[0]+'-'+stack[1]+'-'+stack[2]+'-'+stack[3]
print('CloudFormation stack name : '+stack_name)
ここ
私はいつもこのような何かにスタックの名前を設定します。
stack-cfn-lambda-app
:4語を ' - 'で区切ります。 しかし、すべての名前の形式が受け入れられるように、より一般的にしたいと考えています。 これを行うにはどうすれば、フォーマットの仕組みがわからなくてもスタックの正確な名前を得ることができますか?
arn:aws:lambda:eu-west-1:53436693423891:function:stackName-ELATEDLEXZPS
:function:
とELATEDLEXZPS
の間の文字列を:pythonで私はこの文字列(関数ラムダARN)から取得することができますどのように言い換えれば
、?
はい!私はそれを得た非常にありがとう。効果的なイベント変数は、物事を単純にすることです – Somar