我正在尝试通过cloudformation创建一个s3存储桶。我尝试使用正则表达式^([0-9a-z .-]){3,63} $,但它也接受根据新的s3命名约定无效的模式“ ...”和“ ---”。(请参阅:https : //docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html)请帮忙?
规格有些混乱,但是主要标准似乎是这些:
如果是这样,则此正则表达式应匹配:
(?=^.{3,63}$)(?!^(\d+\.)+\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])\.)*([a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])$)
Run Code Online (Sandbox Code Playgroud)
第一组(?=^.{3,63}$)将确保匹配长度在3到63个字符之间。
下一组(?!^(\d+\.)+\d+$)将展望禁止匹配类似于IP地址的存储桶名称。
最后一组(^(([a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])\.)*([a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])$)匹配零个或多个标签,后跟一个圆点(([a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])\.)*,紧跟一个标签([a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])。
以下正则表达式满足 AWS 规范,前提是您不想允许.使用存储桶名称(这是建议,否则无法启用传输加速):
^((?!xn--)(?!.*-s3alias$)[a-z0-9][a-z0-9-]{1,61}[a-z0-9])$
Run Code Online (Sandbox Code Playgroud)
这个很好,因为它允许合并到更复杂的检查中,只需用其他字符串替换^和$,从而允许 ARN 检查等。
编辑:-s3alias根据 @ryanjdillon 的评论添加排除
| 归档时间: |
|
| 查看次数: |
5736 次 |
| 最近记录: |