1

我正在尝试使用 SAM Local 来测试我的 lambda 函数(Python)。我的功能需要访问S3,这是通过boto3实现的。在我的本地计算机上,我的凭据存储在~/.aws/credentialsSAM 文档中,听起来像是在使用 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 访问它们的内容。解决此问题的任何帮助将不胜感激!

4

0 回答 0