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

Jor*_*ris 7 naming amazon-web-services

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

是否有一个非常严格的资源名称,如果遵循它,您还将遵循所有其他资源的限制吗?

我正在寻找一组约束,这些约束将服从所有资源组(在全球范围内)强制执行的各种约束,并且还要尽可能地宽松。

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

mos*_*azh 8

1. AWS Lambda

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

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

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

来源:AWS Lambda“创建函数”页面和API 文档

2. S3存储桶:

值区名称不得包含大写字符或下划线

值区名称必须介于3到63个字符之间

来源:AWS S3“创建存储桶”页面和API 文档

3. RDS

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

第一个字符必须是字母。

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

来源:AWS RDS 文档

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

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

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

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

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

还要查看IAM用户名和角色长度限制(在此处找到),似乎与上述结论没有冲突。

正则表达式1(用于具有正向支持功能的高级正则表达式引擎)

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

阅读对更好地理解上述正则表达式。

正则表达式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]$)/
Run Code Online (Sandbox Code Playgroud)

  • ALB目标组名称的最大长度为32个字符:目标组名称'test-stack-type-rainy-alb-target-group'不能超过'32'个字符(服务:AmazonElasticLoadBalancingV2;状态代码:400;错误代码:ValidationError`大概可以通过将长度约束更改为{{3,32}`来更改Regex#1,就像#2一样...不确定。 (2认同)
  • ElastiCache群集名称的最大长度为20个字符:`参数CacheClusterIdentifier无效,因为它超过20个字符。” https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties -elasticache-cache-cluster.html#cfn-elasticache-cachecluster-clustername。那将限制大小“ {3,20}”。 (2认同)