Ich suche nach einer Antwort auf konzeptioneller Ebene. Bitte verzichten Sie daher darauf, lediglich einen Link zur aws-Dokumentation als Antwort bereitzustellen.Was ist der Unterschied zwischen vordefinierten Richtlinien und benutzerdefinierten Richtlinien?
Es ist wie eine Dosenpolitik von boto erzeugt wird
@staticmethod
def _canned_policy(resource, expires):
"""
Creates a canned policy string.
"""
policy = ('{"Statement":[{"Resource":"%(resource)s",'
'"Condition":{"DateLessThan":{"AWS:EpochTime":'
'%(expires)s}}}]}' % locals())
return policy
Und es ist, wie benutzerdefinierte Richtlinie von derselben Bibliothek erzeugt wird
@staticmethod
def _custom_policy(resource, expires=None, valid_after=None, ip_address=None):
"""
Creates a custom policy string based on the supplied parameters.
"""
condition = {}
# SEE: http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/RestrictingAccessPrivateContent.html#CustomPolicy
# The 'DateLessThan' property is required.
if not expires:
# Defaults to ONE day
expires = int(time.time()) + 86400
condition["DateLessThan"] = {"AWS:EpochTime": expires}
if valid_after:
condition["DateGreaterThan"] = {"AWS:EpochTime": valid_after}
if ip_address:
if '/' not in ip_address:
ip_address += "/32"
condition["IpAddress"] = {"AWS:SourceIp": ip_address}
policy = {"Statement": [{
"Resource": resource,
"Condition": condition}]}
return json.dumps(policy, separators=(",", ":"))
In meinen Augen ein gekapselter Richtlinie ist im Wesentlichen eine benutzerdefinierte Richtlinie, jedoch mit weniger Attributen.
Wenn es eine korrekte Beobachtung ist, warum dann die Notwendigkeit für zwei verschiedene Arten von Richtlinien?