AWS: 找不到配置文件(MyName)

每次我想用 AWS 配置一些东西时,都会得到以下错误:

"The config profile (myname) could not be found"

象: aws 配置

我正在使用 Python 3.4,我想使用 AWS CLI Keyring 来加密我的凭证。

184304 次浏览

can you check your config file under ~/.aws/config- you might have an invalid section called [myname], something like this (this is an example)

[default]
region=us-west-2
output=json


[myname]
region=us-east-1
output=text

只要删除[ myname ]部分(包括此配置文件的所有内容) ,您就可以再次运行 aws cli

使用方法如下

[profilename]
region=us-east-1
output=text

示例 cmd

aws --profile myname CMD opts

您真的设置了您的特定用户吗?AWS 中的演练安装指南解释了如何设置默认用户,以及如何设置其他用户。如果您没有完成完整的设置,您将只有一个默认块,并且您的 myName 将不会被创建。.

我认为在 http://docs.aws.amazon.com/lambda/latest/dg/setup-awscli.html的 AWS 文档中缺少了一些东西,它没有提到您应该编辑文件 ~/.aws/config来添加您的用户名配置文件。有 两条路可以做到这一点:

  1. 编辑 ~/.aws/config

  2. aws configure --profile "your username"

面对类似的问题,发现下面的链接比这里提供的答案更有帮助。我猜这是由于 AWS CLI 的更新,因为已经提供了答案。

Https://serverfault.com/questions/792937/the-config-profile-adminuser-could-not-be-found

Essentially it helps to create two different files (i.e. one for the general config related information and the second for the credentials related information).

当我转移到一台新机器时,我遇到了这个问题,我带着我的 AWS _ DEFAULT _ PROFILE 环境变量,但没有我的 ~/。Aws 目录。在取消变量设置或正确配置命名配置文件之前,我无法使任何 awscli 命令工作。但是即使是 aws configure命令也被破坏了,这使得事情变得有点棘手。假设你手边有一个类似 Unix 的 shell:

  1. 确定会话中可能包含哪些特定于 AWS 的变量: env | grep AWS_
    • if you don't see AWS_DEFAULT_PROFILE or AWS_PROFILE listed here, this answer is not applicable to you.
  2. 暂时删除默认配置文件: unset AWS_DEFAULT_PROFILE和/或 unset AWS_PROFILE
  3. 配置有问题的配置文件: aws --profile foo configure
  4. 重置默认配置文件变量: exec $SHELL
  5. 测试新设置: aws iam get-user

对我来说,这是因为我的 .aws/config文件看起来像这样:

[profile myname]
aws_access_key_id = ....
aws_secret_access_key = ....
region=us-west-1

我认为原因是我基于我的 .aws/credentials文件,这需要有 [profile myname]的 Zappa,也许还有一些其他的 aws/弹性豆茎工具。

当我把 config改成这个时,效果非常好:

[myname]
aws_access_key_id = ....
aws_secret_access_key = ....
region=us-west-1

确保您处于正确的虚拟环境中。我更新了 PyCharm,出于某种原因,我不得不再次将我的项目指向我的 VE。打开终端,我没有在我的 VE 时尝试 zappa 更新(并得到这个错误)。重启魅惑术,一切恢复正常。

使用配置文件并不复杂,文档可以在以下网址找到: Https://docs.aws.amazon.com/cli/latest/topic/config-vars.html (但是您需要注意像 AWS _ PROFILE 这样的 env 变量)

Using profile with aws cli requires a config file (default at ~/.aws/config or set using AWS_CONFIG_FILE). 一个示例配置文件供参考: `

[profile PROFILE_NAME]
output=json
region=us-west-1
aws_access_key_id=foo
aws_secret_access_key=bar

`

Env 变量 AWS_PROFILE通知 AWS cli 要从 AWS 配置中使用的概要文件。它不像 AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY用于 ~/.aws/credentials那样是配置文件的替代品。

另一个有趣的事实是,如果设置了 AWS_PROFILE并设置了 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量,那么 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY提供的凭据将覆盖位于 AWS_PROFILE提供的概要文件中的凭据。

In my case, I had the variable named "AWS_PROFILE" on Environment variables with an old value.

enter image description here

在我的例子中,我使用了 AWS CLI 工具的 Docker 方法,但是我还没有读到足够多的说明,没有意识到我必须使我的凭据目录对于 Docker 容器是可见的。 Https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-docker.html

而不是

docker run --rm -it amazon/aws-cli:latest command args...

I needed to do:

docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli:latest command args...

以防有人试图在无头服务器上执行此操作(在我的例子中是 CI 运行器,向 kubeconfig 添加 EKS 集群配置)。

我必须这样做的原因是,运行程序位于与所讨论的 EKS 集群不同的 AWS 帐户中(AWS ek 命令在相同的帐户中查找)。

我确实有办法验证到正确的 AWS 帐户,该帐户用有效的凭证填充 ~/. AWS/凭证。

首先我验证填充 ~/. aws/凭据 然后

cp ~/.aws/credentials ~/.aws/config
sed -i 's/profilename/profile profilename/g' ~/.aws/config

然后当我跟着它跑的时候,它就起作用了

aws eks update-kubeconfig --name cluster-name --profile profilename --region us-east-1

我在 Nginx 和 Gunicorn 部署 Flask 应用程序时也遇到过同样的问题。

It may helpful for someone who faces the same issue as I was

我的案例: < strong > 使用 AWS 凭据生成 rds AUTH 令牌

在开发模式下,它工作正常,能够从 。哎呀文件夹获取 AWS 配置

当我尝试通过 它失败了运行它,即使我给所有的根权限,各自的文件夹和服务。

我已经在环境变量中存储了 AccessKey 和 Secretariat Key 并使用这些凭据创建身份验证标记

import boto3,os
S3_KEY=os.environ['aws_access_key']
S3_SECRET=os.environ['aws_secret_access_key']
def generate_iam_rds_token(server,region,port,user,S3_KEY,S3_SECRET):
s3_conn = boto3.client('rds', region_name=region,
aws_access_key_id=S3_KEY,
aws_secret_access_key=S3_SECRET)
pwd = s3_conn.generate_db_auth_token(server, port, user, Region=region)
return pwd
#call the method to get a token
server='https://example.com'
region='ap-west-3'
port='port_number'
user='db_user_name'
pwd_token=generate_iam_rds_token(server,region,port,user,S3_KEY,S3_SECRET)


SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://{user}:{pwd}@{host}:{port}/{db}'.format(user=user,host=host,port=port,db=db,pwd=pwd)

注意: 在 Ubuntu O 中,使用 sudo -s或者你在 gunicorn 中配置的相应用户作为 root 用户登录 还有 做 aws configure

请注意,如果未找到正在启动服务的用户的 awsconfig 文件,则可能发生此问题。

For me the issue was the service was starting the root user so it was not able to find the AWS config file. I fixed it by making the service start from non root user sot hat AWS config could be found.