执行任何aws CLI命令时出现错误 “必须指定区域”

157

我正在尝试按照http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_GetStarted.html中的文档使用aws容器服务。

运行命令时,会抛出以下错误:

aws ecs list-container-instances --cluster default

You must specify a region. You can also configure your region by running "aws configure".
文档中没有提到如何指定默认区域。我们在控制台上该怎么做呢?

如果从.aws\credentials、.aws\config中加载,则请参阅以下链接-https://dev59.com/r14b5IYBdhLWcg3wbA-B#67497387 - Manohar Reddy Poreddy
7个回答

113

我认为你需要使用例如:

aws ecs list-container-instances --cluster default --region us-east-1

当然,这取决于您所在的地区。


100
"您必须指定一个区域"不是ECS特定的错误,它可能发生在任何AWS API/CLI/SDK命令中。 对于CLI,请将AWS_DEFAULT_REGION环境变量设置为: export AWS_DEFAULT_REGION=us-east-1 或将其添加到命令中(每次使用区域特定命令时都需要此参数): AWS_DEFAULT_REGION=us-east-1 aws ecs list-container-instances --cluster default 或在CLI配置文件:~/.aws/config 中设置。"
[default]
region=us-east-1
或者通过CLI调用传递/覆盖它: aws ecs list-container-instances --cluster default --region us-east-1

3
有关所有可用变量,请参见:AWS CLI 配置变量 - Wingjam
1
我遇到过类似的问题,我已经正确设置了AWS_REGION,但仍然出现了这个错误。添加 AWS_DEFAULT_REGION解决了这个问题。 - iaforek
在我的情况下,我使用 aws-azure-login 登录,随后当 aws <foo> <bar> 需要提供区域和配置文件时,例如 --region us-east-1 --profile my-login-profile。只是想提一下,以防其他人遇到相同的问题。 - Ben
如果您要通过例如Serverless本地运行调用Lambda,为什么需要区域? - Jim Aho

36

#1- 运行此命令来对区域进行一次性设置:

aws configure set region us-east-1 --profile admin
  • 如果不同,请将个人资料旁边的admin更改为正确的名称。

  • 如果您的区域不同,请将us-east-1更改为正确的地区。

#2- 再次运行您的命令:

aws ecs list-container-instances --cluster default

3
对我来说,这是唯一有效的方法,而不是运行 aws configure 或编辑 .aws/config - aeb0
1
这个 HTTPS 证书管理生态系统中的信息污染非常严重,涉及到服务器、授权机构、浏览器和客户端。这就像一个鲁伯·戈尔德堡式的机器,各方面的参与者都会向齿轮中投入错误信息,让你迷失方向。我花了好几天时间进行研究,才找到可靠的信息来了解这些东西是如何工作的,更别提简单可靠的 HTTPS 设置指南了。我想这就是计算机未来的样子,谷歌搜索已经不能再返回关于执行重要操作的可靠和真实的指令了。 - Eric Leschinski

13

如果您已经在.aws/config.aws/credentials中配置了所需的所有内容,但仍然出现此错误-请仔细检查方括号内的名称。

config文件中应为[profile myLovelyAccName],在credentials文件中应为[myLovelyAccName]

要注意两点:

  • config文件中,“profile”单词和后面的一个空格
  • 账户名称中没有任何拼写错误!

4
~/.aws/config 中缺失了 "profile" 前缀,这是我的问题所在。谢谢! - Milos Ivanovic

7

在Dimitrov先生和Jason的回答中补充一点,如果你正在使用特定的配置文件并且已经在该配置文件中设置了区域,则对于所有请求,您需要添加“--profile”选项。

例如:

假设您有AWS Playground配置文件,而~/.aws/config具有[profile playground]这样的内容,其中进一步有类似以下的内容:

[profile playground] region=us-east-1

然后,使用以下类似的命令:

aws ecs list-container-instances --cluster default --profile playground


3

它只适用于执行该操作的特定EC2实例吗? - Sandeepan Nath

0
注意:首先,您必须安装 AWS CLI。 第一步:打开您计算机上的终端或命令提示符。 第二步:运行以下命令来配置默认区域:
aws configure set default.region <your_region>
将<your_region>替换为适当的区域代码,例如: 对于美国东部(弗吉尼亚北部):us-east-1 对于欧洲(法兰克福):eu-central-1

enter image description here

第三步:通过运行以下命令验证新的默认区域。
aws configure list

enter image description here

这个命令将显示您的AWS CLI配置列表,包括新设置的默认区域。 通过按照这些步骤,您可以使用命令行界面在AWS CLI中配置默认区域。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,