У меня есть следующий код 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?