cloudformation에서 재사용 가능한 문자열을 만들 수 있습니까? 문자열을 만드는 방법이

나는 문자열을 가지고 있으며 태그 및 호스트 이름과 같은 많은 다른 것들에 사용되는 많은 변수로 구성됩니다.

템플릿을 통해 Ref를 사용할 수있는 재사용 가능한 문자열을 만드는 방법이 있습니까?

이것에 대한 의견은 대단히 감사하겠습니다. 편집 : 예는 ProjectName 및 Environment와 같은 2 개의 매개 변수를 전달합니다.

"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]

그리고 여러 장소에서 결과를 사용



답변

불행히도 내 실험은 Graeme의 결론에 동의하는 것입니다. 나는 이것을 오랫동안 고투했지만 Fn :: Join을 통해 문자열을 계산하고 나중에 템플릿에서 유지하는 방법을 찾지 못했습니다.

전형적인 예를 들려 줄 수 있습니까?

2014-09-18에서와 같이 Resources 섹션에서 재사용 할 문자열 값을 저장하는 가장 정교한 방법은 (두 번째 수준) 매핑을 사용하는 것입니다. 더 좋은 방법은 조건을 미리 계산하고 문자열 사용 여부를 결정할 수 있다는 것입니다. 그러나 불행히도 문자열 저장은 작동하지 않습니다.

다음은 그러한 매핑의 예제 스탠자입니다.

    "LoadBalancerBucketMap": {
        "BucketName": {
            "string": {
                "Fn::Join": [
                    "-",
                    [
                        "mylb",
                        {
                            "Ref": "Environment"
                        },
                        "logs"
                    ]
                ]
            }
        }
    },

그리고 여기에 리소스에 대한 액세스 표현이 있습니다.

                "S3BucketName": {
                    "Fn::FindInMap": [
                        "LoadBalancerBucketMap",
                        "BucketName",
                        "string"
                    }

이 예제에서 Environment는 편리한 기본값을 가진 리터럴 문자열 Parameter입니다. 이것은 문자열을 만들고 재사용하는 매우 명확한 예입니다. 그러나 CloudFormation 프로세서는 다음과 같이 말합니다.

템플리트 유효성 검증 오류 : 템플리트 형식 오류 : 모든 맵핑 속성은 문자열 또는 목록이어야합니다.

따라서 템플릿에 임시 문자열 변수의 효과를 제공하는 방법이없는 것처럼 보이는 좌절감을 공유합니다.

… 내가 볼 수있는 한. 그러나 당신이 처음에받은 대답은 이것의 반대라고 말했지만 (예제는 없지만).

누구든지 예제 해결 방법이 있다면 공유 할 수 있습니까?


답변

매개 변수 또는 매핑을 사용하여 템플릿에서 사용할 수있는 문자열을 저장할 수 있습니다.


답변

불행히도 나는 달성하려는 것을 할 수 없다는 것을 알았습니다. 도움이되지 않지만 거기에 있습니다.


답변

우리는 실제로 정확히 우리 CloudFormation 스택의 이름을 {ProjectName}-{Environment}aws cloudformation deploy. 스택 이름에이 이름 지정 규칙을 고려 했습니까?

그 후에는로 참조 할 수 있습니다 { "Fn:Sub": "${AWS::StackName}" }.