Я пытался понять, почему этот шаг в моем скрипте не работает, насколько я знаю, у моего пользователя есть разрешения делать все в нашей учетной записи AWS, поэтому я немного запутался. Мне было интересно, есть ли способ получить ответ от botocore или самого boto3 с указанием отсутствующего разрешения iam для вашего пользователя, а не выяснять точные разрешения для работы, которая вам нужна, чтобы сделать это самостоятельно?
Первоначально у меня был настроен zone_id здесь
>>> dns_record = connection.change_resource_record_sets(
... HostedZoneId=zone_id,
... ChangeBatch={
... 'Changes': [
... {
... 'Action': action,
... 'ResourceRecordSet': {
... 'Name': name,
... 'Type': record_type,
... 'TTL': 60,
... 'AliasTarget': {
... 'HostedZoneId': zone_id,
... 'DNSName': destination,
... 'EvaluateTargetHealth': eval_health
... },
... }
... },
... ]
... }
... )
Traceback (most recent call last):
File "<stdin>", line 14, in <module>
File "/usr/lib/python2.7/site-packages/botocore/client.py", line 253, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/lib/python2.7/site-packages/botocore/client.py", line 543, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ChangeResourceRecordSets operation: User: arn:aws:iam::1337:user/rumbles is not authorized to access this resource
>>>
>>> print connection, zone_id, action, name, record_type, destination, eval_health
<botocore.client.Route53 object at 0x7f9049d64590> Z117KPS5GTRQ2G UPSERT test-rumbles.domain.com A some-elb-1337.us-east-1.elb.amazonaws.com False
Если я изменю zone_id на зону нашего домена AWS, я получу:
>>> zone_id = "Z2401337RNHANU"
>>>
>>> try:
...
An error occurred (InvalidInput) when calling the ChangeResourceRecordSets operation: Invalid request
{'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 400, 'RequestId': '2bfde962-0e81-11e7-b312-53961dec3e91', 'HTTPHeaders': {'x-amzn-requestid': '2bfde962-0e81-11e7-b312-53961dec3e91', 'date': 'Tue, 21 Mar 2017 21:56:00 GMT', 'content-length': '259', 'content-type': 'text/xml', 'connection': 'close'}}, 'Error': {'Message': 'Invalid request', 'Code': 'InvalidInput', 'Type': 'Sender'}}
Мне приходилось разбираться с этими проблемами раньше, я знаю, что мне просто нужно найти правильное разрешение IAM для этой конкретной работы (при условии, что я на правильном пути), но мне было интересно, есть ли способ получить это информация возвращена из botocore? Вместо того, чтобы тратить свое время на поиск вручную, могу ли я получить правило iam, которое отказало мне в доступе, возвращенное моим, кроме как каким-то образом?
Или я говорю о запросе функции, который я еще не нашел/не создал?