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 },
});
環境:
- Mac OS ビッグサー
- ZSH 5.8
- AWS バージョン: aws-cli/2.2.40 Python/3.8.8 Darwin/20.6.0 exe/x86_64 プロンプト/オフ
- CDK バージョン 1.132.0