私はAWS CloudFormationで作業しており、ユーザーに環境を選択するように依頼するテンプレートを1つ作成しました。
選択した値に基づいて、リソースを作成しました。ユーザーはDEV、QA、PROD、UATなどから選択する必要がありますが、この値をS3バケット名(-downloads.com)に追加すると、S3バケット名では大文字が許可されないため許可されません。
そのため、fn :: Transformで「Condition」:「Lower」を使用するJSONを変更しました が、リソースの作成中にエラーが発生しました。
871247504605 :: Stringという名前の変換は見つかりませんでした。ユーザーによってロールバックが要求されました。
以下は私のCloudFormation JSONです
{
"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": ""
}
}
}
私の質問は、S3バケットまたはその他のリソースに対して小文字または場合によっては大文字の値を実行することです。実行する方法?前もって感謝します。
テンプレート作成エラーの画像が添付されています。
MyString
カスタム変換を作成するためにawsが必要とするラムダ関数実装マクロがあるかどうかは、質問から明らかではありません。詳細については、こちらをご覧ください。例(ラムダ関数を含む)はこちらにあります。
DEV to dev, PROD to prod, etc
組み込んでマッピングすることだけですが。