0

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
4

1 に答える 1