AWS CDKでApp Runnerに実行時の環境変数を渡す

Pocket

AWS CDKでApp Runnerをデプロイするメモです。

Ref.

AWS CDKを使ってApp Runnerをデプロイ

2021年12月31日時点のCDKのバージョンは2.3.0(CDK 2系のApp Runnerはpreview)。
今回はCDK 1系を使用します(2021年01月09日時点の最新は1.138.0)。

ref. https://docs.aws.amazon.com/cdk/api/v1/docs/aws-apprunner-readme.html

cdk init app

$ cdk init app --language typescript
  • コマンドを空ではないディレクトリで実行するとエラーが発生する
  • 作成される雛形はディレクトリ名と結びついている
  • 作成される雛形はCDK 2.3.0のものなのでCDK 1系で動くように修正する

CDK 1系の関連パッケージをインストール

CDK 2系のApp RunnerはpreviewなのでCDK 1系を使用する。

$ npm i @aws-cdk/core
$ npm i @aws-cdk/aws-iam
$ npm i @aws-cdk/aws-ecr
$ npm i @aws-cdk/aws-apprunner

環境変数(ImageConfiguration.environment)

ImageConfiguration.environmentプロパティで渡す。

class Service (construct) > class Source > fromEcr(props)メソッドの引数prop:EcrProps > interface EcrProps > interface ImageConfiguration > environmentプロパティ

environment?🔹 { [string]: string } Environment variables that are available to your running App Runner service.

https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-apprunner.ImageConfiguration.html

      /*
       * EcrProps 
       * @see https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-apprunner.EcrProps.html
       */
      const ecrProps: apprunner.EcrProps = {
          repository: ecr.Repository.fromRepositoryArn(
              this,
              'cdk/httpd',
              'arn:aws:ecr:ap-northeast-1:{{アカウントID}}:repository/cdk/httpd'
          ),
          // @see https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-apprunner.ImageConfiguration.html
          imageConfiguration: {
            environment: {
              // 環境変数設定
              'FOO': 'foo'
            }
          },
          tag: 'latest',
      };

       /*
        * Service
        * @see https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-apprunner.Service.html
        */
       new apprunner.Service(this, 'Service', {
        source: apprunner.Source.fromEcr(ecrProps),
        accessRole: accessRole,
        serviceName: 'httpd server',
    });

以下記事で環境変数が正しくApp Runnerに渡っていることをhttpdで確認する方法が分かりやすく説明されている。

FargateのApacheコンテナの環境変数デバッグ方法

cdk deploy

  • ECRを更新後にcdk deployを実行しても更新イメージから起動されなかった(CDK側でなにか設定が必要?)
  • Webマネジメントコンソールでデプロイを実行後にcdk deployしたら更新イメージから起動された

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。