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?

More than 3 years have passed since last update.

aws-cdk v2でsam-beta-cdkを使ってみたメモ

Posted at

概要

cdk v2でsam-beta-cdkが動くか試してみる。

ソースコード

構成

- cdk
  - bin
    - cdk.ts
  - lib
    - cdk-stack.ts
  - cdk.json
- src
  - handler
    - api
      - hello.ts
スタック・Lambdaファイル抜粋
cdk-stack.ts
import { Stack, StackProps } from 'aws-cdk-lib';
import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import { Construct } from 'constructs';
import { LambdaIntegration, RestApi } from 'aws-cdk-lib/aws-apigateway';

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

    const helloLambda = new NodejsFunction(this, 'test', {
      runtime: lambda.Runtime.NODEJS_14_X,
      entry: `../src/handler/api/hello.ts`,
    });
    const api = new RestApi(this, 'ServerlessRestApi', { cloudWatchRole: false });
    api.root.addResource('hello').addMethod('GET', new LambdaIntegration(helloLambda));
  }
}
hello.ts
import { APIGatewayProxyHandler } from 'aws-lambda';

export const handler: APIGatewayProxyHandler = async (event) => {

  return {
    'statusCode': 200,
    'body': JSON.stringify({
      message: 'hello world',
    })
  };
};

インストール

直接windowsに入れることにした。
Getting started with AWS SAM and the AWS CDKからmsiのインストーラを使ってインストール。
gitbashを使ってコマンドを確認したかったので、インストール先のbinフォルダに以下のファイルを作成

sam-beta-cdk
#!/bin/bash
current_dir=$(cd $(dirname $0) && pwd)

$current_dir/../runtime/python.exe -m samcli "$@"

image.png

確認できた。

$sam-beta-cdk --version 
SAM CLI, version 1.29.0.dev202108311500
最初はDockerとかVagrantでやろうとしたがエラーになったので断念

直接windowsに入れるのは憚られた。
dockerにsam-beta-cdkを入れようとも思ったが、sam-beta-cdkがdockerを立ち上げるので断念(dockerからdockerは立ち上がらない)。
throw new Error(Failed to bundle asset ${this.node.path}, bundle output is located at ${bundleErrorDir}: ${err});
ソースコード

Vagrant上で行おうと思ったが、すでにwindows上でnode_modulesが作成されていたからか、以下のようなエラーが発生。
Error: The package "esbuild-linux-64" could not be found, and is needed by esbuild.

エラーの対応

cdkリポジトリで動作確認をしようとしたら以下のエラー。

KeyError:

issueが出ていたので、その通りに対応.
core:newStyleStackSynthesisはtrueにすると、CDK Pipelinesが動作するために必要な、新しい(1.46.0 以降の)ものに切り替えられるらしい(参考)。sam-beta-cdkが未対応のようなので、falseにする。

/cdk/cdk.json
{
  "app": "npx ts-node --prefer-ts-exts bin/cdk.ts",
  "context": {
    "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": true,
    "@aws-cdk/core:stackRelativeExports": true,
    "@aws-cdk/aws-rds:lowercaseDbIdentifier": true,
    "@aws-cdk/aws-lambda:recognizeVersionProps": true,
    "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": true,
+    "@aws-cdk/core:newStyleStackSynthesis": false
  }
}

動作確認

GET  http://127.0.0.1:3000/hello HTTP/1.1

参考

Docker で十全に gcloud や aws コマンドなどを使う方法
cdk getting started
sam-beta-cdkのlambdaのローカル実行をWindows10+Vagrant+VirtualBox+Ubuntuで試してみたメモ
issue

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?