Boto3 не находит учетные данные с помощью DynamoDB Encryption SDK - PullRequest
0 голосов
/ 26 февраля 2019

По какой-то причине учетные данные, предоставленные в сеансе boto3, не обрабатываются методом EncryptedTable из dynamodb-encryption-sdk.Те же учетные данные работают, если я просто использую метод незашифрованной таблицы непосредственно из boto3.

import boto3
from dynamodb_encryption_sdk import EncryptedTable
from dynamodb_encryption_sdk.material_providers.aws_kms import AwsKmsCryptographicMaterialsProvider
from environs import Env

env = Env()
env.read_env('local.env', False)

session = boto3.Session(aws_access_key_id=env('AWS_ACCESS_ID'),
                        aws_secret_access_key=env('AWS_SECRET_KEY'),
                        region_name=env('AWS_REGION'))

dynamodb = session.resource('dynamodb')

table = dynamodb.Table('accounts-table')

aws_cmk_id = env('AWS_CMK_ID')
aws_kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=aws_cmk_id)

encrypted_table = EncryptedTable(
    table=table,
    materials_provider=aws_kms_cmp,
)

plaintext_item = {
    'account_id': '4548',
    'account_name': 'Blah',
}

encrypted_table.put_item(Item=plaintext_item)

Вот что я получаю при выполнении этого кода:

  File "/Users/nirmalnatarajan/venvs/account-postman/lib/python3.7/site-packages/botocore/auth.py", line 357, in add_auth
    raise NoCredentialsError
botocore.exceptions.NoCredentialsError: Unable to locate credentials

Любая идея, что я мог бы бытьделать неправильно?Ценю вашу помощь.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Если вы называете свои переменные .env AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY, тогда они будут автоматически выбраны из os.environ, и вам не понадобится сеанс.

0 голосов
/ 26 февраля 2019

Попробуйте передать session в AwsKmsCryptographicMaterialsProvider :

aws_kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=aws_cmk_id,
                                                   botocore_session=session)

В качестве альтернативы, я думаю, вы можете установить его как сеанс по умолчанию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...