0
0

既存のSubnet情報を読み込んで利用する

VPCのSubnetを別手法で作成済みでIaCでは管理していないが
利用したい場合についてです。

data resourceを利用すればOKなのですが、
CDK for Terraformではどのように記述するのかを記載します。

サンプルコード

	// Subnet ID Get
	const subnets = new aws.dataAwsSubnets.DataAwsSubnets(scope, `subnets-${id}`, {
		filter: [
			{
				name: "tag:Name",
				values: [`sample-private-subnet`]
			}
		]
	})

sample-private-subnetという名称のSubnet情報をリスト型で 全て 取得します。

実際の指定方法

Lambdaでサブネットを指定する場合は以下のように記述します。

	// Lambda
	new Lambda(scope, `lambda-${id}`, {
		functionName: `sample-lambda`,
		description: "Lambda Function",
		handler: "index.lambda_handler",
		runtime: "python3.12",
		sourcePath: sourcePath,
		attachPolicies: true,
		architectures: ["arm64"],
		publish: true, // Versionを作成する
		policies: [
			"arn:aws:iam::aws:policy/AdministratorAccess" // iam:DetachRolePolicyアクションを実行権限が必要になるため、AdministratorAccessを付与
		],
		numberOfPolicies: 1,
		environmentVariables: {
		},
		createCurrentVersionAllowedTriggers: false,  // Latest Version に対してのみトリガーはエラーになるため無効
		triggerOnPackageTimestamp: false, // パッケージのタイムスタンプによるトリガーを無効化
		layers: [
			"arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11" // キャッシュあんど高速化のため追加
		],
		vpcSecurityGroupIds: [securityGroupWeb.id],
		vpcSubnetIds: subnets.ids
	});

簡単な解説

sample-private-subnet というNameタグが付与されている
Subnetを設定しています。

IaCで管理していないためsample-private-subnetのサブネットを
別で削除してしまったりした場合はエラーになりますので、
ご注意ください。

一つだけ取得したい場合はDataAwsSubnetを利用してください。

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