如何在 boto3 中使用带有命名配置文件会话的 aws-encryption-sdk
How to use aws-encryption-sdk with a named profile session in boto3
我有一个使用 boto3 提取 dynamoDB 的简单脚本 table。然后我需要使用 aws-encryption-sdk 来解密条目(不能只将 kms 与 boto3 一起使用,因为它是用 aws-encryption-sdk 加密的)
我的问题是我正在使用 boto3 的命名配置文件来提取信用,但我似乎无法将此会话传递给 AWS 加密 sdk。如果我将原始环境变量粘贴到我的 CLI 会话中,那么一切正常。
有没有一种方法可以让我使用活动的 boto3 会话设置我的环境变量,以便 aws sdk 使用它们?
我发现了这个问题,似乎 aws_encryption_sdk 想要一个 botocore_session=
参数传递给它,这在文档 imo 中并不是很清楚。
import boto3
import base64
import aws_encryption_sdk
from aws_encryption_sdk.identifiers import CommitmentPolicy
import botocore.session
botocore_session = botocore.session.get_session()
REGION = "us-west-2"
session = boto3.Session(profile_name='admin', region_name=REGION, botocore_session=botocore_session)
ciphertext = 'very encrypted text'
client = aws_encryption_sdk.EncryptionSDKClient(commitment_policy=CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT)
kms_prime_key = aws_encryption_sdk.StrictAwsKmsMasterKeyProvider(
key_ids=['arn:aws:kms:us-west-2:123456789012:key/1234-acb-ffff-22222-4444'], botocore_session = botocore_session
)
my_ciphertext, encryptor_header = client.decrypt(
source=base64.b64decode(ciphertext),
key_provider=kms_prime_key
)
plaintext_pass = my_ciphertext.decode("utf-8")
print(plaintext_pass)
我有一个使用 boto3 提取 dynamoDB 的简单脚本 table。然后我需要使用 aws-encryption-sdk 来解密条目(不能只将 kms 与 boto3 一起使用,因为它是用 aws-encryption-sdk 加密的)
我的问题是我正在使用 boto3 的命名配置文件来提取信用,但我似乎无法将此会话传递给 AWS 加密 sdk。如果我将原始环境变量粘贴到我的 CLI 会话中,那么一切正常。
有没有一种方法可以让我使用活动的 boto3 会话设置我的环境变量,以便 aws sdk 使用它们?
我发现了这个问题,似乎 aws_encryption_sdk 想要一个 botocore_session=
参数传递给它,这在文档 imo 中并不是很清楚。
import boto3
import base64
import aws_encryption_sdk
from aws_encryption_sdk.identifiers import CommitmentPolicy
import botocore.session
botocore_session = botocore.session.get_session()
REGION = "us-west-2"
session = boto3.Session(profile_name='admin', region_name=REGION, botocore_session=botocore_session)
ciphertext = 'very encrypted text'
client = aws_encryption_sdk.EncryptionSDKClient(commitment_policy=CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT)
kms_prime_key = aws_encryption_sdk.StrictAwsKmsMasterKeyProvider(
key_ids=['arn:aws:kms:us-west-2:123456789012:key/1234-acb-ffff-22222-4444'], botocore_session = botocore_session
)
my_ciphertext, encryptor_header = client.decrypt(
source=base64.b64decode(ciphertext),
key_provider=kms_prime_key
)
plaintext_pass = my_ciphertext.decode("utf-8")
print(plaintext_pass)