S3 复制命令给出错误 + 如何从复制命令中删除密钥
S3 copy command gives error + how to take away secret keys from copy command
为什么我的 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...
我有第二个问题:如何从复制命令中删除密钥。我正在使用 python,为了与 S3 的关系,我使用 Boto3 和 AWS CLI Keyring 来加密我的密钥,所以我不必将密钥放在我的代码中
现在我想对复制命令(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_id
和 aws_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。
为什么我的 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...
我有第二个问题:如何从复制命令中删除密钥。我正在使用 python,为了与 S3 的关系,我使用 Boto3 和 AWS CLI Keyring 来加密我的密钥,所以我不必将密钥放在我的代码中
现在我想对复制命令(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_id
和 aws_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。