Amazon web services 连接导入值和参数存储值

Amazon web services 连接导入值和参数存储值,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,我正在尝试连接从另一个CF脚本导出的值和参数存储中的参数 我有两个CF脚本,其中Script-A输出一个值,如下所示 Purpose: Value: !Ref Purpose Description: Purpose Export: Name: !Sub '${AWS::StackName}-${CustomerName}-Purpose' 它还使用客户名称创建一个SSM参数 在第二个脚本中,我想读取“Purpose”并将其作为值提供,同时创建另一个参数

我正在尝试连接从另一个CF脚本导出的值和参数存储中的参数

我有两个CF脚本,其中Script-A输出一个值,如下所示

  Purpose:
    Value: !Ref Purpose
    Description: Purpose
    Export:
      Name: !Sub '${AWS::StackName}-${CustomerName}-Purpose'
它还使用客户名称创建一个SSM参数

在第二个脚本中,我想读取“Purpose”并将其作为值提供,同时创建另一个参数存储条目

  TestVar:
    Type: AWS::SSM::Parameter
    Properties:
      Name: !Sub '/test-var'
      Type: String
      Value: 
        Fn::Sub:
        - 'abc-'
        - !ImportValue '${StackName}-'
        - CustomerName:'{{resolve:ssm:CustomerName:1}}'
        - '-Purpose'
但我不确定正确的方法是什么


我知道我可以将参数存储值作为CF脚本上的参数导入,但尽量避免硬编码键。

使用SSM存储参数需要注意的几点。每次更新该值时,版本号都会增加。目前,没有办法告诉CFN只使用最新版本的SSM存储参数。在模板中使用这些时请记住这一点

好的,首先,如果你想按模板剪的样子做,你需要做一个简单的修改!加入,而不是加入!SUB,也就是说,如果我正在阅读你正在尝试做的正确的事情(需要更多信息,但我还是会尝试一下)

对于以上内容,只需执行以下操作:

        KeyName: !Join ['',['kp-','{{resolve:ssm:AccountShortName:1}}','-default']] 
如果您试图在脚本块中执行此操作,它看起来更像:

      "AWS::CloudFormation::Init": 
        configSets: 
          configuration: 
            - InitialSetup
        init: # Initialize cfn
          files: 
            'C:\cfn\scripts\SetupDefaults.json': 
              content: !Sub 
                - | 
                  { 
                    "StackName": "${AWS::StackName}", 
                    "Region": "${AWS::Region}", 
                    "Resource": "WinServer", 
                    "directoryName": "${AccountShortName}.com", 
                    "Joiner": "${AccountShortName}/ad/joiner" 
                  } 
                - AccountShortName: '{{resolve:ssm:AccountShortName:1}}' 
          commands: 
        InitialSetup: # Initial Setup 
          files: 
            'C:\cfn\scripts\Initial-Setup.ps1': 
              source: !Join 
                - '' 
                - - 'https://s3-us-west-2.amazonaws.com/' 
                  - '{{resolve:ssm:binaries-bucket:1}}' 
                  - '/new_web/Initial-Setup.ps1' 
              authentication: S3AccessCreds 
          commands: 
            InitialSetup: 
              command: >- 
                powershell.exe -Command "C:\cfn\scripts\Initial-Setup.ps1" 
              waitAfterCompletion: 0 
希望这能把事情弄清楚一点。如果没有,请发布更多详细信息,我们或许可以挖掘更多帮助


谢谢

如果您的第一个CF模板首先创建了所需的
AWS::SSM::Parameter
,而不是导出输出,那么将为您节省大量的麻烦。