Как пройти аутентификацию в AWS с помощью AWS-ADFS для использования Boto3 - Python - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть следующий код Python для подключения к таблице DynamoDB в AWS:

# import requests
from __future__ import print_function  # Python 2/3 compatibility
import boto3
import json
import decimal
from boto3.dynamodb.conditions import Key, Attr


# Helper class to convert a DynamoDB item to JSON.
class DecimalEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, decimal.Decimal):
            return str(o)
        return super(DecimalEncoder, self).default(o)


def run():
    dynamodb = boto3.resource('dynamodb', region_name='ap-southeast-2')

    table = dynamodb.Table('work-gtfsr-tripupdates-dev-sydt')

    response = table.query(
        # ProjectionExpression="#yr, title, info.genres, info.actors[0]", #THIS IS A SELECT STATEMENT
        # ExpressionAttributeNames={"#yr": "year"},  # Expression Attribute Names for Projection Expression only. #SELECT STATEMENT RENAME
        KeyConditionExpression=Key('pingEpochTime').eq(1554016605) & Key('entityIndex').between(0, 500)
    )

    for i in response[u'Items']:
        print(json.dumps(i, cls=DecimalEncoder))


run()

Следующий код подтвержден для работы при подключении к моей личной учетной записи AWS (аутентификация через AWS CLI), ноон не работает за брандмауэром при аутентификации через AWS-ADFS.Когда я запускаю код для подключения к корпоративному экземпляру AWS, я получаю сообщение об ошибке:

botocore.exceptions.ClientError: An error occurred (UnrecognizedClientException) when calling the Query operation: The security token included in the request is invalid.

Когда я запускаю сценарий 'aws-adfs login' (подтвержденный для работы), он, по-видимому, правильно заполняетПапка .aws на моем домашнем диске и работала при развертывании функций Lambda в прошлом.Должен ли я что-то делать в коде для размещения токенов сеанса aws-adfs?

1 Ответ

0 голосов
/ 04 апреля 2019

Обнаружено на другой странице переполнения стека, что, по-видимому, для библиотеки Boto требуется запись '[default]' в файле ~ / .aws / credentials.

Я проверил скрипт входа aws-adfs, аутентифицировавшись с помощьюпрофиль называется 'default', и теперь все работает.

...