如何在cloudformation模板中指定lambda函数和IAM角色名称

pre*_*ash 5 amazon-web-services aws-cloudformation amazon-iam aws-lambda

这是我的模板

{  
   "AWSTemplateFormatVersion":"2010-09-09",
   "Resources":{  
      "lambdafunction":{  
         "Type":"AWS::Lambda::Function",
         "Properties":{  
            "Handler":"index.handler",
            "Role":{  
               "Fn::GetAtt":[  
                  "RootRole",
                  "Arn"
               ]
            },
            "Code":{  
               "S3Bucket":"{s3_bucket_name}",
               "S3Key":"lambda-zip"
            },
            "Runtime":"java8",
            "Timeout":"25"
         }
      },
      "RootRole":{  
         "Type":"AWS::IAM::Role",
         "Properties":{  
            "AssumeRolePolicyDocument":{  
               "Version":"2012-10-17",
               "Statement":[  
                  {  
                     "Effect":"Allow",
                     "Principal":{  
                        "Service":[  
                           "ec2.amazonaws.com"
                        ]
                     },
                     "Action":[  
                        "sts:AssumeRole"
                     ]
                  }
               ]
            },
            "Path":"/",
            "Policies":[  
               {  
                  "PolicyName":"root",
                  "PolicyDocument":{  
                     "Version":"2012-10-17",
                     "Statement":[  
                        {  
                           "Effect":"Allow",
                           "Action":"*",
                           "Resource":"*"
                        }
                     ]
                  }
               }
            ]
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

堆栈创建后lambda函数的名称是lambda-lambdafunction-18SJKJ5Q40AKZ IAM角色的名称是lambda-RootRole-12S8E9CA0EOVM

该模板似乎没有办法定义lambda函数名称http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html.而且我不确定为什么最后会附加随机字符.

jar*_*mod 6

更新:AWS :: IAM :: Role和AWS :: Lambda :: Function现在都支持自定义名称.

默认情况下,CloudFormation会为资源名称生成唯一ID.这是有道理的,因为它允许您一次又一次地重复使用模板.

某些资源类型(但不是全部)支持自定义名称.支持自定义名称的示例是AWS :: DynamoDB :: Table('TableName')和AWS :: S3 :: Bucket('BucketName').

有关更多信息以及支持自定义名称的完整资源列表,请参阅此处.