GitHub Actionsで Lambdaにデプロイ失敗した原因を調査
GitHub Actionsで Lambdaにデプロイ失敗した原因を調査 GitHub ActionsでLambdaへデプロイ中に発生したエラーを調査し、適切なポリシーの追加と deploy.ymlへのコマンド追加で解消 […]
Filter by Category
GitHub Actionsで Lambdaにデプロイ失敗した原因を調査 GitHub ActionsでLambdaへデプロイ中に発生したエラーを調査し、適切なポリシーの追加と deploy.ymlへのコマンド追加で解消 […]
GitHub ActionsでAWS Lambdaに自動デプロイ DevOpsの実践において、CI / CD(継続的インテグレーション / 継続的デリバリー)は欠かせない要素となっています。特に、クラウドサービスを活用し […]
Pythonのコマンドラインで特定の関数のみを指定して実行する AWS Lambdaではプログラム実行時に関数を指定しますが、pythonコマンドは通常、ファイル単位で指定するのでそのままでは実行できません。そのためロー […]
CodePipelineでCodeBuildのテストを自動化 CodeCommitで管理しているリポジトリをCodeBuildでテストする場合は通常、手動でテストを実行させる必要がありますが、CodePipelineを使 […]
AWS CodeCommitでプルリクエスト・マージ ソースコードの管理にはGitHubやGitLabを採用している方が多いかもしれませんが、AWSにもCodeCommitというサービスがあり、5人までは無料で5人以上で […]
AWS LambdaとS3、SNSでファイルのアップロードを自動通知 AWS Lambdaは特定の条件を満たすときにサーバーレスでPython(他のプログラミング言語も)を実行できるサービスです。トリガーを検知したときや […]
Amazon Route 53で新規ドメインを登録 ウェブサイトやウェブサービスを運営する際にドメインは欠かせない要素です。この記事では、Amazon Route 53で新しいドメインを登録する方法について解説します。 […]
S3のライフサイクルルールの落とし穴 保存したデータが必要以上に増えないようにライフサイクルルールで指定した日数を経過したデータは削除する設定にしていましたが、後日改めてバケットを確認するとフォルダ、ファイルどちらも削除 […]
S3でストレージクラスを一括で変更 デフォルトではS3のストレージクラスは「標準」になっていますが、このストレージクラスは頻繁にアクセスするデータを保存するのに適した設定なので、バックアップファイルなどの頻繁にアクセスし […]
AWS Rekognitionとは AWS Rekognitionは、画像と動画から情報を抽出するディープラーニング技術を利用した分析サービスです。このサービスは、顔認識、物体検出、シーン分析など、さまざまな分析機能を提 […]
AWS Cloud9にPython3.9をインストール AWSのCloud9(Ubuntu)にはデフォルトでPython 3.6.9がインストールされています。 openaiに必要なpandasのインストール opena […]
AWSのCloud9を使ってPythonのプログラミング研修を開催 2022年11月から2023年2月までの期間で、群馬県庁職員を対象にしたDXを促進するためのPythonによるプログラミング研修を開催しました。現在、群 […]
AWSで追加したユーザのMFAに1Passwordを設定 AWSのコンソールにログインする際にMFA(Multi-Factor Authentication)という多要素認証を設定することで、メールアドレスとパスワードに […]
AWS Deep Learning AMIを用いたGPU環境構築の手順 今回はCUDAやcuDNN等の環境が予め構築されていて機械学習に適したインスタンスをかんたんに作成できるAWS Deep Learning AMIを […]
データベースのバックアップファイルをAWSのS3に保存するプログラムを手動で叩くと問題なくS3にファイルが保存されるのに、cronで定期的に実行したらエラーが出るようになったので調べた内容です。原因はPythonのパスが […]
GitHub ActionsでLambdaへデプロイ中に発生したエラーを調査し、適切なポリシーの追加と deploy.ymlへのコマンド追加で解消する方法を解説します。
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
で環境変数の更新処理も進み処理が競合(コンフリクト)してしまい下記エラーが発生しました。
エラー内容
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関数の設定を取得するための権限が無いため下記エラーが発生しました。
エラー内容
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 }}}"
群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。
メーリングリストに登録するとファントムの最新情報をお届けします
お客様のメールアドレスを共有することはありません