问题描述
我有使用Zappa部署到lambda的Python Flask应用程序(由于ORM和psycopg2的原因)。我正在使用boto库执行一些与S3相关的操作,并且使用它来初始化它:
import boto3
client = boto3.client(
's3',aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY
)
但是我想避免在代码中使用aws_access_key
和aws_secret_access_key
。
我创建了一个单独的空lambda函数,并设置了适当的角色和权限,然后在函数代码中,我跳过了放置访问和密钥的操作
client = boto3.client('s3')
,这很好。但是,当我使用zappa部署我的Flask应用程序时,即使我设置了与上述相同的角色和权限(并且还提供了对S3的访问权限),它仍然无法工作。
有没有一种方法可以绕过将aws_access_key
和aws_secret_access_key
放入Flask应用程序并部署到lambda?
解决方法
Zappa建议设置an AWS credentials file。这应该使您可以将凭据保留在代码之外,但可以让SDK查找和使用您的凭据。