0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS CDK v2で擬似パラメータを使用する方法 in TypeScript

Posted at

001samune.png

結論:class ScopedAwsを使用します

概要

AWS CloudFormationで記述する際、擬似パラメータは必ずと言って良いほど使用するかと思います。

  • 例. AWS::Region, AWS::AccountId

実はAWS CDKでも用意されています。
aws-cdk-lib(AWS CDKライブラリ)のScopedAwsクラスで定義されています。

AWS CloudFormationのAWS::NoValue以外は定義されています

class ScopedAwsの使い方

使い方はドキュメントに記載がある通りです。
aws-cdk-libをインポートし、ScopedAwsクラスのインスタンスを作成することで使用できます。

stack.ts
import * as cdk from "aws-cdk-lib";
/*
~
*/
const scopedAws = new cdk.ScopedAws(this);

実践

簡単ですが、IAMポリシーを作成してみます。

stackファイル

デプロイするstackファイルを以下のように記述しました。
resourcesで呼び出しています。

cdk-app-stack.ts
import * as cdk from "aws-cdk-lib";
import { Construct } from "constructs";
import * as iam from "aws-cdk-lib/aws-iam";

export class CdkAppStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // 擬似パラメータインスタンス作成
    const pseudo = new cdk.ScopedAws(this);

    // IAMポリシー作成
    new iam.ManagedPolicy(this, "policy", {
      managedPolicyName: "iam-policy",
      statements: [
        new iam.PolicyStatement({
          sid: "testPolicy",
          effect: iam.Effect.ALLOW,
          actions: ["ec2:StartInstances"],
          resources: [
            `arn:${pseudo.partition}:ec2:${pseudo.region}:${pseudo.accountId}:instance/*`,
          ],
        }),
      ],
    });
  }
}

CFnテンプレート確認

cdk synth --no-version-reporting --no-path-metadataで出力されるCFnテンプレートがこちら。
AWS CloudFormationで使用できる擬似パラメータに変換されていることが確認できます。

Resources:
  policyE16B4B70:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      Description: ""
      ManagedPolicyName: iam-policy
      Path: /
      PolicyDocument:
      PolicyDocument:
        Statement:
          - Action: ec2:StartInstances
            Effect: Allow
            Resource:
              Fn::Join:
                - ""
                - - "arn:"
                  - Ref: AWS::Partition
                  - ":ec2:"
                  - Ref: AWS::Region
                  - ":"
                  - Ref: AWS::AccountId
                  - :instance/*
            Sid: testPolicy
        Version: "2012-10-17"

デプロイして確認

cdk deployで作成されたIAMポリシーがこちら。問題なく擬似パラメータが変換されているのが確認できます。

画像1.png

まとめ

本記事では、擬似パラメータをAWS CDKで利用する方法についてまとめました。
本記事が誰かの役に立てば幸いです。

参考資料

リファレンス

ブログ

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?