![](/img/trans.png)
[英]Error response from daemon: No such image: localstack/localstack:0.14.0
[英]Running CDK bootstrap against LocalStack fails with credentials error
我在 docker 中運行 LocalStack 並嘗試將 CDK 資源部署到其中。
LocalStack 似乎運行正常:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cbda0d0c6c5 localstack/localstack:latest "docker-entrypoint.sh" 2 days ago Up 2 days 127.0.0.1:53->53/tcp, 127.0.0.1:443->443/tcp, 127.0.0.1:4510-4530->4510-4530/tcp, 127.0.0.1:4566->4566/tcp, 127.0.0.1:4571->4571/tcp, 127.0.0.1:53->53/udp, 5678/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp localstack_main
我可以使用 awslocal 成功地將資源部署到它:
infra> awslocal s3api create-bucket --bucket my-bucket
Location: /my-bucket
infra> awslocal s3api list-buckets
Buckets:
- CreationDate: '2021-11-15T10:28:03+00:00'
Name: my-bucket
Owner:
DisplayName: webfile
ID: bcaf1ffd86f41161ca5fb16fd081034f
憑據存儲在命名配置文件中:
infra> echo $AWS_PROFILE
LS
infra> cat ~/.aws/config
[default]
region=eu-west-2
output=yaml
[profile LS]
region=eu-west-2
output=yaml
infra> cat ~/.aws/credentials
[default]
aws_access_key_id=test
aws_secret_access_key=test
[LS]
aws_access_key_id=test
aws_secret_access_key=test
但是,我面臨的問題是當我嘗試將 CDK 介紹給它時。 我的堆棧沒有使用環境。 我想讓它與環境無關。
const app = new cdk.App();
new InfrastructureStack(app, 'my-stack', {});
當我運行cdklocal bootstrap
或cdklocal bootstrap --profile LS
它返回以下錯誤:
Unable to resolve AWS account to use. It must be either configured when you define your CDK Stack, or through the environment
從文檔中,我期待一個與環境無關的堆棧將引導程序資源部署到默認帳戶和區域中。
我也嘗試過明確使用帳戶 000000000000,因為我看到有人使用cdklocal bootstrap --profile LS aws://000000000000/eu-west-2
導致此不同的錯誤:
⏳ Bootstrapping environment aws://000000000000/eu-west-2...
❌ Environment aws://000000000000/eu-west-2 failed bootstrapping: Error: Need to perform AWS calls for account 000000000000, but no credentials have been configured
at SdkProvider.forEnvironment (/Users/willem/.nvm/versions/node/v14.16.1/lib/node_modules/aws-cdk/lib/api/aws-auth/sdk-provider.ts:149:46)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at Function.lookup (/Users/willem/.nvm/versions/node/v14.16.1/lib/node_modules/aws-cdk/lib/api/bootstrap/deploy-bootstrap.ts:30:17)
at Bootstrapper.legacyBootstrap (/Users/willem/.nvm/versions/node/v14.16.1/lib/node_modules/aws-cdk/lib/api/bootstrap/bootstrap-environment.ts:60:21)
at /Users/willem/.nvm/versions/node/v14.16.1/lib/node_modules/aws-cdk/lib/cdk-toolkit.ts:463:24
at async Promise.all (index 0)
at CdkToolkit.bootstrap (/Users/willem/.nvm/versions/node/v14.16.1/lib/node_modules/aws-cdk/lib/cdk-toolkit.ts:460:5)
at initCommandLine (/Users/willem/.nvm/versions/node/v14.16.1/lib/node_modules/aws-cdk/bin/cdk.ts:267:9)
Need to perform AWS calls for account 000000000000, but no credentials have been configured
編輯:值得注意的是,如果我完全繞過引導並只運行cdlocal deploy
|,也會出現同樣的問題。 cdklocal deploy --profile LS
。 我還在 CDK 源代碼中指定了這樣的環境:
const {
CDK_DEFAULT_ACCOUNT = '0000000000',
CDK_DEFAULT_REGION = 'eu-west-2',
} = process.env;
new InfrastructureStack(app, 'my-stack', {
env: { account: CDK_DEFAULT_ACCOUNT, region: CDK_DEFAULT_REGION },
});
語境:
我剛剛花了幾個小時調試同樣的問題。 當我運行 cdk bootstrap --profile XXX -v(-v 標志顯示更多日志信息)時,我看到一個錯誤,它試圖從位於 .cdk/chache/account_partitions.json 的緩存文件中獲取默認 AWS 帳戶
該文件包含以下格式的其他配置文件列表:
"AccessKey": {
"accountId": "awsAccountNumber",
"partition": "aws"
}
當我在那里添加我的個人資料信息時,引導操作完成。
這個緩存文件是什么時候更新的,怎么更新的我還沒有搞清楚,不過至少解決了第一個問題。
我知道這是一個舊帖子,但它可能會對其他人有所幫助......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.