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


14

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

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

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

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

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


당신은 매개 변수에 대해 이야기하고 있습니까? docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
Edwin

나는 이것이 AWS가 제공하는 것이라고 생각합니다. 안타깝게도 아직 YAML 별칭을 지원하지 않습니다.
jgomo3

답변:


7

불행히도 내 실험은 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 프로세서는 다음과 같이 말합니다.

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

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

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

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


2

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


1
이것은 정적 문자열에서만 작동합니다. OP는 구체적으로 계산 된 문자열을 요청했지만 전혀 불가능한 것 같습니다.
Joe

0

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


0

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.