群馬県で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で Lambdaにデプロイ失敗した原因を調査

GitHub Actionsで Lambdaにデプロイ失敗した原因を調査 GitHub ActionsでLambdaへデプロイ中に発生したエラーを調査し、適切なポリシーの追加と deploy.ymlへのコマンド追加で解消 […]

Posted on 5th 9月 2024 by press

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

View Latest Posts
AWS

GitHub Actionsで Lambdaにデプロイ失敗した原因を調査


press
GitHub Actionsで Lambdaにデプロイ失敗した原因を調査
Posted on 5th 9月 2024 by press
2024年度 インターンシップ 募集開始

GitHub Actionsで Lambdaにデプロイ失敗した原因を調査

GitHub ActionsでLambdaへデプロイ中に発生したエラーを調査し、適切なポリシーの追加と deploy.ymlへのコマンド追加で解消する方法を解説します。

エラー発生の経緯と対応

  1. –environmentでGitHub ActionsからLambdaに環境変数を読み込ませようとしてUpdateFunctionConfigurationエラー発生
    • 関数の更新権限(UpdateFunctionConfiguration)をポリシーに追加
  2. コードの更新中に環境変数の更新が競合してしまいResourceConflictExceptionエラー発生
    • 進行中の処理の完了を待って次の処理を実行するwaitコマンドをdeploy.ymlに追加
  3. waitコマンドで処理の完了を待って次の処理へ進もうとしてAccessDeniedExceptionエラー発生
    • 関数の取得権限(GetFunctionConfiguration)をポリシーに追加

UpdateFunctionConfiguration

aws lambda update-function-configurationを追加して環境変数を読み込ませようとしましたが、Lambda関数の設定を更新する権限が無いため下記エラーが発生しました。

エラー内容

An error occurred (AccessDeniedException) when calling the UpdateFunctionConfiguration operation: User: arn:aws:sts::AWSARN:assumed-role/LambdaDeploymentFromGitHubRole/GitHubActions is not authorized to perform: lambda:UpdateFunctionConfiguration on resource: arn:aws:lambda:***:AWSARN:function:LAMBDAFUNCTIONNAME because no identity-based policy allows the lambda:UpdateFunctionConfiguration action

UpdateFunctionConfigurationのポリシーを追加することでエラーは解消されましたが、update-function-codeでコードの更新中にupdate-function-configurationで環境変数の更新処理も進み処理が競合(コンフリクト)してしまい下記エラーが発生しました。

ResourceConflictException

エラー内容

An error occurred (ResourceConflictException) when calling the UpdateFunctionConfiguration operation: The operation cannot be performed at this time. An update is in progress for resource: arn:aws:lambda:***:AWSARN:function:LAMBDAFUNCTIONNAME

aws lambda wait function-updated --function-name LAMBDAFUNCTIONNAMEを追加してコードの更新が完了されるまで待機するようにしましたが、Lambda関数の設定を取得するための権限が無いため下記エラーが発生しました。

GetFunctionConfiguration

エラー内容

Waiter FunctionUpdated failed: An error occurred (AccessDeniedException): User: arn:aws:sts::AWSARN:assumed-role/LambdaDeploymentFromGitHubRole/GitHubActions is not authorized to perform: lambda:GetFunctionConfiguration on resource: arn:aws:lambda:***:AWSARN:function:LAMBDAFUNCTIONNAME because no identity-based policy allows the lambda:GetFunctionConfiguration action

GetFunctionConfigurationのポリシーを追加することでエラーが解消され、コードの更新、環境変数の更新が正常に処理されるようになりました。

最終的なコード

ポリシー(JSON)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunctionConfiguration",
                "lambda:UpdateFunctionCode",
                "lambda:UpdateFunctionConfiguration"
            ],
            "Resource": "arn:aws:lambda:ID:function:LAMBDAFUNCTIONNAME"
        }
    ]
}

deploy.yml

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 LAMBDAFUNTIONCNAME --zip-file fileb://package.zip --publish

          aws lambda wait function-updated --function-name LAMBDAFUNCTIONNAME

          aws lambda update-function-configuration \
          --function-name LAMBDAFUNCTIONNAME \
          --environment "Variables={API_KEY=${{ secrets.API_KEY }}}"
ファントムYouTubeチャンネル

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

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




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

    Related Articles

    AWS

    AWSのCloud9を使ってPythonのプログラミング研修を開催

    AWSのCloud9を使ってPythonのプログラミング研修を開催 2022年11月から2023年2月までの期間で、群馬県庁職員を対象にしたDXを促進するためのPythonによるプログラミング研修を開催しました。現在、群 […]

    Posted on 4th 2月 2023 by press
    Other

    コメント,タイプヒント, ドックストリングの追記とGitHubでのコンフリクト

    タイプヒント, コメント, ドックストリングの追記とGitHubでのコンフリクト コメントの記述方法と注意点 タイプヒントの記述方法と注意点 ドックストリングの記述方法と注意点 GitHubのコンフリクト発生時の対処法に […]

    Posted on 18th 4月 2023 by hayai017