什么是最严格的资源名称限制(例如字符和长度)?

时间:2017-09-05 10:33:47

标签: amazon-web-services naming

aws中的不同资源(例如S3存储桶,lambda和角色)具有不同的最大长度和它们接受的不同字符集。

是否存在非常严格的资源名称,如果您遵循该名称,您还将遵守所有其他资源的限制?

我正在寻找一组约束,这些约束将遵循所有资源组强制执行的各种限制,在全局范围内,并且尽可能地允许。

理想的答案是一个很好的,明确的正则表达式。

2 个答案:

答案 0 :(得分:4)

1。 AWS Lambda

  

函数名称只能包含字母,数字,连字符或下划线

     

此字段太长。最大长度为64个字符。

     

此字段太短。最小长度为1个字符。

来源:AWS Lambda“创建功能”页面& API docs

2。 S3 Bucket:

  

存储桶名称不得包含大写字母或下划线

     

存储桶名称长度必须介于3到63个字符之间

来源:AWS S3“创建存储桶”页面& API docs

3。 RDS

  

必须包含1到63个字母数字字符或连字符。

     

第一个字必须是一个字母。

     

不能以连字符结尾或包含两个连续的连字符。

来源:AWS RDS docs

因此,仅添加上述3项服务,我们可以得出结论:最好是:

  

仅限小写字母数字和连字符。

     

最少3个字符,最多63个。

     

第一个字符必须是字母,不能以连字符结尾或包含两个连续的连字符。

我还建议从最大长度中减去一个公共前缀(即公司名称缩写,“google-”),以避免在尝试创建可能发生的桶(或任何AWS全名)时遇到问题有效的通用名称=“john”

同时查看IAM用户名和角色长度限制(找到here),似乎没有任何内容与上述结论相冲突。

正则表达式#1(对于具有先行支持的高级正则表达式引擎)

 /(?=.{3,63}$)(?!-)(?!.*--)[a-z0-9-]+(?<!-)/

阅读thisthis,以便更好地了解上面的正则表达式。

Regex#2

 /(^[a-z\d]{1,2}((-[a-z\d])|([a-z\d]{1,2})){0,30}[a-z\d]$)|(^[‌​a-z\d]((-[a-z\d])|([‌​a-z\d]{1,2})){0,30}[‌​a-z\d-]?[a-z\d]$)/

答案 1 :(得分:0)

为此,AWS Athena数据库对象(数据库,表和列)应为小写字母,并且除下划线外不包含任何特殊字符。如果您不遵守这些约定,则可能无法创建它们-但尝试查询它们时会遇到问题:https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html