1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

概要

MacのローカルにServerless FrameworkをいれてAWSのlambdaに反映してみる。

前提

今回のServerless FrameworkはNode.js 20.Xでlambda関数を作成する。

MacのローカルにはNode.jsが入っており、そのNode.jsはvoltaにより管理されている。
下記コマンドを実行して、command not foundにならないこと。またNode.jsのバージョンが20.Xになっていること。

npm -v
node -v
volta -v

MacのローカルにはAWS CLIがはいっており、下記コマンドを実行して、command not foundにならないこと。

aws -h

AWSのアカウントを保持しており、下記を実行した結果がそのアカウント情報と一致していること(アクセスキーとシークレットキーはAWSのマネジメントコンソールログイン後、IAMに移動し、当該ユーザーの詳細に移動し、「アクセスキー」の部分で確認する事ができる。シークレットキーはあとから確認できないため、わからなかったら「アクセスキー」を作り直してしまう方が早い。作り直すときは「AWSの外部のサービスから使用・・・」的なものを選んでアクセスキーを作成する)

aws configure

方法

  1. 下記を実行してServerless Frameworkのグローバルインストール

    npm install -g serverless
    
  2. 下記を実行してserverless.ymlファイルを作成して展開

    touch serverless.yml
    vi serverless.yml
    
  3. serverless.ymlを下記のように記載

    serverless.yml
    service: test-serverless
    
    provider:
      name: aws
      runtime: nodejs20.x
    
    functions:
      hello:
        handler: handler.hello
        events:
          - http:
              path: hello
              method: get
    
  4. 下記を実行してServerless Frameworkの新規プロジェクトを作成

    serverless
    
  5. 下記のようにでたら「Login/Register」を選択してEnterを押下(押下後、ブラウザが開く。)

    ? Serverless Framework V4 CLI is free for developers and organizations making less than $2 million annually, but requires an account or a license key.
    
    Please login/register or enter your license key: … 
    ❯ Login/Register
      Get A License
      Enter A License Key
      Explain Licensing Basics
    
  6. アカウントを持っていない場合作成、持っている場合ログイン(筆者は持ってなかったので作成)

    CleanShot 2024-07-15 at 12.29.21@2x.png

  7. 下記の様にきかれた「AWS / Node.js / HTTP API」を選択してEnterを押下

    ? Select A Template: … 
    ❯ AWS / Node.js / HTTP API
      AWS / Node.js / Express API
      AWS / Node.js / Express API with DynamoDB
      AWS / Node.js / Scheduled Task
      AWS / Node.js / Simple Function
      AWS / Python / HTTP API
      AWS / Python / Flask API
      AWS / Python / Flask API with DynamoDB
      AWS / Python / Scheduled Task
      AWS / Python / Simple Function
    
  8. 下記のように聞かれたら「test-serverless-project」と入力してEnterを押下

    ? Name Your Project: › test-project
    
  9. 下記のように聞かれたら「Create A New App」を選択してEnterを押下

    ? Create Or Select An Existing App: … 
    ❯ Create A New App
      Skip Adding An App
    
  10. 下記のように聞かれたら「test-serverless」と入力してEnterを押下

    ? Name Your New App: › 
    
  11. ディレクトリを作成し移動(ディレクトリ名は先に指定したプロジェクト名)

    cd test-project
    
  12. 下記を実行してnpmパッケージをインストール

    npm init -y
    npm install
    
  13. handler.jsを開き、内容を確認

  14. このタイミングで後述する記事の内容を参考にデプロイ対象リージョンの設定を行っておいてください。筆者は設定せず進めたのでバージニア北部にlambdaが作られました。 参考になる 記事はこちら → Serverless Framework 特に設定せずデプロイしたらバージニア北部のlambdaにデプロイされた
    誤って別リージョンにリソースを作ってしまった場合の削除方法はこちら → Serverless Framework デプロイで作成したリソース群を削除する

  15. 下記を実行してAWSのlambdaにデプロイを実施

    serverless deploy
    
  16. 下記のように出たらおそらくデプロイは完了している(設定ミスでバージニア北部のlambdaに追加されてしまった模様、、、)

    Deploying "test-project" to stage "dev" (us-east-1)
    
    ✔ Service deployed to stack test-project-dev (85s)
    
  17. バージニア北部のリージョンにデプロイされてしまう問題は別で解決するとして、AWSにログインしlambdaを確認

  18. たしかにlambdaが作成されている(コードの内容も先に確認したローカルのhandler.jsと一致している)

    CleanShot 2024-07-15 at 13.20.19@2x.png

  19. さらにAPI Gatewayなんかも自動で作成されている

    CleanShot 2024-07-15 at 13.21.11@2x.png

ここまでできたら一旦作業は完了

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?