gpt4 book ai didi

python - S3复制命令给出错误+如何从复制命令中获取 key

转载 作者:太空宇宙 更新时间:2023-11-03 17:09:10 26 4
gpt4 key购买 nike

为什么我的 S3 复制命令到 redshift 会出现此错误?这是复制命令:

COPY dbtablename from 's3://rcname/foldername/file.csv CREDENTIALS 'aws_access_key_id=xxxxxxx;aws_secret_access_key=yyyyyyy/zzzz' CSV IGNOREHEADER 1;

我的错误是:

psycopg2.ProgrammingError: syntax error at or near "aws_access_key_id"
LINE 1: ...rcname/foldername/file.csv CREDENTIALS 'aws_access...

我有第二个问题:如何从复制命令中删除 key 。我正在使用 python,对于与 S3 的关系,我使用 Boto3 和 AWS CLI Keyring 来加密我的 key ,因此我不必将 key 放入我的代码中

现在我想对复制命令(redshift)执行相同的操作。但我找不到好的替代方案。有人知道怎么做吗?

最佳答案

如果您已设置 aws cli 并已按照 http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html 中的步骤操作,那么您的主目录中将有两个已经具有凭据的文件:

~/.aws/config

~/.aws/credentials

您可以在 Python 中使用 boto 从这些文件访问 aws_access_key_idaws_secret_access_key

具体来说,

import boto
from boto import ec2
ec2 = boto.ec2.connect_to_region('us-west-2', profile_name='default')

access_key = ec2.gs_access_key_id
secret_key = ec2.gs_secret_access_key

现在可以直接在代码中插入这些键:

query = '''
COPY dbtablename
from 's3://rcname/foldername/file.csv'
CREDENTIALS
'aws_access_key_id={access_key};aws_secret_access_key={secret_key}'
CSV
IGNOREHEADER 1;
'''.format(access_key=access_key,secret_key=secret_key)

参见https://blogs.aws.amazon.com/security/post/Tx3D6U6WSFGOK2H/A-New-and-Standardized-Way-to-Manage-Credentials-in-the-AWS-SDKs有关如何用其他语言执行此操作的示例。

关于python - S3复制命令给出错误+如何从复制命令中获取 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com