LoginSignup
1
0

More than 1 year has passed since last update.

AWS CDKとAWS SDKの両方にprofileを設定する

Last updated at Posted at 2023-01-13

やりたいこと

AWS SDKAWS CDKprofile を指定して実行したい。

結論

cdkコマンドの前に、AWS_PROFILEprofile名を指定すれば、AWS SDKAWS CDKに、同様のprofileが入りました。

AWS_PROFILE=hogefuga cdk subcommand

cdkコマンドでprofile指定できるけど・・・sdkには渡らない

cdk subcommand --profile hoge

cdkコマンドのオプションで、--profile指定できますが、
上記コマンドでは、cdkprofileが渡り、sdkにはprofileが渡っておらず、sdkではdefaultprofileが使われることになります。
cdkのコード内で指定したはずのprofileを取得できる術が今の所なさそうです。

環境

typescript: 4.9.4
aws-cdk: 2.56.0
aws-cdk-lib: 2.56.0

参考

ちなみに

cdk内でsdkを実行するときには自分は下記のように、即時関数でラップしました。

bin/cdk.ts
#!/usr/bin/env node
import { App } from 'aws-cdk-lib';
import 'source-map-support/register';
import { SdkStack } from '../lib/sdk-stack';
import { getSnapshot } from '../sdk/get-snapshot';

const account = process.env.CDK_DEFAULT_ACCOUNT ?? '';
const region = process.env.CDK_DEFAULT_REGION ?? '';

const app = new App();

// cdk 実行前に、sdk で取得した値を
(async () => {

  const { snapshotId } = await getSnapshot(); // sdkで実装した関数

  app.node.setContext('snapshotId', snapshotId); // contextに渡すと、stack内で app.node.tryGetContext("snapshotId") で取得可能になる(このままだと型anyだけど)

  new SdkStack(app, "SdkStack", {
    env: { account, region },
  });

})();

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0