AWS:找不到配置文件 (MyName)
AWS : The config profile (MyName) could not be found
每次我想用 AWS 配置某些东西时,我都会收到以下错误:
"The config profile (myname) could not be found"
喜欢:aws 配置
我正在使用 Python 3.4,我想使用 AWS CLI Keyring 来加密我的凭证。
你能检查你的 config
文件在 ~/.aws/config
下吗 - 你可能有一个名为 [myname] 的无效部分,类似于这样(这是一个例子)
[default]
region=us-west-2
output=json
[myname]
region=us-east-1
output=text
只需删除 [myname] 部分(包括此配置文件的所有内容),您就可以再次 运行 aws
cli
使用如下
[profilename]
region=us-east-1
output=text
示例命令
aws --profile myname CMD opts
你真的设置了你的特定用户吗? AWS 中的演练设置指南解释了如何设置默认用户,以及如何设置其他用户。如果您没有完成完整设置,您将只有一个默认块,您的 myName 将不会被创建..
我认为 http://docs.aws.amazon.com/lambda/latest/dg/setup-awscli.html 中的 AWS 文档中缺少某些内容,它没有提到您应该编辑文件 ~/.aws/config
以添加您的用户名配置文件。有两种方法可以做到这一点:
编辑~/.aws/config
或
aws configure --profile "your username"
遇到了类似的问题,发现下面 link 比此处提供的答案更有帮助。我想这是由于提供了答案后对 AWS CLI 进行了更新。
https://serverfault.com/questions/792937/the-config-profile-adminuser-could-not-be-found
基本上它有助于创建两个不同的文件(即一个用于一般配置相关信息,第二个用于凭证相关信息)。
我 运行 在我搬到一台新机器时遇到了这个问题,带着我的 AWS_DEFAULT_PROFILE 环境变量,但不是我的 ~/.aws 目录。在取消设置该变量或正确配置命名配置文件之前,我无法使任何 awscli 命令起作用。但即使是 aws configure
命令也被破坏了,让事情变得有点棘手。假设你手边有一个类 Unix shell:
- 要确定您的会话中可能有哪些特定于 AWS 的变量:
env | grep AWS_
- 如果您没有在此处看到
AWS_DEFAULT_PROFILE
或 AWS_PROFILE
,则此答案不适用于您。
- 暂时删除默认配置文件:
unset AWS_DEFAULT_PROFILE
and/or unset AWS_PROFILE
- 要配置有问题的配置文件:
aws --profile foo configure
- 重置默认配置文件变量:
exec $SHELL
- 测试您的新设置:
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/elastic beantalk 工具。
当我将 config
更改为此时,效果很好:
[myname]
aws_access_key_id = ....
aws_secret_access_key = ....
region=us-west-1
确保您处于正确的虚拟环境中。我更新了 PyCharm 并且出于某种原因不得不再次将我的项目指向我的 VE。打开终端,尝试更新 zappa 时我不在我的 VE 中(并收到此错误)。重启PyCharm,一切恢复正常
使用配置文件有点棘手。文档可在以下位置找到:
https://docs.aws.amazon.com/cli/latest/topic/config-vars.html
(但是你需要注意像AWS_PROFILE这样的环境变量)
通过 aws cli 使用配置文件需要一个配置文件(默认为 ~/.aws/config
或使用 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_ID
和 AWS_SECRET_ACCESS_KEY
环境变量,那么 AWS_ACCESS_KEY_ID
和 [=15= 提供的凭据] 将覆盖 AWS_PROFILE
.
提供的配置文件中的凭据
在我的例子中,我在具有旧值的环境变量上使用名为“AWS_PROFILE”的变量。
在我的例子中,我使用的是 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...
我需要做的:
docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli:latest command args...
以防万一有人试图在无头服务器上执行此操作(CI 运行在我的例子中,将 EKS 集群配置添加到 kubeconfig)。
我必须这样做的原因是 运行ner 与所讨论的 EKS 集群位于不同的 AWS 账户中(并且 aws eks 命令在同一账户中)。
我确实有一种方法可以验证正确的 AWS 帐户,该帐户使用有效的凭据填充 ~/.aws/credentials。
首先我进行身份验证以填充 ~/.aws/credentials
然后
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 应用程序时遇到了同样的问题。
这可能对遇到与我相同问题的人有所帮助
我的案例:使用 AWS 凭证生成 rds AUTH 令牌
在开发模式下,它工作正常并且能够从 .aws 文件夹
中获取 AWS Config
当我尝试通过 Nginx-Gunicorn 运行 它失败了,尽管我已经授予了相应文件夹和服务的所有 root 权限。
我已经将AccessKey和SecretKey保存在环境变量中
并使用这些凭据创建身份验证令牌
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 Os 中,使用 sudo -s
或您在 gunicorn 中配置的相应用户以 root 用户身份登录
和
执行 aws configure
请注意,如果找不到正在启动服务的用户的 aws 配置文件,则可能会发生此问题。
对我来说,问题是服务正在启动 root 用户,因此它无法找到 AWS 配置文件。我通过使服务从非 root 用户启动来修复它,因为可以找到 AWS 配置。
每次我想用 AWS 配置某些东西时,我都会收到以下错误:
"The config profile (myname) could not be found"
喜欢:aws 配置
我正在使用 Python 3.4,我想使用 AWS CLI Keyring 来加密我的凭证。
你能检查你的 config
文件在 ~/.aws/config
下吗 - 你可能有一个名为 [myname] 的无效部分,类似于这样(这是一个例子)
[default]
region=us-west-2
output=json
[myname]
region=us-east-1
output=text
只需删除 [myname] 部分(包括此配置文件的所有内容),您就可以再次 运行 aws
cli
使用如下
[profilename]
region=us-east-1
output=text
示例命令
aws --profile myname CMD opts
你真的设置了你的特定用户吗? AWS 中的演练设置指南解释了如何设置默认用户,以及如何设置其他用户。如果您没有完成完整设置,您将只有一个默认块,您的 myName 将不会被创建..
我认为 http://docs.aws.amazon.com/lambda/latest/dg/setup-awscli.html 中的 AWS 文档中缺少某些内容,它没有提到您应该编辑文件 ~/.aws/config
以添加您的用户名配置文件。有两种方法可以做到这一点:
编辑
~/.aws/config
或aws configure --profile "your username"
遇到了类似的问题,发现下面 link 比此处提供的答案更有帮助。我想这是由于提供了答案后对 AWS CLI 进行了更新。
https://serverfault.com/questions/792937/the-config-profile-adminuser-could-not-be-found
基本上它有助于创建两个不同的文件(即一个用于一般配置相关信息,第二个用于凭证相关信息)。
我 运行 在我搬到一台新机器时遇到了这个问题,带着我的 AWS_DEFAULT_PROFILE 环境变量,但不是我的 ~/.aws 目录。在取消设置该变量或正确配置命名配置文件之前,我无法使任何 awscli 命令起作用。但即使是 aws configure
命令也被破坏了,让事情变得有点棘手。假设你手边有一个类 Unix shell:
- 要确定您的会话中可能有哪些特定于 AWS 的变量:
env | grep AWS_
- 如果您没有在此处看到
AWS_DEFAULT_PROFILE
或AWS_PROFILE
,则此答案不适用于您。
- 如果您没有在此处看到
- 暂时删除默认配置文件:
unset AWS_DEFAULT_PROFILE
and/orunset AWS_PROFILE
- 要配置有问题的配置文件:
aws --profile foo configure
- 重置默认配置文件变量:
exec $SHELL
- 测试您的新设置:
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/elastic beantalk 工具。
当我将 config
更改为此时,效果很好:
[myname]
aws_access_key_id = ....
aws_secret_access_key = ....
region=us-west-1
确保您处于正确的虚拟环境中。我更新了 PyCharm 并且出于某种原因不得不再次将我的项目指向我的 VE。打开终端,尝试更新 zappa 时我不在我的 VE 中(并收到此错误)。重启PyCharm,一切恢复正常
使用配置文件有点棘手。文档可在以下位置找到: https://docs.aws.amazon.com/cli/latest/topic/config-vars.html (但是你需要注意像AWS_PROFILE这样的环境变量)
通过 aws cli 使用配置文件需要一个配置文件(默认为 ~/.aws/config
或使用 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_ID
和 AWS_SECRET_ACCESS_KEY
环境变量,那么 AWS_ACCESS_KEY_ID
和 [=15= 提供的凭据] 将覆盖 AWS_PROFILE
.
在我的例子中,我在具有旧值的环境变量上使用名为“AWS_PROFILE”的变量。
在我的例子中,我使用的是 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...
我需要做的:
docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli:latest command args...
以防万一有人试图在无头服务器上执行此操作(CI 运行在我的例子中,将 EKS 集群配置添加到 kubeconfig)。
我必须这样做的原因是 运行ner 与所讨论的 EKS 集群位于不同的 AWS 账户中(并且 aws eks 命令在同一账户中)。
我确实有一种方法可以验证正确的 AWS 帐户,该帐户使用有效的凭据填充 ~/.aws/credentials。
首先我进行身份验证以填充 ~/.aws/credentials 然后
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 应用程序时遇到了同样的问题。
这可能对遇到与我相同问题的人有所帮助
我的案例:使用 AWS 凭证生成 rds AUTH 令牌
在开发模式下,它工作正常并且能够从 .aws 文件夹
中获取 AWS Config当我尝试通过 Nginx-Gunicorn 运行 它失败了,尽管我已经授予了相应文件夹和服务的所有 root 权限。
我已经将AccessKey和SecretKey保存在环境变量中 并使用这些凭据创建身份验证令牌
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 Os 中,使用 sudo -s
或您在 gunicorn 中配置的相应用户以 root 用户身份登录
和
执行 aws configure
请注意,如果找不到正在启动服务的用户的 aws 配置文件,则可能会发生此问题。
对我来说,问题是服务正在启动 root 用户,因此它无法找到 AWS 配置文件。我通过使服务从非 root 用户启动来修复它,因为可以找到 AWS 配置。