OLD | NEW |
(Empty) | |
| 1 # -*- coding: utf-8 -*- |
| 2 # Copyright 2012 Google Inc. All Rights Reserved. |
| 3 # |
| 4 # Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 # you may not use this file except in compliance with the License. |
| 6 # You may obtain a copy of the License at |
| 7 # |
| 8 # http://www.apache.org/licenses/LICENSE-2.0 |
| 9 # |
| 10 # Unless required by applicable law or agreed to in writing, software |
| 11 # distributed under the License is distributed on an "AS IS" BASIS, |
| 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 # See the License for the specific language governing permissions and |
| 14 # limitations under the License. |
| 15 """Additional help about gsutil object and bucket naming.""" |
| 16 |
| 17 from __future__ import absolute_import |
| 18 |
| 19 from gslib.help_provider import HelpProvider |
| 20 |
| 21 _DETAILED_HELP_TEXT = (""" |
| 22 <B>BUCKET NAME REQUIREMENTS</B> |
| 23 Google Cloud Storage has a single namespace, so you will not be allowed |
| 24 to create a bucket with a name already in use by another user. You can, |
| 25 however, carve out parts of the bucket name space corresponding to your |
| 26 company's domain name (see "DOMAIN NAMED BUCKETS"). |
| 27 |
| 28 Bucket names must conform to standard DNS naming conventions. This is |
| 29 because a bucket name can appear in a DNS record as part of a CNAME |
| 30 redirect. In addition to meeting DNS naming requirements, Google Cloud |
| 31 Storage imposes other requirements on bucket naming. At a minimum, your |
| 32 bucket names must meet the following requirements: |
| 33 |
| 34 - Bucket names must contain only lowercase letters, numbers, dashes (-), and |
| 35 dots (.). |
| 36 |
| 37 - Bucket names must start and end with a number or letter. |
| 38 |
| 39 - Bucket names must contain 3 to 63 characters. Names containing dots can |
| 40 contain up to 222 characters, but each dot-separated component can be |
| 41 no longer than 63 characters. |
| 42 |
| 43 - Bucket names cannot be represented as an IPv4 address in dotted-decimal |
| 44 notation (for example, 192.168.5.4). |
| 45 |
| 46 - Bucket names cannot begin with the "goog" prefix. |
| 47 |
| 48 - For DNS compliance, you should not have a period adjacent to another |
| 49 period or dash. For example, ".." or "-." or ".-" are not acceptable. |
| 50 |
| 51 |
| 52 <B>OBJECT NAME REQUIREMENTS</B> |
| 53 Object names can contain any sequence of Unicode characters, of length 1-1024 |
| 54 bytes when UTF-8 encoded. Object names must not contain CarriageReturn, |
| 55 CarriageReturnLineFeed, or the XML-disallowed surrogate blocks (xFFFE |
| 56 or xFFFF). |
| 57 |
| 58 We strongly recommend that you abide by the following object naming |
| 59 conventions: |
| 60 |
| 61 - Avoid using control characters that are illegal in XML 1.0 in your object |
| 62 names (#x7F-#x84 and #x86-#x9F). These characters will cause XML listing |
| 63 issues when you try to list your objects. |
| 64 |
| 65 - Avoid using "#" in your object names. gsutil interprets object names ending |
| 66 with #<numeric string> as version identifiers, so including "#" in object |
| 67 names can make it difficult or impossible to perform various operations on |
| 68 such objects using gsutil (see 'gsutil help versions'). |
| 69 |
| 70 - Avoid using "[", "]", "*", or "?" in your object names. gsutil interprets |
| 71 these characters as wildcards, so including any of these characters in |
| 72 object names can make it difficult or impossible to perform various wildcard |
| 73 operations using gsutil (see 'gsutil help wildcards'). |
| 74 |
| 75 See also 'gsutil help encoding' about file/object name encoding requirements |
| 76 and potential interoperability concerns. |
| 77 |
| 78 |
| 79 <B>DOMAIN NAMED BUCKETS</B> |
| 80 You can carve out parts of the Google Cloud Storage bucket name space |
| 81 by creating buckets with domain names (like "example.com"). |
| 82 |
| 83 Before you can create a bucket name containing one or more '.' characters, |
| 84 the following rules apply: |
| 85 |
| 86 - If the name is a syntactically valid DNS name ending with a |
| 87 currently-recognized top-level domain (such as .com), you will be required |
| 88 to verify domain ownership. |
| 89 - Otherwise you will be disallowed from creating the bucket. |
| 90 |
| 91 If your project needs to use a domain-named bucket, you need to have |
| 92 a team member both verify the domain and create the bucket. This is |
| 93 because Google Cloud Storage checks for domain ownership against the |
| 94 user who creates the bucket, so the user who creates the bucket must |
| 95 also be verified as an owner or manager of the domain. |
| 96 |
| 97 To verify as the owner or manager of a domain, use the Google Webmaster |
| 98 Tools verification process. The Webmaster Tools verification process |
| 99 provides three methods for verifying an owner or manager of a domain: |
| 100 |
| 101 1. Adding a special Meta tag to a site's homepage. |
| 102 2. Uploading a special HTML file to a site. |
| 103 3. Adding a DNS TXT record to a domain's DNS configuration. |
| 104 |
| 105 Meta tag verification and HTML file verification are easier to perform and |
| 106 are probably adequate for most situations. DNS TXT record verification is |
| 107 a domain-based verification method that is useful in situations where a |
| 108 site wants to tightly control who can create domain-named buckets. Once |
| 109 a site creates a DNS TXT record to verify ownership of a domain, it takes |
| 110 precedence over meta tag and HTML file verification. For example, you might |
| 111 have two IT staff members who are responsible for managing your site, called |
| 112 "example.com." If they complete the DNS TXT record verification, only they |
| 113 would be able to create buckets called "example.com", "reports.example.com", |
| 114 "downloads.example.com", and other domain-named buckets. |
| 115 |
| 116 Site-Based Verification |
| 117 ----------------------- |
| 118 |
| 119 If you have administrative control over the HTML files that make up a site, |
| 120 you can use one of the site-based verification methods to verify that you |
| 121 control or own a site. When you do this, Google Cloud Storage lets you |
| 122 create buckets representing the verified site and any sub-sites - provided |
| 123 nobody has used the DNS TXT record method to verify domain ownership of a |
| 124 parent of the site. |
| 125 |
| 126 As an example, assume that nobody has used the DNS TXT record method to verify |
| 127 ownership of the following domains: abc.def.example.com, def.example.com, |
| 128 and example.com. In this case, Google Cloud Storage lets you create a bucket |
| 129 named abc.def.example.com if you verify that you own or control any of the |
| 130 following sites: |
| 131 |
| 132 http://abc.def.example.com |
| 133 http://def.example.com |
| 134 http://example.com |
| 135 |
| 136 Domain-Based Verification |
| 137 ------------------------- |
| 138 |
| 139 If you have administrative control over a domain's DNS configuration, you can |
| 140 use the DNS TXT record verification method to verify that you own or control a |
| 141 domain. When you use the domain-based verification method to verify that you |
| 142 own or control a domain, Google Cloud Storage lets you create buckets that |
| 143 represent any subdomain under the verified domain. Furthermore, Google Cloud |
| 144 Storage prevents anybody else from creating buckets under that domain unless |
| 145 you add their name to the list of verified domain owners or they have verified |
| 146 their domain ownership by using the DNS TXT record verification method. |
| 147 |
| 148 For example, if you use the DNS TXT record verification method to verify your |
| 149 ownership of the domain example.com, Google Cloud Storage will let you create |
| 150 bucket names that represent any subdomain under the example.com domain, such |
| 151 as abc.def.example.com, example.com/music/jazz, or abc.example.com/music/jazz. |
| 152 |
| 153 Using the DNS TXT record method to verify domain ownership supersedes |
| 154 verification by site-based verification methods. For example, if you |
| 155 use the Meta tag method or HTML file method to verify domain ownership |
| 156 of http://example.com, but someone else uses the DNS TXT record method |
| 157 to verify ownership of the example.com domain, Google Cloud Storage will |
| 158 not allow you to create a bucket named example.com. To create the bucket |
| 159 example.com, the domain owner who used the DNS TXT method to verify domain |
| 160 ownership must add you to the list of verified domain owners for example.com. |
| 161 |
| 162 The DNS TXT record verification method is particularly useful if you manage |
| 163 a domain for a large organization that has numerous subdomains because it |
| 164 lets you control who can create buckets representing those domain names. |
| 165 |
| 166 Note: If you use the DNS TXT record verification method to verify ownership of |
| 167 a domain, you cannot create a CNAME record for that domain. RFC 1034 disallows |
| 168 inclusion of any other resource records if there is a CNAME resource record |
| 169 present. If you want to create a CNAME resource record for a domain, you must |
| 170 use the Meta tag verification method or the HTML file verification method. |
| 171 """) |
| 172 |
| 173 |
| 174 class CommandOptions(HelpProvider): |
| 175 """Additional help about gsutil object and bucket naming.""" |
| 176 |
| 177 # Help specification. See help_provider.py for documentation. |
| 178 help_spec = HelpProvider.HelpSpec( |
| 179 help_name='naming', |
| 180 help_name_aliases=['domain', 'limits', 'name', 'names'], |
| 181 help_type='additional_help', |
| 182 help_one_line_summary='Object and Bucket Naming', |
| 183 help_text=_DETAILED_HELP_TEXT, |
| 184 subcommand_help_text={}, |
| 185 ) |
OLD | NEW |