我正在尝试使用 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 访问它们的内容。解决此问题的任何帮助将不胜感激!