我正在尝试使用SAM Local来测试我的lambda函数(Python)。我的功能需要访问S3,这是通过boto3实现的。在我的本地计算机上,我的凭据存储在~/.aws/credentials
中,并且从SAM文档中听起来像是在使用SAM CLI时访问了这些凭据
SAM CLI将使用您本地配置的IAM凭据调用功能。
这是在AWS上部署后访问S3存储桶的方式:
s3_resource = boto3.resource('s3')
s3_bucket = s3_resource.Bucket(<bucket_name>)
s3_bucket.download_file(<file_key>,
<download_name>)
我已经尝试过使用SAM本地调用的方式,但是了解您需要传递所使用的AWS配置文件。所以我尝试运行此命令:
sam local invoke <sam_identified> --event event.json --profile <aws_profile>
此函数从不执行...只是挂在此输出inside runtime container
我也尝试过:
session = boto3.Session(profile_name=<aws_profile>)
s3_resource = Session.client('s3')
s3_bucket = s3_resource.Bucket(<bucket_name>)
s3_bucket.download_file(<file_key>,
<download_name>)
但是当我运行命令时:
sam local invoke <sam_identified> --event event.json --profile <aws_profile>
我收到以下答复:
The config profile (<aws_profile>) could not be found
我知道位于~/.aws/credentials
的凭据没有问题,但是感觉如何通过SAM CLI访问凭据可能会丢失。解决该问题的任何帮助将不胜感激!