aws中的不同资源(例如S3存储桶,lambda和角色)具有不同的最大长度和它们接受的不同字符集。
是否存在非常严格的资源名称,如果您遵循该名称,您还将遵守所有其他资源的限制?
我正在寻找一组约束,这些约束将遵循所有资源组强制执行的各种限制,在全局范围内,并且尽可能地允许。
理想的答案是一个很好的,明确的正则表达式。
答案 0 :(得分:4)
函数名称只能包含字母,数字,连字符或下划线
此字段太长。最大长度为64个字符。
此字段太短。最小长度为1个字符。
来源:AWS Lambda“创建功能”页面& API docs。
存储桶名称不得包含大写字母或下划线
存储桶名称长度必须介于3到63个字符之间
来源:AWS S3“创建存储桶”页面& API docs。
必须包含1到63个字母数字字符或连字符。
第一个字必须是一个字母。
不能以连字符结尾或包含两个连续的连字符。
来源:AWS RDS docs
因此,仅添加上述3项服务,我们可以得出结论:最好是:
仅限小写字母数字和连字符。
最少3个字符,最多63个。
第一个字符必须是字母,不能以连字符结尾或包含两个连续的连字符。
我还建议从最大长度中减去一个公共前缀(即公司名称缩写,“google-”),以避免在尝试创建可能发生的桶(或任何AWS全名)时遇到问题有效的通用名称=“john”
同时查看IAM用户名和角色长度限制(找到here),似乎没有任何内容与上述结论相冲突。
/(?=.{3,63}$)(?!-)(?!.*--)[a-z0-9-]+(?<!-)/
/(^[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