2015-06-09 4 views
1

Я пытаюсь получить теги ElastiCache, используя Boto3 и Python. В boto3 существует функция called-list_tags_for_resource(). Но проблема, с которой я столкнулся, заключается в том, как найти имя ресурса. Я использую следующий код:Извлечение ElastiCache Тэги

from boto3.session import Session 

sess = Session(aws_access_key_id=id,aws_secret_access_key=key) 
conn = sess.client(service_name='elasticache', region_name='us-east-1') 
arn="arn:aws:elasticache:us-east-1:123456:cluster:name_of_cluster" 
print conn.list_tags_for_resource(ResourceName=name) 

Это дает следующее сообщение об ошибке:

botocore.exceptions.ClientError: An error occurred (InvalidParameterValue) when calling the ListTagsForResource operation: Unauthorized call. Please check the region or customer id 
+0

Ошибка, которую вы получаете, предполагает, что учетные данные, которые вы поставляете, являются неправильными. Дважды проверьте ключ доступа и секретный ключ. – garnaat

+0

Учетные данные в порядке. В основном проблема заключается в том, как получить имя ресурса? –

+0

Я не уверен, что это правда. Я попробовал тестовый пример с недопустимым ARN и получил ошибку CacheClusterNotFound, а не ошибку, которую вы получаете. Однако возможно, что если вы создаете ARN без действительного идентификатора учетной записи (то, что вы показываете как 123456 в своем примере), вы можете получить эту ошибку. Вы используете свой правильный идентификатор учетной записи? – garnaat

ответ

3

Если вы используете ReadOnlyAccess управляемого политики, вы не сможете перечислить теги для elasticache. Убедитесь, что ваш пользователь имеет elasticache:ListTagsForResource явно установленный в своей политике. В настоящее время Amazon не включает это разрешение в свою политику ReadOnlyAccess. Политика, которая позволяет просматривать elasticache теги будут выглядеть следующим образом:

{ 
    "Version": "2015-06-26", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "elasticache:ListTagsForResource" 
      ], 
      "Resource": "*" 
     } 
    ] 
} 

Я считаю, что это должно быть частью политики ReadOnlyAccess и открыл билет с Amazon. Это был их ответ:

Вы поднимаете действительную точку в отношении «эластичная эластичность: ListTagsForResource», которая не включена в управляемую политику AWS, предоставленную «ReadOnlyAccess». Мы не можем назвать его читаемым только тогда, когда он не позволяет кому-то перечислять теги на именованном ресурсе, на мой взгляд. Поэтому я открыл внутренний билет с командой, которая контролирует эти управляемые политики; попросив добавить в «ReadOnlyAccess» API «elasticache: ListTagsForResource».

0

Ну, у сценария есть некоторые проблемы. Ваша передача переменной 'name', которая не определена. Я думаю, вы имеете в виду arn и, возможно, есть другие способы сделать это, но я определяю region_name в сеансе, а не в клиенте. Попробуйте что-нибудь подобное.

session = boto3.Session(region_name='us-east-1',aws_access_key_id=id,aws_secret_access_key=key) 
client = session.client("elasticache") 
arn = "arn:aws:elasticache:us-east-1:1234567889:cluster:rand57hzn577a78-0001-001" 
client.list_tags_for_resource(ResourceName=arn) 

 Смежные вопросы

  • Нет связанных вопросов^_^