群馬県でPythonを使ったAIやシステムを開発しているファントム

Navigation
群馬県でPythonを使ったAIやシステムを開発しているファントム

群馬県でPythonを使ったAIやシステムを開発しているファントムです。企業の経営課題を最適なテクノロジーで解決します。テックブログではPythonを中心にプログラミングに役立つ情報を発信しています。

投稿を検索する


  • 株式会社ファントム コーポレートサイト

カテゴリー



  • AWS 16
  • Django 45
  • FastAPI 4
  • Flask 8
  • GCP 1
  • Information 37
  • Other 32
  • PHP 2
  • Python 93
  • Pythonista 3
  • Rust 1

タグ


Alembic API argparse Beautiful Soup black Channels charset CodeCommit datetime Django REST framework Docker enumerate f-string git GitHub glob Google Colaboratory i18n IAM Internship Jupyter Lambda Matplotlib Nginx OpenCV pandas PIL Pillow PostgreSQL PyCharm PyCon pyenv PyTorch Redis Rembg ReportLab requests S3 Sentry slack tqdm uWSGI venv Vue.js youtube
このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシーと利用規約が適用されます。

© 2022 Fantom, Inc.

Hydra WordPress Theme by EckoThemes.

Published with WordPress.

Related Articles

Filter by Category

  • Python(93)
  • Django(45)
  • Information(37)
  • Other(32)
  • AWS(16)
  • Flask(8)
  • FastAPI(4)
  • Pythonista(3)
  • PHP(2)
  • GCP(1)
  • Rust(1)

Filter by Author

  • EIGHT (14)
  • hayai017 (2)
  • press (196)
Back to Latest Articles
AWS

GitHub ActionsでAWS Lambdaに自動デプロイ

GitHub ActionsでAWS Lambdaに自動デプロイ DevOpsの実践において、CI / CD(継続的インテグレーション / 継続的デリバリー)は欠かせない要素となっています。特に、クラウドサービスを活用し […]

Posted on 4th 9月 2024 by press

AWS

Pythonのコマンドラインで特定の関数のみを指定して実行する

Pythonのコマンドラインで特定の関数のみを指定して実行する AWS Lambdaではプログラム実行時に関数を指定しますが、pythonコマンドは通常、ファイル単位で指定するのでそのままでは実行できません。そのためロー […]

Posted on 2nd 9月 2024 by press

Python

PythonとGhostscriptでPDFを軽量化

PythonとGhostscriptでPDFを軽量化 書類の添付などでブラウザからPDFをアップロードする際に数MB以下にしないとアップロードできないことがありますが、印刷用に作成したPDFや複数画像を一枚にまとめたPD […]

Posted on 9th 6月 2024 by press

FastAPI

Alembicでheadが複数存在する時に発生するエラーの修正

Alembicでheadが複数存在する時に発生するエラーの修正 FastAPI, PostgreSQL, Alembicで開発中のプロジェクトで、alembic upgrade headコマンドでマイグレーションを実行し […]

Posted on 26th 4月 2024 by press

Other

Jetson NanoのWiFiモジュール取り付け手順

Jetson NanoのWiFiモジュール取り付け手順 Jetson NanoはNVIDIA社が提供するGPUを搭載した小型かつ低電力で動作する開発用ボードです。GPUを搭載しているのでCUDAを使って画像処理などの並列 […]

Posted on 21st 4月 2024 by press

Information

2024年度 長期インターンシップについて

2024年度 長期インターンシップについて For English page 概要 2024年度 インターンシップの募集を開始します。 募集内容 ・インターンシップ 募集職種 ・機械学習エンジニア・ウェブアプリケーション […]

Posted on 19th 4月 2024 by press

Information

Announcement about Internships for 2024

Announcement about Internships for 2024 日本語のページ Overview Recruitment for the 2024 internship program is now op […]

Posted on 19th 4月 2024 by press

Other

2023年に最も読まれた記事ランキング

2023年に最も読まれた記事ランキング あけましておめでとうございます2024年もどうぞよろしくお願いします ファントムは2024年も皆様のお役に立てるよう精進しますより一層のご支援、お引立てを賜りますようお願い申し上げ […]

Posted on 4th 1月 2024 by press

AWS

CodePipelineでCodeBuildのテストを自動化

CodePipelineでCodeBuildのテストを自動化 CodeCommitで管理しているリポジトリをCodeBuildでテストする場合は通常、手動でテストを実行させる必要がありますが、CodePipelineを使 […]

Posted on 12th 12月 2023 by press

AWS

AWS CodeCommitでプルリクエスト・マージ

AWS CodeCommitでプルリクエスト・マージ ソースコードの管理にはGitHubやGitLabを採用している方が多いかもしれませんが、AWSにもCodeCommitというサービスがあり、5人までは無料で5人以上で […]

Posted on 12th 12月 2023 by press

FastAPI

FastAPI + SQLAlchemy + Alembic + SQLiteでマイグレーション

