[英]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.