botocore.exceptions.ProfileNotFound 当代码在AWS弹性beantalk上运行时,但在本地没问题

Posted

技术标签:

【中文标题】botocore.exceptions.ProfileNotFound 当代码在AWS弹性beantalk上运行时,但在本地没问题【英文标题】:botocore.exceptions.ProfileNotFound when code run on AWS elastic beanstalk, but locally it's OK 【发布时间】:2016-11-18 02:07:24 【问题描述】:

我正在尝试在 Elastic Beanstalk 上运行 python 应用程序,该应用程序需要具有 SQS 和 Dynamo DB 的权限。

我在 ~/.aws/config 文件下创建了一个配置文件,如下所示:

[profile yolo]
aws_access_key_id = some-key
aws_secret_access_key = some-secret
region = some-region

并且还启动了弹性豆茎,例如:

eb init --profile yolo

但是当我在线查看日志时,它指出:

botocore.exceptions.ProfileNotFound: The config profile (yolo) could not be found

如何让 boto3 知道弹性豆茎环境中的此配置文件?

谢谢。

【问题讨论】:

【参考方案1】:

如果设置了 AWS_DEFAULT_PROFILE 环境变量,但不存在配置文件,您也会收到此错误。

【讨论】:

任何解决方案?! 在这种情况下,我的解决方案是创建~/.aws/config 文件。【参考方案2】:

尝试将您的 .aws/config 文件头更改为 - [yolo] 而不是 [profile yolo],并将配置和凭据分成两个文件,如此链接所述 - http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html 这应该可以解决您的问题。

【讨论】:

'config' 文件必须具有每个配置文件的 'profile' 前缀。但是,我会尝试将凭据分离到“凭据”文件并在此处发布结果 引用我链接到的页面 - "重要 AWS 凭证文件使用与命名配置文件的 CLI 配置文件不同的命名格式。不要包含 'profile ' 在 AWS 凭证文件中配置命名配置文件时的前缀。" 我对您的建议持怀疑态度,但还是尝试了 - 它没有用。我将凭据移至“[yolo]”下的“凭据”文件。我在 'config' 下调用了配置文件,例如 '[yolo]' 和 '[profile yolo]',但没有解决。这是有道理的:两个文件都存储在本地。没有什么可以将它们转移到 AWS。与“.ebextensions”和“elasticbeanstalk”下的文件不同,这些文件是特定于环境的,“credentials”和“config”文件对于所有环境都是全局的。如果我只有一台 EC2 服务器,我会将两个文件都放在那里。但在 EB 上工作时我不能这样做。 我刚刚遇到了同样的问题,从[profile foo] 中的~/.aws/credentials 中删除profile 对我有用。我现在可以使用here 指示的方法选择首选的凭据/配置文件集。

以上是关于botocore.exceptions.ProfileNotFound 当代码在AWS弹性beantalk上运行时,但在本地没问题的主要内容,如果未能解决你的问题,请参考以下文章