0
1

More than 1 year has passed since last update.

AWS CloudFormationにベタ書きするLambda nodejs18.x

Posted at

Node.js 18.xでコードを書いて、AWS Lambdaで稼働させたい。

AWS-SDKはランタイム搭載のAWS-SDK v3をそのまま使いたいし、コードはAWS CloudFormationのファイル内にベタ書きしてデプロイしたい(手抜き)。

CloudFormationが生成するもの

例えばCloudFormationのYAMLにベタ書きする。

# ...略...
Resources:
  LambdaFunc:
    Type: AWS::Lambda::Function
    Properties:
      Runtime: nodejs18.x
      Handler: index.handler
      Code:
        ZipFile: |
          // ベタ書きするぞおおお
          // おおおお
          // おおおお
# ...略...

すると、生成されるのはこれまで通りindex.jsである。

Node.jsコード側を合わせる

ということで、普段通りindex.mjsを期待してコードを書く(ES Modules)と動かない。

// 動かない
import { S3Client, GetObjectCommand } from '@aws-sdk/client-s3';
export const handler = async (event) => {
    ...;
};

奥ゆかしくindex.jsを期待してコードを書く(CommonJS)ことになる。

// 動く
const { S3Client, GetObjectCommand } = require('@aws-sdk/client-s3');
exports.handler = async (event) => {
    ...;
};

AWSマネージメントコンソールの挙動

AWSマネージメントコンソール上でLambda(nodejs18.x利用)を手動でポチポチ作成開始した場合はindex.mjsが用意されるため、「動く/動かない」の判断において混乱し易い。

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