具有和不具有RoleName参数的Cloudformation AWS IAM角色

时间:2020-05-23 12:15:32

标签: amazon-web-services amazon-cloudformation amazon-iam

使用Cloudformation创建新的IAM角色资源时,AWS::IAM::Role

有一个可选的RoleName参数,我不确定何时添加或RoleName参数是更好的选择。

以下是文档中指定的区别

  • 如果您未指定名称,则AWS CloudFormation会生成一个唯一的物理ID,并将该ID用作角色名称。
  • 如果指定名称,则必须指定CAPABILITY_NAMED_IAM值以确认模板的功能。
  • 如果在多个区域中重复使用同一模板,则命名IAM资源可能会导致不可恢复的错误。

使用或排除RoleName参数是否有其他功能上的区别?

2 个答案:

答案 0 :(得分:2)

如果您不指定名称,它将简单地为您生成一个名称(由堆栈和资源名称组成,末尾带有随机字符串)。

唯一的区别是可重用性。如果要多次重新创建堆栈,最好将此IAM角色ARN作为参数传递。

我建议不要命名,这样可以让您自由地创建堆栈,次数不限,而不必担心会破坏额外的资源。

如果您真的必须来自AWS的建议如下:

如果您在多个区域中重复使用同一模板,则命名IAM资源可能会导致不可恢复的错误。为防止这种情况,我们建议使用Fn :: Join和AWS :: Region创建特定于区域的名称,如以下示例所示:{“ Fn :: Join”:[“”,[{“ Ref”:“ AWS :: Region“},{” Ref“:” MyResourceName“}]]}。

答案 1 :(得分:0)

documentation解释说,命名您的角色可能危险

如果您在多个区域中重复使用同一模板,则

命名IAM资源可能导致不可恢复的错误。为防止这种情况,我们建议使用Fn :: Join和AWS :: Region创建特定于区域的名称,如以下示例所示:{“ Fn :: Join”:[“”,[{“ Ref”:“ AWS :: Region“},{” Ref“:” MyResourceName“}]]}。