AWS Boto3: Доступ запрещен при запуске в Django Server
Мой код textract успешно работает при запуске в собственном файле, однако, когда я пытаюсь запустить его на сервере разработки django, аутентификация перестает работать.
Я получаю это исключение:
botocore.errorfactory.InvalidS3ObjectException: An error occurred (InvalidS3ObjectException) when calling the StartDocumentAnalysis operation: Unable to get object metadata from S3. Check object key, region and/or access permissions.
До сих пор я пробовал:
- Passing credentials as parameters in the boto.client() method
 - Assuming a role, rather than using IAM user credentials
 - Verified the object key, and region
 - Checked my firewall
 
Вот мой формат аутентификации:
client = boto3.client('sts', region_name="us-east-2") # Assumes a role.
response = client.assume_role(
    RoleArn='arn:aws:iam::xxx:role/xxx/xxx',
    RoleSessionName = 'djangoBoto3',
    DurationSeconds = 3600,
)
textract = boto3.client( # Instantiate the textract client
    "textract", 
    region_name="us-east-2",
    aws_access_key_id = response['Credentials']['AccessKeyId'],
    aws_secret_access_key = response['Credentials']['SecretAccessKey'],
    aws_session_token = response['Credentials']['SessionToken']
)
Вот как я вызываю функцию textract
response = textract.start_document_analysis(
    DocumentLocation = {
        'S3Object':{
            'Bucket': bucket,
            'Name': key,
        }
    },
    FeatureTypes = ['TABLES', 'FORMS']
)
Некоторые вызовы AWS API работают в Django. Например, я могу загружать файлы в ведра S3. Это наводит меня на мысль, что это может быть проблемой подписи. Я читал здесь Amazon Docs, что некоторые операции AWS, такие как S3, могут работать без подписи.
Попробуйте использовать один и тот же регион для ведра Textract и S3, а при использовании роли убедитесь, что она имеет соответствующие разрешения для доступа к S3 и Textract.