我正在尝试运行CDK命令来检查本地和远程堆栈的差异。
我正在使用以下命令。
cdk diff --profile saml
我收到了以下错误信息
Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment
我正在寻找解决这个问题的方法。
我正在尝试运行CDK命令来检查本地和远程堆栈的差异。
我正在使用以下命令。
cdk diff --profile saml
我收到了以下错误信息
Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment
我正在寻找解决这个问题的方法。
~/.aws/config
中删除 [profile default]
对我解决了问题。在我的情况下,问题与提出的解决方案无关。
如果你在cdk命令中添加-v
(详细)参数,你将会看到实际的错误信息:
无法确定默认的AWS账户:TypeError [ERR_INVALID_PROTOCOL]:不支持协议“https:”,应该是“http:”
我尝试了CDK的不同版本,但都无济于事,依旧出现相同的错误。经过多次尝试后,我找到了根本原因:node.js版本。使用v15.2.1时,我遇到了那个错误,但是将其降级至v14.15.1后,问题得以解决。
最后我在 C:\XXXX.aws\credentials 中使用以下内容:
[default]
aws_access_key_id=XXXXXXXXXXXXXX
aws_secret_access_key=XXXXXXXXXXXX
并且输入命令: > cdk deploy --profile default
然而,这个方法没有起作用。
[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
同时输入以下命令:> cdk deploy --profile project1
错误:必须通过配置CDK堆栈或通过环境来配置AWS区域
.aws
文件夹中创建/添加一个名为credentials
(无文件扩展名)的空文件。CDK产生的错误是因为它无法解析有效的AWS CLI凭证,这些凭证允许它通过类似于以下调用来解析账户:
aws sts get-caller-identity --profile profile_name
有多种方法可以配置AWS CLI以使用有效凭据,以便CDK可以与CLI配置交互以获取凭据
[default]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
在~/.aws/config文件中
[profile developer]
credential_process = /opt/bin/awscreds-custom --username helen
使用更安全的工具,例如https://github.com/99designs/aws-vault
使用AWS CLI与AWS SSO集成。此设置允许在多个帐户之间进行SSO,并支持多种MFA策略,包括生物识别。但问题在于,CDK的当前版本尚未更新为使用最新版本的Node AWS SDK,因此它不知道如何检索凭据。希望CDK的未来版本能够解决这个问题,但已经过去了近2年。
在 ~/.aws/config 中
[profile sso_profile]
sso_start_url = https://sso_url.awsapps.com/start
sso_region = us-east-2
sso_account_id =
sso_role_name = AWSAdministratorAccess
region = us-east-2
output=json
幸运的是,有一个不错的解决方法,一旦配置好就可以无缝使用。这涉及到利用一个python库,将SSO档案作为凭证过程暴露出来,该过程受当前CDK支持。 安装https://pypi.org/project/aws2-wrap/
pip3 install aws2-wrap==1.2.7
[profile wrapped_sso_profile]
region = us-east-2
credential_process = aws2-wrap --process --profile sso_profile
export AWS_PROFILE=<my-profile-name>
,然后手动执行aws sso login
。之后,cdk deploy
对我来说可以正常工作。 - Elias Strehlesource .venv/bin/active
,请执行以下操作设置会话:aws sso login --profile profile_name
然后执行:
cdk deploy --profile profile_name
new MyDevStack(app, 'dev', {
env: {
account: process.env.CDK_DEFAULT_ACCOUNT,
region: process.env.CDK_DEFAULT_REGION
}});
https://docs.aws.amazon.com/cdk/latest/guide/environments.html
account: process.env.CDK_DEPLOY_ACCOUNT || process.env.CDK_DEFAULT_ACCOUNT,
。 - Davossudo让我头疼...
我在运行cdk deploy时一直遇到同样的错误。我一直在重复运行:
$ sudo cdk deploy --profile default
并且得到了相同的错误。最终我使用了-v选项,阅读了每一行代码,并意识到它没有使用我的.aws/credentials
文件,而是在寻找/root/.aws/credentials
。
去掉sudo后,一切都正常了。
$ cdk deploy --profile default
我刚刚创建了一个新的配置文件。
aws configure --profile profile2
aws_access_key_id=XXXXXXXXXXXXXX
aws_secret_access_key=XXXXXXXXXXXX
region = us-west-2
output=text
cdk deploy --profile profile2
我尝试了各种方法,最终这个方法帮助了我。只是一个快速的提示,直到最后一个输出之前,我从未添加过输出。也许完全填写的配置文件也有所帮助。
参考:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html
'cdk' is not recognized as an internal or external command, operable program or batch file.
- john k
aws configure sso
命令。每次执行该命令都会添加一个新条目。 - Kellen Stuart