Спасибо Спящий Смит .Это отличный ответ, и я некоторое время искал решение этой проблемы!
tl; dr
yaml CloudFormation ниже возвращает "bucket-with-half-random-name-name-51af3dc0 "
BucketWithSemiRandomName:
Type: "AWS::S3::Bucket"
Properties:
BucketName: !Join
- "-"
- - "bucket-with-semi-random-name"
- !Select
- 0
- !Split
- "-"
- !Select
- 2
- !Split
- "/"
- !Ref "AWS::StackId"
Небольшая ошибка индекса в образце кода при условии Sleeper Smith .Вам нужно будет заменить индекс выбора, как показано ниже.
Использование того же примера ARC стека в качестве исходного ответа ...
arn:aws:cloudformation:us-west-2:123456789012:stack/teststack/51af3dc0-da77-11e4-872e-1234567db123
!Select [2, !Split [/, !Ref AWS::StackId ]]
Приведенный выше пример кода возвращает UUID (индекс 2)из стека ARN "51af3dc0-da77-11e4-872e-1234567db123"
!Select [0, !Split[-, !Select [2, !Split [/, !Ref AWS::StackId ]]]]
Приведенный выше пример кода возвращает первый сегмент (индекс 0) UUID из стека ARN "51af3dc0"
Это итоговый yaml, который я сейчас использую, основываясь на ответе Sleeper Smith .Я объединил a! Join, чтобы предоставить больше контекста имени сегмента.
BucketWithSemiRandomName:
Type: "AWS::S3::Bucket"
Properties:
BucketName: !Join
- "-"
- - "bucket-with-semi-random-name"
- !Select
- 0
- !Split
- "-"
- !Select
- 2
- !Split
- "/"
- !Ref "AWS::StackId"
Приведенный выше пример кода возвращает "bucket-with-semi-random-name-name-51af3dc0"