FastAPI + SQLAlchemy + Alembic + SQLiteでマイグレーション FastAPIにはデータベースのマイグレーション機能はありませんが、Alembicというデータベースのマイグレーションツー […]

Posted on 5th 12月 2023 by press

AWS

AWS LambdaとS3、SNSでファイルのアップロードを自動通知

AWS LambdaとS3、SNSでファイルのアップロードを自動通知 AWS Lambdaは特定の条件を満たすときにサーバーレスでPython(他のプログラミング言語も)を実行できるサービスです。トリガーを検知したときや […]

Posted on 21st 11月 2023 by press

Other

GitHubリポジトリを別のOrganizationに移行

GitHubリポジトリを別のOrganizationに移行 非公開用のOrganization(組織)で管理していたリポジトリの公開範囲をプライベートから公開に変更するにあたって、リポジトリを別のOrganization […]

Posted on 20th 11月 2023 by press

Python

PythonとMoviePyで動画ファイルの指定時間ごとの分割を自動化

PythonとMoviePyで動画ファイルの指定時間ごとの分割を自動化 OpenCVなどで動画の処理を行う際に、1分毎の変化や10分毎に結果を見たいときに一連の動画から指定した時間毎に分割して切り出したいことがあります。 […]

Posted on 20th 11月 2023 by press

Python

OpenCVで動画ファイルの最終フレームを取得

OpenCVで動画ファイルの最終フレームを取得 PythonとOpenCVを使用して動画ファイルの最大フレーム数を取得する方法を解説をします。処理の確認用に取得した最大フレーム数とファイル名をソートして表示させます。 コ […]

Posted on 6th 11月 2023 by press

AWS

Amazon Route 53で新規ドメインを登録

Amazon Route 53で新規ドメインを登録 ウェブサイトやウェブサービスを運営する際にドメインは欠かせない要素です。この記事では、Amazon Route 53で新しいドメインを登録する方法について解説します。 […]

Posted on 19th 10月 2023 by press

Other

GitHub CopilotをPyCharmで使用するまでの手順

GitHub CopilotをPyCharmで使用するまでの手順 GitHub Copilotは、プログラミングの効率を飛躍的に向上させるツールで、開発者にとって非常に便利なコーディングのサポートを提供します。本記事では […]

Posted on 17th 10月 2023 by press

Python

PyCharm 2023.2から追加されたBlackによるコード成形

PyCharm 2023.2から追加されたBlackによるコード成形 Pythonのコード成形で人気のBlackがPyCharm 2023.2から環境設定画面で設定可能になりました。従来はpipなどでインストールしていま […]

Posted on 13th 9月 2023 by press

AWS

S3のライフサイクルルールの落とし穴

S3のライフサイクルルールの落とし穴 保存したデータが必要以上に増えないようにライフサイクルルールで指定した日数を経過したデータは削除する設定にしていましたが、後日改めてバケットを確認するとフォルダ、ファイルどちらも削除 […]

Posted on 10th 9月 2023 by press

AWS

S3でストレージクラスを一括で変更

S3でストレージクラスを一括で変更 デフォルトではS3のストレージクラスは「標準」になっていますが、このストレージクラスは頻繁にアクセスするデータを保存するのに適した設定なので、バックアップファイルなどの頻繁にアクセスし […]

Posted on 10th 9月 2023 by press

View Latest Posts
AWS

GitHub ActionsでAWS Lambdaに自動デプロイ


press
GitHub ActionsでAWS Lambdaに自動デプロイ
Posted on 4th 9月 2024 by press
2024年度 インターンシップ 募集開始

GitHub ActionsでAWS Lambdaに自動デプロイ

DevOpsの実践において、CI / CD(継続的インテグレーション / 継続的デリバリー)は欠かせない要素となっています。特に、クラウドサービスを活用した開発では、効率的なデプロイメントプロセスの構築が重要です。

本番環境での運用を想定してmainブランチにマージ後、自動でAWS Lambdaへデプロイを実行するまでの流れを解説します。

構築の流れ

  • AWSの操作
    • Lambda関数作成
    • IDプロバイダ作成
    • ポリシー作成
    • ロール作成
  • GitHubの操作
    • Github Actionsへのシークレット情報登録
    • ワークフローの作成
  • 動作確認

ディレクトリ構造

.
├── .github
│   └── workflows
│       └── main.yml
└── lambda
    ├── lambda_function.py
    └── requirements.txt

デプロイ時は必要なファイルだけをまとめてzip化するため、Lambdaで使用するlambda_function.pyなどはlambda配下に作成しています。

AWSの操作

Lambda関数作成

デプロイを行うLambda関数を作成します。関数名とランタイムに使用する言語、バージョンは任意の情報を入力・選択します。

Lambda関数の作成
Lambda関数の作成

Lambda関数が作成されました。赤枠で囲っているARNは後ほどポリシー作成時に使用するのでコピーしておきます。

