2017-08-25 66 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>}

相關問題