CloudFormation Пользовательский ресурс responseKey - PullRequest
1 голос
/ 12 марта 2019

У меня есть пользовательский стек с лямбда-поддержкой в ​​CloudFormation, поэтому мне нужен вывод функции извлечения и передачи его на консоль AWS. Как мне решить эту проблему?

Мой стек показан ниже;

     "CreateExistingVPC": {
  "Type": "Custom::CreateExistingVPC",
  "Properties": {
    "ServiceToken": { "Fn::If": ["LambdaAvailable",{ "Fn::GetAtt": [ "CustomLogic", "Outputs.LambdaAttachHostedZoneArn" ] }, { "Ref": "AWS::NoValue" } ] },
    "Region": { "Ref": "AWS::Region" },
    "HostedZoneId": { "Ref": "InternalHostedZone" },
    "VpcId": { "Fn::GetAtt": [ "VPC", "Outputs.VPC" ] }
  }
}
},

  "Outputs": {
  "Route53VPC": {
  "Description": "ExistingRoute53VPCStatus",
  "Value": { "Fn::GetAtt": [ "CreateExistingVPC", "{ ??????? }" ] }
}
}

На самом деле я нашел несколько ответов, но «ключ ответа» не работал в моем случае, как я могу найти ключ ответа ??

Облачная информация AWS, выходное значение из пользовательского ресурса

1 Ответ

1 голос
/ 12 марта 2019

Вам нужно использовать переменную, которую вы используете, чтобы вернуть ваш ответ. например (NodeJs)

module.exports.createPoolList = (event, context, callback) => {

  if (event.RequestType == 'Create') {
    let array = event.ResourceProperties.OpsPoolArnList.split(",");

    array.push(event.ResourceProperties.UserPool);

    let response = {
        'list': array.join(),
    };

    sendresponse(event, "SUCCESS", response, "");
  }

  if (event.RequestType == 'Delete') {
      sendresponse(event, "SUCCESS", null, "");
  }

  callback(null, "");
};

Здесь list - это переменная, которая содержит мой вывод и возврат в моем response Встроенная полезная нагрузка выглядит как

let payload = {
    'StackId': event.StackId,
    'Status' : responsestatus,
    'Reason' : reason,
    'RequestId': event.RequestId,
    'LogicalResourceId': event.LogicalResourceId,
    'PhysicalResourceId': event.LogicalResourceId + 'qwerty',
    'Data': response
};

И я называю это в своем сценарии

!GetAtt <ResourceName>.list

Надеюсь, это поможет.

...