作成したLambda関数の確認
作成したLambda関数の確認

IDプロバイダ作成

IAM > IDプロバイダを選択してIDプロバイダの追加を行います。プロバイダの設定は下記の情報を入力して「プロバイダを追加」を押下します。

  • プロバイダのタイプ:OpenID Connect
  • プロバイダのURL:https://token.actions.githubusercontent.com
  • 対象者:sts.amazonaws.com
IDプロバイダ作成
IDプロバイダ作成

ポリシー作成

IAM > ポリシーを選択してポリシーの作成を行います。ポリシーエディタでJSONタブを選択して下記情報を入力します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:UpdateFunctionCode"
            ],
            "Resource": "arn:aws:lambda:us-west-2:ID:function:FUNCTIONNAME"
        }
    ]
}

※arn:awsから始まる赤枠には先ほどコピーしておいたLambda関数のARNを指定します。

ポリシー作成
ポリシー作成

ポリシー名を入力して「ポリシーの作成」を押下します。

ポリシー作成
ポリシー作成

ロール作成

IAM > ロールを選択し、「ロールを作成」をクリックします。ロールの設定は下記の情報を入力して「次へ」を押下します。

  • 信頼されたエンティティタイプ:ウェブアイデンティティ
  • アイデンティティプロバイダー:token.actions.githubusercontent.com
  • Audience:sts.amazonaws.com
  • GitHub組織:GitHubの組織名
  • GitHubリポジトリ:GitHubのリポジトリ名
ロール作成
ロール作成

先ほど作成したポリシーを選択して「次へ」を押下します。

ロール作成
ロール作成

「ロール名」と「信頼されたエンティティ」に下記の情報を入力して「次へ」を押下します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::ID:oidc-provider/token.actions.githubusercontent.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
                },
                "StringLike": {
                    "token.actions.githubusercontent.com:sub":"repo:ORGANIZATION/REPOSITORY:*"
                }
            }
        }
    ]
}
エンティティを編集
エンティティを編集

ここで作成したロールのARNはGitHubのシークレット情報に登録するためコピーしておきます。AWS側の設定は以上で完了です。

GitHubの操作

Github Actionsへのシークレット情報登録

Settings > Secrets and variables > Actionsを選択し、「New repository secret」を押下して、下記の情報を登録します。

  • AWS_REGION:Lambda関数を作成したリージョン(今回は:us-west-2)
  • AWS_ROLE_ARN:作成したIAMロールのARN
シークレット情報登録
シークレット情報登録

2つのシークレット情報の登録が完了しました。

シークレット情報登録
シークレット情報登録

ワークフローの作成

GitHubリポジトリの「Actions」を選択してデプロイのワークフローを作成します。

ワークフローの作成
ワークフローの作成

.github/workflows/main.ymlに下記情報を入力して「Commit changes」を押下し、mainブランチを更新します。

name: AWS Lambda Deploy 
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-region: ${{ secrets.AWS_REGION }}
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
          role-session-name: GitHubActions

      - name: get-caller-identity is allowed to run on role.
        run: aws sts get-caller-identity

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      - name: Install dependencies
        run: |
          cd lambda
          pip install -r requirements.txt -t .

      - name: Deploy to AWS Lambda
        run: |
          cd lambda && zip -r package.zip ./*
          aws lambda update-function-code \
          --function-name FUNCTIONNAME --zip-file fileb://package.zip --publish
ワークフローの作成
ワークフローの作成

GitHub側の設定は以上で完了です。mainブランチに直接コミットしたので、ここでデプロイのワークフローが実行されていると思います。

動作確認

mainブランチに直接プッシュまたは、lambda_function.pyを変更しプルリクエストを作成後、mainブランチにマージします。

GitHubリポジトリの「Actions」を選択してワークフローの状況を確認できます。ワークフローが正常に完了すると緑のチェックマークが表示されます。

ワークフローの確認
ワークフローの確認

ワークフロー完了後、Lambdaのバージョンを確認するとコードが更新され、新しいバージョンが追加されました。

デプロイの確認
デプロイの確認
ファントムYouTubeチャンネル

株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    press
    • GitHub
    • Lambda
    • Share Article:
    • Twitter
    • Facebook
    • Pinterest
    • LinkedIn
    • Reddit

    Related Articles

    Other

    GitHubリポジトリを別のOrganizationに移行

    GitHubリポジトリを別のOrganizationに移行 非公開用のOrganization(組織)で管理していたリポジトリの公開範囲をプライベートから公開に変更するにあたって、リポジトリを別のOrganization […]

    Posted on 20th 11月 2023 by press
    AWS

    AWS Cloud9にPython3.9をインストール

    AWS Cloud9にPython3.9をインストール AWSのCloud9(Ubuntu)にはデフォルトでPython 3.6.9がインストールされています。 openaiに必要なpandasのインストール opena […]

    Posted on 15th 2月 2023 by press