AWS SES - 连接到 boto 集而不在代码中公开访问密钥
AWS SES - Connect to boto set without exposing access keys in code
我正在使用 python 通过 AWS 简单电子邮件服务发送电子邮件。
为了获得最好的安全性,我想
在代码中不暴露我的访问密钥的情况下建立 boto SES 连接。
现在我正在建立这样的连接
ses = boto.ses.connect_to_region(
'us-west-2',
aws_access_key_id='<ACCESS_KEY>',
aws_secret_access_key='<SECRET_ACCESS_KEY>'
)
Is there a way to do this without exposing my access keys inside the script?
最简单的解决方案是使用您可以在 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']'
)
首选的身份验证方法是使用 boto3 读取您的 AWS 凭证文件的能力。
使用 aws configure
命令配置您的 AWS CLI。
然后,在您的脚本中,您可以使用 Session
调用来获取凭据:
session = boto3.Session(profile_name='default')
两个选项是设置一个名为 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>}
为您的 EC2 实例附加一个具有 SES 权限的 IAM 角色,这样您就不必显式传递凭据。您的脚本将自动从元数据服务器获取凭据。
参见:Easily Replace or Attach an IAM Role to an Existing EC2 Instance by Using the EC2 Console。那么你的代码将是这样的:
ses = boto.ses.connect_to_region('us-west-2')
我正在使用 python 通过 AWS 简单电子邮件服务发送电子邮件。
为了获得最好的安全性,我想 在代码中不暴露我的访问密钥的情况下建立 boto SES 连接。
现在我正在建立这样的连接
ses = boto.ses.connect_to_region(
'us-west-2',
aws_access_key_id='<ACCESS_KEY>',
aws_secret_access_key='<SECRET_ACCESS_KEY>'
)
Is there a way to do this without exposing my access keys inside the script?
最简单的解决方案是使用您可以在 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']'
)
首选的身份验证方法是使用 boto3 读取您的 AWS 凭证文件的能力。
使用 aws configure
命令配置您的 AWS CLI。
然后,在您的脚本中,您可以使用 Session
调用来获取凭据:
session = boto3.Session(profile_name='default')
两个选项是设置一个名为 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>}
为您的 EC2 实例附加一个具有 SES 权限的 IAM 角色,这样您就不必显式传递凭据。您的脚本将自动从元数据服务器获取凭据。
参见:Easily Replace or Attach an IAM Role to an Existing EC2 Instance by Using the EC2 Console。那么你的代码将是这样的:
ses = boto.ses.connect_to_region('us-west-2')