Tôi đang làm việc trên AWS CloudFormation và tôi đã tạo một mẫu trong đó tôi yêu cầu người dùng chọn Môi trường.
Trên cơ sở giá trị được chọn, tôi đã tạo ra các tài nguyên. Người dùng phải chọn giữa DEV, QA, PROD, UAT, v.v. nhưng khi tôi nhập giá trị này vào tên nhóm S3 (-doads.com) thì không được phép vì chữ in hoa không được phép trong tên nhóm S3.
Vì vậy, tôi đã thay đổi JSON khi tôi sử dụng fn :: Transform với "Điều kiện": "Thấp hơn" nhưng sau đó trong khi tạo tài nguyên bên dưới xảy ra lỗi.
Không có biến đổi có tên 871247504605 :: Chuỗi được tìm thấy .. Phục hồi theo yêu cầu của người dùng.
Dưới đây là JSON CloudFormation của tôi
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Provides nesting for required stacks to deploy a full resource of ****",
"Metadata": {
"AWS::CloudFormation::Interface": {
"ParameterGroups": [
{
"Label": {
"default": "Enviroment Selection"
},
"Parameters": [
"selectedEnv"
]
}
],
"ParameterLabels": {
"selectedEnv": {
"default": "Please select Enviroment"
}
}
}
},
"Parameters": {
"selectedEnv": {
"Type": "String",
"Default": "DEV",
"AllowedValues": [
"DEV",
"QA",
"UAT",
"PROD"
]
}
},
"Resources": {
"S3BucketName": {
"Type": "AWS::S3::Bucket",
"Properties": {
"BucketName": {
"Fn::Join": [
"",
[
{
"Fn::Transform": {
"Name": "MyString",
"Parameters": {
"InputString": {
"Ref": "selectedEnv"
},
"Operation": "Lower"
}
}
},
"-deployment.companyname.com"
]
]
},
"PublicAccessBlockConfiguration": {
"BlockPublicAcls": "true",
"BlockPublicPolicy": "true",
"IgnorePublicAcls": "true",
"RestrictPublicBuckets": "true"
},
"Tags": [
{
"Key": "ENV",
"Value": {
"Ref": "selectedEnv"
}
},
{
"Key": "Name",
"Value": {
"Fn::Join": [
"",
[
{
"Ref": "selectedEnv"
},
"deployments"
]
]
}
}
]
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "c81705e6-6c88-4a3d-bc49-80d8736bd88e"
}
}
},
"QueueForIOT": {
"Type": "AWS::SQS::Queue",
"Properties": {
"QueueName": {
"Fn::Join": [
"",
[
{
"Ref": "selectedEnv"
},
"QueueForIOT"
]
]
},
"DelaySeconds": "0",
"MaximumMessageSize": "262144",
"MessageRetentionPeriod": "345600",
"ReceiveMessageWaitTimeSeconds": "20",
"VisibilityTimeout": "30"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "6484fbb7-a188-4a57-a40e-ba9bd69d4597"
}
}
}
},
"Outputs": {
"Help": {
"Description": "This is description",
"Value": ""
}
}
}
Câu hỏi của tôi là tôi muốn làm giá trị chữ thường hoặc đôi khi là chữ hoa cho nhóm S3 hoặc bất kỳ tài nguyên nào khác. Làm thế nào để làm gì? Cảm ơn trước.
Hình ảnh của lỗi tạo mẫu đính kèm.
MyString
macro được yêu cầu bởi aws để tạo các biến đổi tùy chỉnh. Thêm thông tin có thể được tìm thấy ở đây . Ví dụ (bao gồm cả hàm lambda) có thể được tìm thấy ở đây .
DEV to dev, PROD to prod, etc
bằng cách kết hợp ánh xạ và Fn :: FindInMap vào mẫu của bạn.