2017-08-25 61 views
0

我正在使用python通过AWS Simple Email Service发送电子邮件。AWS SES - 连接到boto集而不暴露代码中的访问密钥

为了尽可能提供最好的安全性,我想 做一个boto SES连接,而不会在代码中暴露我的访问密钥。

现在我建立这样

ses = boto.ses.connect_to_region(
    'us-west-2', 
    aws_access_key_id='<ACCESS_KEY>', 
    aws_secret_access_key='<SECRET_ACCESS_KEY>' 
) 

连接有没有办法做到这一点不暴露在脚本中我的快捷键?

+0

我会建议你使用boto3。你可以看到如何配置[这里](http://boto3.readthedocs.io/en/latest/guide/configuration.html)。 –

+0

您是在EC2机器还是非EC2机器上执行python代码? – helloV

回答

2

最简单的解决方案是使用你可能在你的Python代码os.environ获取环境变量。

export AWS_ACCESS_KEY_ID=<YOUR REAL ACCESS KEY> 
export AWS_SECRET_ACCESS_KEY=<YOUR REAL SECRET KEY> 

而在Python代码:

from os import environ as os_env 

ses = boto.ses.connect_to_region(
    'us-west-2', 
    aws_access_key_id=os_env['AWS_ACCESS_KEY_ID'], 
    aws_secret_access_key=os_env['AWS_SECRET_ACCESS_KEY']' 
) 
1

身份验证的首选方法是使用boto3的阅读您的AWS证书文件的能力。

使用aws configure命令配置您的AWS CLI。

然后,在你的脚本,你可以使用Session调用来获取证书: session = boto3.Session(profile_name='default')

2

两个选项设置名为ACCESS_KEY的环境变量,另一个名为SECRET_ACCESS_KEY,然后在你的代码,你将有:

import os 
ses = boto.ses.connect_to_region(
'us-west-2', 
aws_access_key_id=os.environ['ACCESS_KEY'], 
aws_secret_access_key=os.environ['SECRET_ACCESS_KEY'] 
) 

或使用JSON文件:

import json 
path_to_json = 'your/path/here.json' 

with open(path_to_json, 'r') as f: 
    keys = json.load(f) 

ses = boto.ses.connect_to_region(
'us-west-2', 
aws_access_key_id=keys['ACCESS_KEY'], 
aws_secret_access_key=keys['SECRET_ACCESS_KEY'] 
) 

json文件将包含: {'ACCESS_KEY':<ACCESS_KEY>, 'SECRET_ACCESS_KEY':<SECRET_ACCESS_KEY>}