繁体   English   中英

需要为帐户 xxx 执行 AWS 调用,但尚未配置凭证

[英]Need to perform AWS calls for account xxx, but no credentials have been configured

我正在尝试使用cdk deploy my-stack 将我的堆栈部署到 aws。 在我的终端 window 中执行此操作时,它运行良好,但是当我在我的管道中执行此操作时,出现此错误: Need to perform AWS calls for account xxx, but no credentials have been configured 我已经运行aws configure并为我正在使用的 IAM 用户插入了正确的密钥。

因此,它仅在我在终端中手动执行时有效,但在管道执行时无效。 任何人都知道为什么我会收到此错误?

我在我的 Mac 上遇到了同样的错误消息。 我设置了 ~/.aws/config 和凭据文件。 我的凭证文件有一个在 IAM 中不存在的用户。 对我来说,解决方案是将 go 重新回到 AWS 控制台中的 IAM; 创建一个新的 dev-admin 用户并像这样添加 AdministratorAccess 权限.. 在此处输入图像描述 然后使用新的 [dev-admin] 用户更新我的 ~/.aws/credentials 文件,并添加上面显示的摘要页面上的“安全凭证”选项卡下可用的密钥。 凭据条目如下所示..

[dev-admin]
aws_access_key_id=<your access key here>
aws_secret_access_key=<your sevret access key here>

然后我回到我的项目根文件夹并运行

cdk deploy --profile dev-admin -v

不确定这是否是“正确”的方法,但它对我有用。

如果您使用的是“默认”以外的命名配置文件,您可能希望使用--profile标志传递配置文件的名称。

例如:

cdk deploy --all --profile mynamedprofile

如果您要部署堆栈或阶段,则可以明确指定要在其中部署资源的环境。这对于 cdk-pipelines 很重要,因为创建 Pipeline 构造的 AWS 账户可能与部署资源的位置不同。 例如(C#):

Env = new Amazon.CDK.Environment()
{
    Account = "123456789",
    Region = "us-east-1"
}

查看 文档

我对此也不陌生。 我在cdk bootstrap命令之前添加了sudo 删除 sudo 使其工作。

您还可以执行aws configure list列出所有配置文件,以检查是否以正确的方式创建和存储了凭据。

如果您遇到此错误,您可能需要引导相关帐户。 如果您有一个工具/操作帐户,您需要从“部署”帐户信任它。

这是一个包含开发、生产和工具的示例:

cdk bootstrap <tools-account-no>/<region> --profile=tools;
cdk bootstrap <dev-account-no>/<region> --profile=dev;
cdk bootstrap <prod-account-no>/<region> --profile=prod;

cdk bootstrap --trust <tools-account-no> --profile=dev --cloudformation-execution-policies 'arn:aws:iam::aws:policy/    AdministratorAccess';
cdk bootstrap --trust <tools-account-no> --profile=prod --cloudformation-execution-policies 'arn:aws:iam::aws:policy/   AdministratorAccess';
cdk bootstrap --trust <tools-account-no> --profile=tools --cloudformation-execution-policies 'arn:aws:iam::aws:policy/  AdministratorAccess';

请注意,您需要提交对 cdk.context.json 的更改

如果使用 CI 工具,请检查cdk <command> --verbose的 output 以获取有关未找到凭据的根本原因的提示。

在一种情况下,问题只是缺少 ~/.aws/credentials 文件(尽管如果在 EC2 上运行,则技术上不需要)-此答案中的更多详细信息。

我也有这个问题。 当我检查 ~/.aws/credentials 时,它有一些较旧的帐户详细信息。 所以我只是删除了那个文件。

==> aws configure

==> cdk bootstrap aws://XXXXXX/ap-south-1

有效。

与我合作的唯一方法是确保~/.aws/config~/.aws/credentials文件都没有默认配置文件部分。 因此,如果您从两个文件中删除默认配置文件,它应该可以正常工作:)

这是我的~/.aws/config ====> 的示例(注意:我根本不使用默认配置文件)

[profile myProfile]
sso_start_url = https://hostname/start#/
sso_region = REPLACE_ME_WITH_YOURS
sso_account_id = REPLACE_ME_WITH_YOURS
sso_role_name = REPLACE_ME_WITH_YOURS
region = REPLACE_ME_WITH_YOURS
output = yaml

这是~/.aws/credentials ====> (注意:我根本不使用默认配置文件)

[myProfile]
aws_access_key_id=REPLACE_ME_WITH_YOURS
aws_secret_access_key=REPLACE_ME_WITH_YOURS
aws_session_token=REPLACE_ME_WITH_YOURS
source_profile=myProfile

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM